📄 interrupt.asm
字号:
;======================================================================
ISR_TMR1: ;timer1 interrupt interval is 21.845333333ms
M_PUSH
snz F_CH1_100msFg
JMP L_CH1_Skip100Ms
sdz M_CH1_100msTime
JMP L_CH1_Skip100Ms
CLR F_CH1_100msFg
L_CH1_Skip100Ms:
;-----------------------------------------------------------------------
snz F_CH2_100msFg
JMP L_CH2_Skip100Ms
sdz M_CH2_100msTime
JMP L_CH2_Skip100Ms
CLR F_CH2_100msFg
L_CH2_Skip100Ms:
;------------------------------------------------------------------------
SDZ M_DIV_01S
JMP L_NotArrive_01s
MOV A,10
MOV M_DIV_01S,A
SET F_RefreshUsbData
SET F_UsbPowerDown01s
L_NotArrive_01s:
;------------------------------------------------------------------------
;------------------------------------------------------------------------
SDZ M_DIV_1S
JMP L_NotArrive1s
MOV A,45
MOV M_DIV_1S,A
SET F_CH1_Decharge1s
SET F_CH2_Decharge1s
;------------------------------------------------------------------------
SNZ F_CH1_5sEnFg
JMP L_CH1_End5SecTime
SDZ M_CH1_5SecTime
JMP L_CH1_End5SecTime
MOV A,C_Charge5s
MOV M_CH1_5SecTime,A
clr F_CH1_5sEnFg
SET F_CH1_5sOkFg
L_CH1_End5SecTime:
;---------------------------------------------------
;---------------------------------------------------
SNZ F_CH2_5sEnFg
JMP L_CH2_End5SecTime
SDZ M_CH2_5SecTime
JMP L_CH2_End5SecTime
MOV A,C_Charge5s
MOV M_CH2_5SecTime,A
clr F_CH2_5sEnFg
SET F_CH2_5sOkFg
L_CH2_End5SecTime:
;---------------------------------------------------
L_NotArrive5s:
;CH1--- n-hour Timer...
;-------------------------------------------------------------------------
SNZ F_CH1StartCharge
JMP L_CH1_EndTime
SZ M_CH1ChargeSec
JMP L_CH1SecNot0
JMP L_CH1CheckMin
L_CH1SecNot0:
DEC M_CH1ChargeSec
JMP L_CH1_EndTime
;-------------------------------------------------
L_CH1CheckMin:
SZ M_CH1ChargeMin
JMP L_CH1MinNot0
JMP L_CH1CheckHour
L_CH1MinNot0:
DEC M_CH1ChargeMin
MOV A,M_CH1ChargeMin
OR A,M_CH1ChargeHour
SZ Z
JMP L_CH1Timeover
mov a,59 ;60
MOV M_CH1ChargeSec,A
JMP L_CH1_EndTime
;-------------------------------------------------
L_CH1CheckHour:
SZ M_CH1ChargeHour
JMP L_CH1HourNot0
JMP L_CH1Timeover
L_CH1HourNot0:
DEC M_CH1ChargeHour
mov a,59 ;60
MOV M_CH1ChargeSec,A
mov a,59
MOV M_CH1ChargeMin,A
JMP L_CH1_EndTime
;-------------------------------------------------
L_CH1Timeover:
SET F_CH1_MaxTimer_Ok
L_CH1_EndTime:
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
;CH2--- n-hour Timer...
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
SNZ F_CH2StartCharge
JMP L_CH2_EndTime
SZ M_CH2ChargeSec
JMP L_CH2SecNot0
JMP L_CH2CheckMin
L_CH2SecNot0:
DEC M_CH2ChargeSec
JMP L_CH2_EndTime
;-------------------------------------------------
L_CH2CheckMin:
SZ M_CH2ChargeMin
JMP L_CH2MinNot0
JMP L_CH2CheckHour
L_CH2MinNot0:
DEC M_CH2ChargeMin
MOV A,M_CH2ChargeMin
OR A,M_CH2ChargeHour
SZ Z
JMP L_CH2Timeover
mov a,59 ;60
MOV M_CH2ChargeSec,A
JMP L_CH2_EndTime
;-------------------------------------------------
L_CH2CheckHour:
SZ M_CH2ChargeHour
JMP L_CH2HourNot0
JMP L_CH2Timeover
L_CH2HourNot0:
DEC M_CH2ChargeHour
mov a,59 ;60
MOV M_CH2ChargeSec,A
mov a,59
MOV M_CH2ChargeMin,A
JMP L_CH2_EndTime
;-------------------------------------------------
L_CH2Timeover:
SET F_CH2_MaxTimer_Ok
L_CH2_EndTime:
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
L_NotArrive1s:
M_POP
RETI
;;---------------------------------------------------------
;;---------------------------------------------------------
;; ISR_AD AD INTRRUPT SERVICE
;; description LOAD AD SEND TO PC
;; input NULL
;; onput NULL
;; stack use NULL
;;---------------------------------------------------------
ISR_AD:
M_PUSH
CLR ADF
MOV A,ADRH
MOV M_Adrh_Buf,A
MOV A,ADRL
MOV M_Adrl_Buf,A
MOV A,6
L_GoOnRightMove:
CLR C
RRC M_AdrH_Buf
RRC M_AdrL_Buf
SDZ ACC
JMP L_GoOnRightMove
MOV A,ADCR
AND A,00000111B
XOR A,00000000B
SZ Z
JMP L_Channel0Intrrupt
MOV A,ADCR
AND A,00000111B
XOR A,00000001B
SZ Z
JMP L_Channel1Intrrupt
MOV A,ADCR
AND A,00000111B
XOR A,00000010B
SZ Z
JMP L_Channel2Intrrupt
MOV A,ADCR
AND A,00000111B
XOR A,00000011B
SZ Z
JMP L_Channel3Intrrupt
MOV A,ADCR
AND A,00000111B
XOR A,00000100B
SZ Z
JMP L_Channel4Intrrupt
;MOV A,ADCR
;AND A,00000111B
;XOR A,00000101B
;SZ Z
JMP L_Channel5Intrrupt
L_Channel0Intrrupt:
MOV A,M_Adrh_Buf
MOV M_Ch0AdcBufH,A
MOV A,M_Adrl_Buf
MOV M_Ch0AdcBufL,A
Set F_ADC0_OK
select_chanel_1
JMP L_ADCStart
L_Channel1Intrrupt:
MOV A,M_Adrh_Buf
MOV M_Ch1AdcBufH,A
MOV A,M_Adrl_Buf
MOV M_Ch1AdcBufL,A
Set F_ADC1_OK
select_chanel_2
JMP L_ADCStart
L_Channel2Intrrupt:
MOV A,M_Adrh_Buf
MOV M_Ch2AdcBufH,A
MOV A,M_Adrl_Buf
MOV M_Ch2AdcBufL,A
Set F_ADC2_OK
select_chanel_3
JMP L_ADCStart
L_Channel3Intrrupt:
MOV A,M_Adrh_Buf
MOV M_Ch3AdcBufH,A
MOV A,M_Adrl_Buf
MOV M_Ch3AdcBufL,A
Set F_ADC3_OK
select_chanel_4
JMP L_ADCStart
L_Channel4Intrrupt:
MOV A,M_Adrh_Buf
MOV M_Ch4AdcBufH,A
MOV A,M_Adrl_Buf
MOV M_Ch4AdcBufL,A
Set F_ADC4_OK
select_chanel_5
JMP L_ADCStart
L_Channel5Intrrupt:
MOV A,M_Adrh_Buf
MOV M_Ch5AdcBufH,A
MOV A,M_Adrl_Buf
MOV M_Ch5AdcBufL,A
Set F_ADC5_OK
select_chanel_0
L_ADCStart:
Adc_start
L_Adc_Interrupt_Exit:
M_POP
RETI
;======================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -