📄 b4cgp.asm
字号:
RET
RX_E2PROM:;接收数据子程序
IOR PORT6
OR A,@EE2ROM_OR;
IOW PORT6
MOV A,@8
MOV COUNTER,A
CLR RXBUF
RXLP_E2PROM:
BS PORT6,SCL_E2PROM
MOV A,@1
CALL DELAY_EEROM
BS PORT6,SDA_E2PROM
BC STATUS,C
JBC PORT6,SDA_E2PROM
BS STATUS,C
RLC RXBUF
BC PORT6,SCL_E2PROM
MOV A,@1
CALL DELAY_EEROM
DEC COUNTER
JBS STATUS,Z
JMP RXLP_E2PROM
BS TXBUF,7
CALL BITOUT_E2PROM
RET
TX_E2PROM:
JBC SIGN_FLAG2,ACK_ERROR
JMP EXIT_EROM
BC STATUS,C
MOV A,@8
MOV COUNTER,A
TXLP_E2PROM:
CALL BITOUT_E2PROM
RLC TXBUF
DEC COUNTER
JBS STATUS,Z
JMP TXLP_E2PROM
BS PORT6,SDA_E2PROM
IOR PORT6
OR A,@EE2ROM_OR;
IOW PORT6
BS PORT6,SCL_E2PROM
MOV A,@60
MOV WAIT_ACK,A
WAIT_ACK_E2PROM:
JBS PORT6,SDA_E2PROM
JMP ACK_E2PROMR
DJZ WAIT_ACK
JMP WAIT_ACK_E2PROM
BS SIGN_FLAG2,ACK_ERROR
ACK_E2PROMR:
BC PORT6,SCL_E2PROM
MOV A,@1
CALL DELAY_EEROM
IOR PORT6
AND A,@EE2ROM_ND;
IOW PORT6
BS PORT6,SDA_E2PROM
MOV A,@1
CALL DELAY_EEROM
EXIT_EROM:
RET
;******************************************
DIVDIE_8:
MOV A,@0X8
MOV T_R16,A
BC STATUS,C
CLR DREM8U
D8U_2:
RLC DD8U
RLC DREM8U
MOV A,DV8U
SUB DREM8U,A
JBC STATUS,C
JMP D8U_1
MOV A,DV8U
ADD DREM8U,A
BC STATUS,C
JMP D8U_20
D8U_1:
BS STATUS,C
D8U_20:
DJZ T_R16
JMP D8U_2
RLC DD8U
RET
DIVIDE_16:
MOV A,@0X10
MOV T_20H,A
CLR DREM16UL
CLR DREM16UH
BC STATUS,C
D16U_0:
RLC DD16UL
RLC DD16UH
RLC DREM16UL
RLC DREM16UH
MOV A,DV16UL
SUB A,DREM16UL
MOV TEMP_DVL,A
MOV A,DV16UH
JBS STATUS,C
JMP SUBB34
SUB A,DREM16UH
JBC STATUS,C
JMP D16U_1
JMP D16U_X1
SUBB34:
SUB A,DREM16UH
JBS STATUS,C
JMP D16U_X1
SUB A,@0X1
JBS STATUS,C
JMP D16U_1
D16U_X1:
BC STATUS,C
JMP D16U_2
D16U_1:
MOV DREM16UH,A
MOV A,TEMP_DVL
MOV DREM16UL,A
BS STATUS,C
D16U_2:
DJZ T_20H
JMP D16U_0
RLC DD16UL
RLC DD16UH
RET
;-----------------------------------------------------
TIMER0_A:
BC TIMERSIGER,0
INC DT_ACOUN
JBS STATUS,Z
JMP EXIT_0KP
BC IR_CTRF,NINE_MS
BS PORT5,DESL
EXIT_0KP:
RETI
TIMER0_INT:
BC RF,0
INC TIMERIRH
RETI
TIMER0_B:
BC TIMERSIGER,1
RETI
;*******************************************************
;*******************************************************
ORG 0x0400
NOR_EVENTS:
DISI
BC R4,SAV_PAGE
BS STATUS,C
JBC PORT6,DATA_IN
JMP XDTU_1
BC STATUS,C
XDTU_1:
RLC RECI_IO
MOV A,RECI_IO
AND A,@3
JBC STATUS,Z
JMP EXIT_RECIE
SUB A,@3
JBC STATUS,Z
JMP EXIT_RECIE
BS STATUS,IOCS
IOR TCCBL_COUNT
MOV TEMPMPL,A
IOR TCCBH_COUNT
MOV TEMPMPH,A
MOV A,@00
IOW TCCBL_COUNT
IOW TCCBH_COUNT
BC STATUS,IOCS
JBC SIGNER_FLAG,FLAG_L60US;接到60US的低电平
JMP RECI_H60US
JBC SIGNER_FLAG,FLAG_80US;接到80US的高电平
JMP RECI_L60US
JBC SIGNER_FLAG,FIRST_LBIT;接到低电平到高电平的跳变
JMP RECI_80US
JBS RECI_IO,0;
JMP EXIT_RECYE
BS SIGNER_FLAG,FIRST_LBIT
JMP EXIT_RECYE
RECI_80US:
BC SIGNER_FLAG,FIRST_LBIT
JBC RECI_IO,0
JMP EXIT_RECYE
CALL COMP_80US
SUB A,@0XAA
JBS STATUS,Z
JMP EXIT_RECYE
BS SIGNER_FLAG,FLAG_80US
BS PORT5,D_LED
JMP EXIT_RECYE
RECI_L60US:
BC SIGNER_FLAG,FLAG_80US
JBS RECI_IO,0
JMP EXIT_RECYE
CALL COMP_60US
SUB A,@0XAA
JBS STATUS,Z
JMP EXIT_RECYE
BS SIGNER_FLAG,FLAG_L60US;??????????????
BC PORT5,D_LED
JMP EXIT_RECYE
RECI_H60US:
BC SIGNER_FLAG,FLAG_L60US
JBC RECI_IO,0
JMP EXIT_RECYE
CALL COMP_60US
SUB A,@0XAA
JBS STATUS,Z
JMP EXIT_RECYE
BS PORT5,D_LED
CALL DELAY_60US
SUB A,@0XAA
JBS STATUS,Z
JMP EXIT_RECYE
BC PORT5,D_LED
MOV A,@0X0E
MOV RS_SAVC,A
MOV A,@0X28
MOV R4,A
LAY1_6:
JBS PORT6,DATA_IN
JMP LAY1_6
BS PORT5,D_LED
LAYX_6:
JBC PORT6,DATA_IN
JMP LAYX_6
BC PORT5,D_LED
CALL DEL_3US
NOP
NOP
NOP
LAYY_6:
CALL RD_BYTE
BC PORT5,D_LED
MOV A,RECI_DBUF
MOV R0,A
INC R4
DJZ RS_SAVC
JMP LAZY_6
JMP LAXY_6
LAZY_6:
NOP
NOP
NOP
CALL DEL_3USB
JMP LAYY_6
LAXY_6:
BC PORT5,D_LED
MOV A,@0X0C
MOV ADDR_C,A
MOV A,@0X28
MOV R4,A
CALL SUM_CHECK
MOV A,R0
SUB A,ADDRESS
JBS STATUS,Z
JMP EXIT_RECYE1
INC R4
MOV A,R0
COM ADDRESS
SUB A,ADDRESS
JBS STATUS,Z
JMP EXIT_RECYE1
BC PORT5,D_LED
MOV A,QUHAO_DT
SUB A,DAT_ADRES+1
JBS STATUS,Z
JMP JUDG_DIS
MOV A,QUHAO_DT+1
SUB A,DAT_ADRES+2
JBS STATUS,Z
JMP JUDG_DIS
MOV A,QUHAO_DT+2
NOP
NOP
SUB A,DAT_ADRES+3
JBS STATUS,Z
JMP JUDG_DIS
NOP
NOP
BC R4,SAV_PAGE
MOV A,@DAT_ADRES+4
ADD A,QUHAO_DT+3
MOV R4,A
MOV A,0
AND A,QUHAO_DT+4
JBC STATUS,Z
JMP CLOSE_D
BS OPEN_STA,OPEN_S
BC PORT5,DESL
JMP JUDG_DIS
CLOSE_D:
CLR OPEN_STA
BS PORT5,DESL
JUDG_DIS:
JBS OPEN_STA,OPEN_S
JMP EXIT_RECIE
twd_loop:
JBS PORT5,GY_IN
CLR GY_COUNTER
JBS PORT5,GY_IN
JMP EXIT_DO
GY_IS_HIGH:
inc GY_COUNTER ;let GY_COUNTER=1
MOV A,GY_COUNTER
AND A,@0xE0
JBC STATUS,Z
JMP EXIT_DO
MOV A,@0x60
MOV GY_COUNTER,A
jmp twd_loop
EXIT_DO: ;
CLR DT_ACOUN
JBS PORT6,DATA_IN;判断停止位上升沿
JMP EXIT_DO
LAY2_K:
JBC PORT6,DATA_IN;判断停止位下降沿
JMP LAY2_K
CALL DEL_6US
BC IR_CTRF,NORMORL_MS;//add by twd
JBC IR_CTRF,NORMORL_MS;判断通道数
JMP SECOND_Y;第二通道
NOP
BC PORT6,CTL;打开第一通道
MOV A,@0X80
SUB A,0X28;第一通道
JBC STATUS,C
JMP SET_HI
JMP SET_LO
SET_HI:
NOP
nop
Bc PORT5,IC_CARDS;第二通道保持状态
Bc PORT6,OUT_CTR;第一通道保持状态
JMP EXIT_RECIE
SET_LO:
nop
Bc PORT5,IC_CARDS;第二通道保持状态
Bs PORT6,OUT_CTR;第一通道保持状态
JMP EXIT_RECIE
EXIT_RECIE:
CALL DEL_8US
EXIT_RECYE:
BS PORT6,CTL
BC STATUS,PS0
JMP MAIN_NEXT2
SECOND_Y:;第二通道
BC PORT6,6
MOV A,@0X80
SUB A,0X28;第一通道
JBC STATUS,C
JMP SET2_HI
JMP SET2_LO
SET2_HI:
NOP
nop
Bc PORT6,OUT_CTR
Bc PORT5,IC_CARDS
JMP EXIT2_RECIE
SET2_LO:
nop
Bc PORT6,OUT_CTR
Bs PORT5,IC_CARDS
JMP EXIT2_RECIE
EXIT_RECYE1:
NOP
NOP
NOP
EXIT2_RECIE:
CALL DEL_8US
EXIT2_RECYE:
BS PORT6,6
BC STATUS,PS0
JMP MAIN_NEXT2
RD_BYTE:
MOV A,@0X8
MOV RECI_CNT,A
CLR RECI_DBUF
DATA_D:
BS PORT5,D_LED
JBS PORT6,DATA_IN
JMP DATA_0
JMP DATA_1
DATA_0:
NOP
BC STATUS,C
NOP
NOP
RLC RECI_DBUF
BC PORT5,D_LED
DJZ RECI_CNT
JMP DATAB_D
BS PORT5,D_LED
JMP EXITY9A
DATAB_D:
CALL DELAY_4US
JMP DATA_D
DATA_1:
BS STATUS,C
NOP
NOP
RLC RECI_DBUF
BC PORT5,D_LED
DJZ RECI_CNT
JMP DATAB_D
BS PORT5,D_LED
JMP EXITY9B
EXITY9A:
JBS PORT6,DATA_IN
JMP EXITY9A
JMP EXITY9C
EXITY9B:
JBC PORT6,DATA_IN
JMP EXITY9B
JMP EXITY9C
EXITY9C:
RET
DEL_6US:
MOV A,@0XD
mov CTEMP_L,A
AY_6US:
DJZ CTEMP_L
JMP AY_6US
RET
DEL_8US:
MOV A,@0XB
mov CTEMP_L,A
AY_8US:
DJZ CTEMP_L
JMP AY_8US
RET
DEL_3US:
MOV A,@0XA
mov CTEMP_L,A
AY_3US:
DJZ CTEMP_L
JMP AY_3US
RET
DEL_3USB:
MOV A,@0X06
mov CTEMP_L,A
AY_3USB:
DJZ CTEMP_L
JMP AY_3USB
RET
DELAY_4US:
MOV A,@0XB
mov CTEMP_L,A
NOP
AY_4US:
DJZ CTEMP_L
JMP AY_4US
RET
DELAY_60US:
;MOV A,@0X18
MOV A,@0X10
MOV CTEMP_L,A
LAY1_60US:
JBC PORT6,DATA_IN
JMP LAY4_6
NOP
NOP
DJZ CTEMP_L
JMP LAY1_60US
LAY3_6:
MOV A,@0XAA
JMP EXIT_Y6
LAY4_6:
MOV A,@0XBB
EXIT_Y6:
RET
COMP_60US:
MOV A,TEMPMPH
SUB A,@DAT_H60SH
JBC STATUS,Z
JMP LARGE6X_TN
JBS STATUS,C
JMP LARGE6_TN
JMP LARGE6Z_TN
LARGE6X_TN:
MOV A,TEMPMPL
SUB A,@DAT_H60SL
JBS STATUS,C
JMP LARGE6_TN
LARGE6Z_TN:
MOV A,TEMPMPH
SUB A,@DAT_L60SH
JBC STATUS,Z
JMP LARGE6Y_TN
JBC STATUS,C
JMP LARGE6_TN
JMP EQU6_TN
LARGE6Y_TN:
MOV A,TEMPMPL
SUB A,@DAT_L60SL
JBC STATUS,C
JMP LARGE6_TN
EQU6_TN:
MOV A,@0XAA
JMP EXIT6_ED
LARGE6_TN:
MOV A,@0XBB
EXIT6_ED:
RET
COMP_80US:
MOV A,TEMPMPH
SUB A,@DAT_H80SH
JBC STATUS,Z
JMP LARGE8E
JBC STATUS,C
JMP LARGE8X_TN
JMP LARGE8_TN
LARGE8E:
MOV A,TEMPMPL
SUB A,@DAT_H80SL
JBS STATUS,C
JMP LARGE8_TN
LARGE8X_TN:
MOV A,TEMPMPH
SUB A,@DAT_L80SH
JBC STATUS,Z
JMP LARGE8Y_TN
JBC STATUS,C
JMP LARGE8_TN
LARGE8Y_TN:
MOV A,TEMPMPL
SUB A,@DAT_L80SL
JBC STATUS,C
JMP LARGE8_TN
EQU8_TN:
MOV A,@0XAA
JMP EXIT8_ED
LARGE8_TN:
MOV A,@0XBB
EXIT8_ED:
RET
SUM_CHECK:
CLR ADDRESS
M_1CH:
BC STATUS,C
MOV A,R0
ADD ADDRESS,A
INC R4
DEC ADDR_C
JBS STATUS,Z
JMP M_1CH
RET
TEST_PORT6:
COM 0X3F
MOV A,@0X01
AND 0X3F,A
JBC 0X3F,0
JMP T1_PORT6
JMP T2_PORT6
T1_PORT6:
NOP
NOP
NOP
BS PORT5,D_LED
JMP T3_PORT6
T2_PORT6:
NOP
NOP
NOP
BC PORT5,D_LED
JMP T3_PORT6
T3_PORT6:
RET
;********************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -