Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INCLUDE 'derivative.inc'
- ; export symbols
- XDEF _Startup
- ABSENTRY _Startup
- ; variable/data section
- ORG RAMStart ; Insert your data definition here
- ModoLEDS: DS.B 1 ; 1 byte
- TablaData: DC.B %00111111, %00000110, %01001111, %01100110, %01101101, %01111101, %00000111, %01111111, %01101111, %01110111, %01111100, %00111001, %01011110, %01111001, %01110001
- ; 1 2 3 4 5 6 7 8 9 A b C d E F
- ORG ROMStart
- INCLUDE 'MCUinit.inc'
- _Startup:
- LDHX #RAMEnd+1 ; Initialize the stack pointer
- TXS
- CLI ; Enable interrupts
- ;JSR MCU_init
- MOV #$FF, PTEDD ; Puerto E donde esta el 7-seg como salida
- MOV #$00, PTED ; Puerto E todo a 0
- BCLR 5, PTFDD ; Pongo a PTF5 como entrada (S18)
- LDA #$00
- STA ModoLEDS
- MOV #$FF, PTED
- mainLoop:
- BRCLR 5, PTFD, pulsadorPresionado ; Saltamos a pulsadorPresionado cuando sea 0 el pin PTF5
- BRA mainLoop
- pulsadorPresionado:
- LDA #5
- CMP ModoLEDS
- BLE clearModo ; Saltamos a clearModo si el acumulador es menor a ModoLEDS. Si el acumulador es menor
- ; o igual a modo ModoLEDS, es decir, que ModoLEDS es mayor o igual a 5, reiniciamos
- ; ModoLEDS
- testModo:
- LDA ModoLEDS ; Cargo en A el modo
- INCA ; Lo incremento, porque es el siguiente modo
- CMP #1 ; Compara A con la memoria
- BEQ callModo1 ; Saltamos si el acumulador es igual a 1 (testeando bit Z)
- BRA continue1
- callModo1: JSR modo1
- continue1:
- CMP #2
- BEQ callModo2
- BRA continue2
- callModo2: JSR modo2
- continue2:
- BSR delay
- BRA mainLoop
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; Modos ;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; Modo 1 -> Cuenta de 0 a 9 y luego A,B,C,D,E,F hasta que se presione el pulsador
- modo1:
- PSHA
- PSHX
- CLRX
- LDA #16
- modo1Cmp: CMP ,X
- BGE modo1Go ; Si el acumulador es mayor o igual que X, seguimos, es decir que X no llego a 16
- BRA modo1Exit ; Sino salimos
- modo1Go: LDA TablaData,x ; Cargo la posicion indicada por X de la tabla
- STA PTED ; Valor de la tabla al puerto
- AIX #1
- BRA modo1Cmp
- modo1Exit: PULX
- PULA
- RTS
- ; Modo 2
- modo2:
- RTS
- clearModo:
- LDA #$00
- STA ModoLEDS
- BRA testModo
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;; Delay ;;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- delay:
- PSHX
- PSHH
- PSHA
- LDA #10
- reload: LDHX #$0000
- loop_d: AIX #1
- CPHX #$FFFF
- BNE loop_d ; Si HX no es igual a FFFF saltamos a loop_d
- DBNZA reload ; Llegamos aca porque HX es FFFF, decrementamos el acumulador
- ; y verificamos, si es 0 salimos, si no lo es volvemos a cargar
- ; el registro HX y hacemos otro bucle tantas veces como el acumulador
- ; tenga cargado
- PULA
- PULH
- PULX
- RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement