📄 int0_server.asm
字号:
;---------------------------------------------------------------------
;功能:外部中断0服务程序
;入口:无
;出口:无
;---------------------------------------------------------------------
Int_External_INT0:
IN int_SREG,SREG ;1
PUSh XL ;2
PUSh XH ;2
PUSh YL ;2
PUSh YH ;2
Ir_PulseTest:
LDS XL,R_IrDataL
LDS XH,R_IrDataH
SBRC R_Flag,B_IrEnd ;Bit0=1 two data received
JMP Ir_PulseTest_ex
SBRC R_Flag,B_IrStartBit ;If received start bit?
JMP IR_DataBit
CPI R_PulseWidth,65 ;Test Start bit
BRSH IR_ClrPulseWith
CPI R_PulseWidth,55
BRSH IR_StartBit
JMP IR_ClrPulseWith
IR_DataBit:
CPI R_PulseWidth,35 ;Test Logic "1" bit
BRSH IR_WrongBit
CPI R_PulseWidth,25
BRSH IR_LogicBit1
CPI R_PulseWidth,25 ;Test Logic "0" bit
BRSH IR_WrongBit
CPI R_PulseWidth,15
BRLO IR_WrongBit
IR_LogicBit0:
CLC
JMP IR_LogicBit_Com
IR_LogicBit1:
SEC
IR_LogicBit_Com:
ROL XH
ROL XL
IR_NextBit:
INC R_PulseBit
CPI R_PulseBit,16
BRLO IR_ClrPulseWith
SBR R_Flag,(1<<B_IrEnd) ;end flag
JMP Ir_PulseTest_ex
IR_StartBit:
SBR R_Flag,(1<<B_IrStartBit)
CLR R_PulseBit
STS R_IrDataL,R_Value0
STS R_IrDataH,R_Value0
JMP IR_ClrPulseWith
IR_WrongBit:
SBR R_Flag,(1<<B_IrWrongBit)
JMP Ir_PulseTest_ex
IR_ClrPulseWith:
CLR R_PulseWidth
Ir_PulseTest_ex:
STS R_IrDataL,XL
STS R_IrDataH,XH
;Int_External_INT0_ex:
POP YH ;2
POP YL ;2
POP XH ;2
POP XL ;2
OUT SREG,int_SREG ;1
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -