?? tbm_isr.asm
字號:
*TBM_ISR.asm
**********************************************************************
* This file contains the timebase module interrupt service routine. *
* The TBM is disabled (and its counter reset) during critical *
* operations, but other than that it generates periodic interrupts *
* every 32768 clock cycles (6.67 ms). *
* PTA[0] = RX *
* PTB[0] = LF *
* PTB[1] = LR *
* PTB[2] = RR *
* PTB[3] = RF *
**********************************************************************
TBM_ISR: PSHH ;HR modified by SCI_rec, need to save.
Check_LF: LDA LFCNTH
CMP #$FF ;Check if LF tire is overdue (7.5 minutes)
BNE Inc_LF ;If not, increment the counter.
Toggle_LF: LDA LFCNTL ;This makes the LED toggle
INCA ;every 1/4 second if the tire is overdue
STA LFCNTL ;for a transmission.
CMP #!18
BNE Check_LR
CLR LFCNTL
LDA PTB ;Toggle the LF tire LED.
EOR #%00000001
STA PTB
BRA Check_LR
Inc_LF: INC LFCNTL ;Increment the LF tire counter (2 bytes).
BNE Check_LR
LDA LFCNTH
INCA
STA LFCNTH
Check_LR: LDA LRCNTH
CMP #$FF ;Check if LR tire is overdue.
BNE Inc_LR
Toggle_LR: LDA LRCNTL ;This makes the LED toggle
INCA ;every 1/4 second.
STA LRCNTL
CMP #!18
BNE Check_RR
CLR LRCNTL
LDA PTB ;Toggle the LR tire LED.
EOR #%00000010
STA PTB
BRA Check_RR
Inc_LR: INC LRCNTL ;Increment the LR tire counter.
BNE Check_RR
LDA LRCNTH
INCA
STA LRCNTH
Check_RR: LDA RRCNTH
CMP #$FF ;Check if RR tire is overdue.
BNE Inc_RR
Toggle_RR: LDA RRCNTL ;This makes the LED toggle
INCA ;every 1/4 second.
STA RRCNTL
CMP #!18
BNE Check_RF
CLR RRCNTL
LDA PTB ;Toggle the RR tire LED.
EOR #%00000100
STA PTB
BRA Check_RF
Inc_RR: INC RRCNTL ;Increment the RR tire counter.
BNE Check_RF
LDA RRCNTH
INCA
STA RRCNTH
Check_RF: LDA RFCNTH
CMP #$FF ;Check if RF tire is overdue.
BNE Inc_RF
Toggle_RF: LDA RFCNTL ;This makes the LED toggle
INCA ;every 1/4 second.
STA RFCNTL
CMP #!18
BNE Check_SCI
CLR RFCNTL
LDA PTB ;Toggle the RF tire LED.
EOR #%00001000
STA PTB
BRA Check_SCI
Inc_RF: INC RFCNTL ;Increment the RF tire counter.
BNE Check_SCI
LDA RFCNTH
INCA
STA RFCNTH
Check_SCI: JSR SCI_Rec ;Look to see if new threshold value received.
JSR ModeSwitch ;See if the user wants to switch btwn
;driving mode & parking mode.
BSET 3,TBCR ;Acknowledge interrupt.
PULH
RTI
**********************************************************************
* ModeSwitch *
* Looks at the user switch, which is used to change between driving *
* mode and parking mode. Driving mode is FSK at 9600bps, and parking*
* mode is ASK at 1200bps. *
* The switch is connected to the /IRQ pin, however interrupts are *
* not used. See below. *
* A keyboard debounce routine is also used. *
**********************************************************************
ModeSwitch: BIH IRQ_High ;Look at the user switch.
LDA SWITCH ;SWITCH is the debounce register.
BEQ KB_End ;If SWITCH=$00, user wants ASK.
DECA ;IRQ low, but SWITCH !=$00 -> debounce needed.
STA SWITCH
BRA ModeSwitch ;Continue debounce.
IRQ_High: LDA SWITCH ;SWITCH is the debounce register.
CMP #$FF ;If SWITCH = $FF, user wants FSK.
BEQ KB_End ;
INCA ;IRQ high, but SWITCH !=$FF -> debounce needed.
STA SWITCH
BRA ModeSwitch ;Continue debounce.
KB_End: LDA SWITCH
CMP LAST_SWITCH
BEQ Switch_Done
CLR LFCNTH
CLR LFCNTL
CLR LRCNTH
CLR LRCNTL
CLR RRCNTH
CLR RRCNTL
CLR RFCNTH
CLR RFCNTL
TSTA ;Set the CCR by the value in SWITCH.
BEQ Config_Park ;If SWITCH=$00, configure parking mode.
;Otherwise, configure driving mode.
Config_Drive: MOV #%01110111,Write_SPI ;434MHz, FSK, SOE=Yes, SR=7, DME=Yes, HE=Yes.
MOV #%10111000,Write_SPI+1 ;ID Byte=$B8
MOV #%11001000,Write_SPI+2 ;9600bps, MG=0, MS=0, PG=1.
JSR RomeoConfig
JSR MCU_Slave
JSR BlinkLEDs ;Indicate to user that config went okay.
MOV SWITCH,LAST_SWITCH
BRA Switch_Done
Config_Park: MOV #%01010111,WRITE_SPI ;434MHz, ASK, SOE=Y, SR=7, DME=Y, HE=Y.
MOV #%10111000,WRITE_SPI+1 ;ID Byte=$B8.
MOV #%10001000,WRITE_SPI+2 ;4000bps, MG=0, MS=0, PG=1.
JSR RomeoConfig
JSR MCU_Slave
JSR BlinkLEDs ;Indicate to user that config went okay.
MOV SWITCH,LAST_SWITCH
Switch_Done: RTS
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -