📄 interrupt.asm
字号:
;************************************************
;Name :InterruptSub
;Function:
;Input :
;Output :
;Register Used:
;*************************************************
InterruptSub:
XCH A,AccBuf
XCH A,PFLAG
B0MOV PflagBuf,A
; b0bts0 FTC0IRQ ;//Analyse the Interrupt resourc
; jmp TC0INTR
b0bts0 FTC1IRQ
jmp TC1INTR
b0bts0 FADCIRQ
jmp FADCINTR
InterrupEnd:
XCH A,PflagBuf
B0MOV PFLAG,A
XCH A,AccBuf ;//For release the Acc And Pflag
RETI
;****************************************************************
TC1INTR:
b0bclr FTC1IRQ
incms time8ms
cjb_ time8ms,#125,TC1INTR_10
b0bset second_f
b0bset second1_f
clr time8ms
incms second
cjb_ second,#60,TC1INTR_10
clr second
b0bset minute_f
;-----------------------------------------判断是否显示、闪烁电池状态
TC1INTR_10:
incms timekey_8ms1
jb1 EnableCharge_f,TC1INTR_15
cjb_ timekey_8ms1,#125,TC1INTR_20 ;每1s显示一次
b0bset DisBattery_f
jmp TC1INTR_18
TC1INTR_15:
cjb_ timekey_8ms1,#31,TC1INTR_20 ;每500ms闪烁一次
notbit DisFlashBat_f
jb0 DisFlashBat_f,TC1INTR_19
TC1INTR_18:
b0bset BatteryChange_f
TC1INTR_19:
clr timekey_8ms1
;-----------------------------------------对按键的按下时间进行分析
TC1INTR_20:
b0bts1 keytiming_f
jmp TC1INTR_30
incms timekey_8ms
cjb_ timekey_8ms,#62,TC1INTR_30
clr timekey_8ms
incms timekey_500ms
nop
;-----------------------------------------对菜单无操作定时
TC1INTR_30:
jb0 MenuNoOpenration_f,TC1INTR_40
incms time8ms1
cjb_ time8ms1,#62,TC1INTR_40
clr time8ms1
incms time500ms
nop
TC1INTR_40:
incms time8mstwink
cjb_ time8mstwink,#62,TC1INTR_50
notbit Twinkle_f
clr time8mstwink
TC1INTR_50:
jb0 EnableRest_f,TC1INTR_60
incms timerest_8ms
; nop
cjb_ timerest_8ms,#32,TC1INTR_60 ;//2005-3-25,改为0.25s,carman
b0bclr EnableRest_f
b0bset enableplay_f
TC1INTR_60:
jb0 Enablelamp_f,TC1INTR_70
incms lemp8ms
cjb_ lemp8ms,#62,TC1INTR_70
clr lemp8ms
incms lemp500ms
cjb_ lemp500ms,#6,TC1INTR_70
; clr lemp500ms
b0bclr Enablelamp_f
b0bclr led_P
TC1INTR_70:
incms Time8msPis
cjbe_ Time8msPis,#4,TC1INTR_80
mov_ Time8msPis,#1
TC1INTR_80:
/*
jb1 OuterPower_f,TC1INTR_90
jb0 second_f,TC1INTR_90
incms timebattery
cjb_ timebattery,#2,TC1INTR_90
b0bset EnEnInspectBat01_f
clr timebattery
*/
TC1INTR_90:
jb0 Err691_f,TC1INTR_100
incms TimeErr691
TC1INTR_100:
; clr TimeErr691
TC1INTREnd:
b0bclr second_f
jmp InterrupEnd
;---------------------------------------
;TC0INTR:
; nop
;TC0INTREnd:
; b0bclr FTC0IRQ
; jmp InterrupEnd
;***************** ADC转换 **********************************
FADCINTR:
b0bclr FADCIRQ
b0bclr FEOC ;Progressing ADC
mov a,ADR
and a,#0fh
mov AdcValue,a
swapm AdcValue
mov a,ADB
and a,#0fh
or AdcValue,a
swap AdcValue
add AdcValueL,a
mov a,ADB
and a,#0f0h
mov AdcValue,a
swap AdcValue
adc AdcValueH,a
b0bset FADS ;ADC start
decms TempAdc
jmp FADCINTR_end
b0bclr fc
RRCM AdcValueH
rrcm AdcValueL
b0bclr fc
RRCM AdcValueH
rrcm AdcValueL
b0bclr FADCIEN
b0bclr fadenb
b0bclr FGCHS ;To release AINx input channel
b0bclr FADS
b0bclr p4.4
b0bset AdcConOver_f
FADCINTR_end:
jmp InterrupEnd
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -