📄 b4cgp.asm
字号:
JBS TEMP_IRT,0
JMP EXIT_IEROR
MOV A,@CDA9_HDATH
MOV COMP_DATH,A
MOV A,@CDA9_HDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XBB
JBS STATUS,Z
JMP EXIT_IEROR
MOV A,@CDA9_LDATH
MOV COMP_DATH,A
MOV A,@CDA9_LDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XAA
JBS STATUS,Z
JMP EXIT_IEROR
NOP
CLR IR_FLAG
BS IR_CTRF,NINE_MS
BS IR_FLAG,IR_HEADC;9MS低电品到
JMP EXIT_RCIR
RECI_2IR:
JBS TEMP_IRT,1
JMP EXIT_IEROR
MOV A,@CDA4_HDATH
MOV COMP_DATH,A
MOV A,@CDA4_HDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XBB
JBS STATUS,Z
JMP IRRECI_ERROR
MOV A,@CDA4_LDATH
MOV COMP_DATH,A
MOV A,@CDA4_LDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XAA
JBS STATUS,Z
JMP IRRECI_ERROR
NOP
BS R4,SAV_PAGE
CLR IR_FLAG;4.5MS高电平到
BS IR_FLAG,IR_HEADD
;BS IR_CTRF,NINE_MS
MOV A,@8
MOV DBITY_CT,A
MOV A,@DAT_SPHEAD
MOV DAT_SSPH,A
CLR IRDAT_TEMP
JMP EXIT_RCIR
RECI_3IR:
JBS TEMP_IRT,1
JMP LOW_JUDG2
MOV A,@CDA1_HDATH
MOV COMP_DATH,A
MOV A,@CDA1_HDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XBB
JBS STATUS,Z
JMP JUDG_IREND
MOV A,@CDA1_LDATH
MOV COMP_DATH,A
MOV A,@CDA1_LDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XAA
JBS STATUS,Z
JMP RECI_3IR0
BS STATUS,C
NOP
JMP RECI_3IR1
LOW_JUDG2:
MOV A,@CDAH_HDATH
MOV COMP_DATH,A
MOV A,@CDAH_HDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XBB
JBS STATUS,Z
JMP JUDG_IREND
MOV A,@CDAH_LDATH
MOV COMP_DATH,A
MOV A,@CDAH_LDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XAA
JBS STATUS,Z
EXIT_RCIRx:
NOP
JMP EXIT_RCIR
RECI_3IR0:
MOV A,@CDAH_HDATH
MOV COMP_DATH,A
MOV A,@CDAH_HDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XBB
JBS STATUS,Z
JMP IRRECI_ERROR
MOV A,@CDAH_LDATH
MOV COMP_DATH,A
MOV A,@CDAH_LDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XAA
JBS STATUS,Z
JMP IRRECI_ERROR
JBS TEMP_IRT,1
JMP EXIT_RCIRx
BC STATUS,C
NOP
RECI_3IR1:
BS R4,SAV_PAGE
RLC IRDAT_TEMP
DJZ DBITY_CT
JMP JUDG_IREND
MOV A,DAT_SSPH
MOV R4,A
BS R4,SAV_PAGE
MOV A,IRDAT_TEMP
MOV 0,A
INC DAT_SSPH
CLR IRDAT_TEMP
MOV A,@8
MOV DBITY_CT,A
JMP JUDG_IREND
JUDG_IREND:;判断结束未或反复结果
JBC TEMP_IRT,1
JMP EXIT_RCIR
MOV A,@CDA9_HDATH
MOV COMP_DATH,A
MOV A,@CDA9_HDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XBB
JBS STATUS,Z
JMP EXIT_RCIR
MOV A,@CDA9_LDATH
MOV COMP_DATH,A
MOV A,@CDA9_LDATL
MOV COMP_DATL,A
CALL IR_COMPARE
SUB A,@0XAA
JBS STATUS,Z
JMP EXIT_RCIR
BS R4,SAV_PAGE
CLR IR_FLAG
BC IR_CTRF,NINE_MS
CALL IRG_DEAL
JMP EXIT_RCIR
IRRECI_ERROR:
NOP
BS R4,SAV_PAGE
CLR IR_FLAG
BC IR_CTRF,NINE_MS
JMP EXIT_RCIR
EXIT_IEROR:
NOP
BS R4,SAV_PAGE
CLR IR_FLAG
BC IR_CTRF,NINE_MS
JMP EXIT_RCIR
EXIT_RCIR:
BC R4,SAV_PAGE
JMP MAIN
IRG_DEAL:
JBC PORT6,STUDY;学习
JMP NORMALS_DEAL
MOV A,DAT_IRSV+1
MOV DAT_IRSV,A
MOV A,DAT_IRSV+2
MOV DAT_IRSV+1,A
MOV A,DAT_SPHEAD+3
MOV DAT_IRSV+2,A
SUB A,DAT_IRSV+1
JBS STATUS,Z
JMP EXIT_IRG_DEAL
MOV A,DAT_IRSV+2
SUB A,DAT_IRSV
JBS STATUS,Z
JMP EXIT_IRG_DEAL
NOP
NOP
BC R4,SAV_PAGE
MOV A,@USER_Q+3
MOV ADDR,A
BS R4,SAV_PAGE
MOV A,DAT_IRSV+2
BC R4,SAV_PAGE
MOV DATAO,A
MOV QUHAO_DT+6,A
DISI
CALL WRBYTE_E2PROM;C
ENI
mov A,@200
MOV DAT_SPHEAD+5,A
mov A,@200
MOV DAT_SPHEAD+6,A
mov A,@60
MOV DAT_SPHEAD+1,A
DECZ_CT:
BS PORT5,DESL
DECX_CT:
NOP
NOP
DJZ DAT_SPHEAD+5
JMP DECX_CT
mov A,@200
MOV DAT_SPHEAD+5,A
DJZ DAT_SPHEAD+6
JMP DECX_CT
mov A,@200
MOV DAT_SPHEAD+6,A
BC PORT5,DESL
DECY_CT:
NOP
NOP
DJZ DAT_SPHEAD+5
JMP DECY_CT
mov A,@200
MOV DAT_SPHEAD+5,A
DJZ DAT_SPHEAD+6
JMP DECY_CT
mov A,@200
MOV DAT_SPHEAD+6,A
DJZ DAT_SPHEAD+1
JMP DECZ_CT
JBC SIGN_FLAG2,ACK_ERROR
JMP DATAZ_ERROR
BS R4,SAV_PAGE
CLR DAT_IRSV+2
CLR DAT_IRSV+1
CLR DAT_IRSV
BC R4,SAV_PAGE
JMP EXIT_IRG_DEAL
DATAZ_ERROR:
CLR SIGN_FLAG2
BS R4,SAV_PAGE
JMP EXIT_IRG_DEAL
NORMALS_DEAL: ;at page0 //twd
;} ;add
Bs R4,SAV_PAGE
nop
nop
INC Rx
nop
nop
MOV A,Rx
SUB A,@max_rx
nop
JBC STATUS,C
;if max_rx<Rx
;{
jmp max_is_10
max_is_Rx:
;1)set rx=0
;{
Bs PORT5 ,DEC_ENABLE
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
CLR Rx
MOV A,@50
MOV pulseCnt,A
loop_decRx:
BC PORT6 ,pulse_Rx
JMP $+1
JMP $+1
JMP $+1
JMP $+1
BS PORT6 ,pulse_Rx
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
; CALL DELAY_3US
dec pulseCnt
JBS STATUS ,Z
jmp loop_decRx
;}
Bc PORT5 ,DEC_ENABLE
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
MOV A,@min_rx
MOV Rx,A
MOV pulseCnt,A
loop_addRx0:
BC PORT6 ,pulse_Rx
JMP $+1
JMP $+1
JMP $+1
JMP $+1
BS PORT6 ,pulse_Rx
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
dec pulseCnt
JBS STATUS ,Z
jmp loop_addRx0
JMP save_Rx
;}
;else 20>=Rx
;{
max_is_10:
;}
nop
nop
Bc PORT5 ,DEC_ENABLE
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
JMP $+1
BC PORT6 ,pulse_Rx
JMP $+1
JMP $+1
JMP $+1
JMP $+1
BS PORT6 ,pulse_Rx
save_Rx:
MOV A,Rx
BC R4,SAV_PAGE
MOV DATAO,A
MOV A,@0x4f
MOV ADDR,A
CALL WRBYTE_E2PROM
;}
old_process:
clr pulseCnt
BC R4,SAV_PAGE
MOV A,@USER_Q+3
MOV ADDR,A
CALL RDBYTE_E2PROM
nop
nop
MOV A,RXBUF
MOV QUHAO_DT+6,A
nop
nop
BS R4,SAV_PAGE
SUB A,DAT_SPHEAD+3
nop
BC IR_CTRF,NINE_MS
JBS STATUS,Z
JMP EXIT_IRG_DEAL
JBC IR_CTRF,NORMORL_MS
JMP IRTYU
BC R4,SAV_PAGE
MOV A,@0XBB
MOV DATAO,A
MOV A,@USER_Q+8
MOV ADDR,A
DISI
CALL WRBYTE_E2PROM;C
ENI
NOP
NOP
BS IR_CTRF,NORMORL_MS;关闭解扰
JMP EXIT_IRG_DEAL
IRTYU:
BC R4,SAV_PAGE
MOV A,@0XAA
MOV DATAO,A
MOV A,@USER_Q+8
MOV ADDR,A
DISI
CALL WRBYTE_E2PROM;C
ENI
NOP
NOP
BC IR_CTRF,NORMORL_MS;打开解扰
EXIT_IRG_DEAL:
BC R4,SAV_PAGE
RET
IR_COMPARE:;数据沿时间比较
MOV A,IR_TIMETPH;
SUB A,COMP_DATH
JBC STATUS,Z
JMP NEXT1_COMP
JBC STATUS,C
JMP TIME_LESS
JMP TIME_LARGE
NEXT1_COMP:
BC STATUS,C
MOV A,IR_TIMETPL;
SUB A,COMP_DATL
JBC STATUS,Z
JMP TIME_LARGE
JBC STATUS,C
JMP TIME_LESS
JMP TIME_LARGE
TIME_LESS:
MOV A,@0XBB
JMP TIME_CEND
TIME_LARGE:
MOV A,@0XAA
TIME_CEND:
RET
;***************************************
DELAY_3US:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
DELAY_EEROM:
BC STATUS,C
MOV DELY_CT,A
DELY_EUS:
NOP
NOP
NOP
DJZ DELY_CT
JMP DELY_EUS
RET
DELAY_2MS:
MOV A,@80
MOV ADRESS_TP,A
AY_2MS:
MOV A,@200
CALL DELAY_EEROM
DJZ ADRESS_TP
JMP AY_2MS
RET
DELAY_100MS:
BC R4,SAV_PAGE
MOV A,@25
MOV DATLO_MJ,A
Y_100MS1:
CALL DELAY_2MS
DJZ DATLO_MJ
JMP Y_100MS1
RET
;---------------------------------------------
;EEROM(24C04)操作
WRBYTE_E2PROM:;写一个字节到EEPROM器件
MOV A,@SLAVE
MOV TXBUF,A
CALL BSTART_E2PROM
CALL TX_E2PROM
MOV A,ADDR
MOV TXBUF,A
CALL TX_E2PROM
MOV A,DATAO
MOV TXBUF,A
CALL TX_E2PROM
CALL BSTOP_E2PROM
CALL DELAY_2MS
nop
nop
nop
RET
RDBYTE_E2PROM:;读一字节从EPROM器件
CALL BSTART_E2PROM
MOV A,@SLAVE
MOV TXBUF,A
CALL TX_E2PROM
MOV A,ADDR
MOV TXBUF,A
CALL TX_E2PROM
CALL BSTART_E2PROM
MOV A,@SLAVE
MOV TXBUF,A
BS TXBUF,0
CALL TX_E2PROM
CALL RX_E2PROM
CALL BSTOP_E2PROM
RET
BSTART_E2PROM:;起始位
MOV A,@6
CALL DELAY_EEROM
IOR PORT6
AND A,@EE2ROM_ND ; 将P5.0,P5.1置为输出状态
IOW PORT6
BS PORT6,SDA_E2PROM
BS PORT6,SCL_E2PROM
MOV A,@4
CALL DELAY_EEROM
BC PORT6,SDA_E2PROM
MOV A,@1
CALL DELAY_EEROM
BC PORT6,SCL_E2PROM
MOV A,@2
CALL DELAY_EEROM
RET
BSTOP_E2PROM:;停止位
IOR PORT6
AND A,@EE2ROM_ND;方向寄存器
IOW PORT6
BC PORT6,SDA_E2PROM
MOV A,@1
CALL DELAY_EEROM
BS PORT6,SCL_E2PROM
MOV A,@1
CALL DELAY_EEROM
BS PORT6,SDA_E2PROM
MOV A,@6
CALL DELAY_EEROM
RET
BITOUT_E2PROM:;从EM78发送数据, 一位子程序
IOR PORT6
AND A,@EE2ROM_ND ;方向寄存器
IOW PORT6
MOV A,@2
CALL DELAY_EEROM
JBS TXBUF,7
JMP BIT0_E2PROM
BS PORT6,SDA_E2PROM
JMP CLK1_E2PROM
BIT0_E2PROM:
BC PORT6,SDA_E2PROM
CLK1_E2PROM:
MOV A,@2
CALL DELAY_EEROM
BS PORT6,SCL_E2PROM
MOV A,@2
CALL DELAY_EEROM
BC PORT6,SCL_E2PROM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -