INC_P EQU 32H
D_BUF EQU 33H
CHANNEL EQU 34H
EOC BIT P1.0
VTXD BIT P1.1
VRXD BIT P1.2
LED21 EQU 30H
LED43 EQU 31H
LED1 EQU 14H
LED2 EQU 15H
LED3 EQU 16H
LED4 EQU 17H
ORG 0000H
AJMP INI
ORG 000BH
AJMP T0_INI
INI: MOV SP,#60H
;MOV TMOD,#01H
;MOV TH0,#0B1H
;MOV TL0,#0E0H;20MS
;SETB TR0
;SETB EA
;SETB ET0
MOV 20H,#00H ;MESSAGE REG
MOV CHANNEL,#00H;
SETB 20H.2
;------------MESSAGE PROCESS --
MESS:; JB 20H.1,TO_T0
JB 20H.0,TO_DIS
JB 20H.2,TO_ADC
JB 20H.3,TO_DATA
SJMP MESS
TO_DIS: ACALL DIS_P
SJMP MESS
TO_T0: ACALL T0_P
SJMP MESS
TO_ADC: ACALL ADC_P
SJMP MESS
TO_DATA:ACALL D_PROC
SJMP MESS
;------------------------------
T0_P: PUSH ACC
MOV A,INC_P
CJNE A,#02H,T_BACK;WHEN 50MS COMES FETCH ADC
MOV INC_P,#00H
SETB 20H.2 ;SET ADC MSG SIGN
T_BACK: CLR 20H.1 ;CLR T0_INT MSG SIGN
POP ACC
RET
;---------MESSAGE 1--------------
T0_INI: PUSH ACC
PUSH PSW
MOV TH0,#0D8H
MOV TL0,#0F0H
INC INC_P
SETB 20H.1 ;SET T0_INT MSG SIGN
CPL P3.0
POP PSW
POP ACC
RETI
;--------------------------------
ADC_P: PUSH DPH
PUSH DPL
MOV DPTR,#0000H;CHANNEL 0 WAS SELECTED
MOVX @DPTR,A ;ALE/START IS '1'
NOP ;START CHANGE
JB EOC,$
JNB EOC,$ ;WAIT CHANGE OVER
MOVX A,@DPTR ;OE IS '1'
MOV D_BUF,A ;CHANGE value STORED IN D_BUF
CLR 20H.2 ;CLR ADC_P MSG SIGN
SETB 20H.3 ;SETB D_PROC MSG SIGN
CPL P3.0 ;
POP DPL
POP DPH
RET
;---------------------------------------------------------------
D_PROC: PUSH PSW
PUSH DPH
PUSH DPL
SETB RS0
CLR RS1
MOV A,R3
CJNE A,D_BUF,D_NXT ;R3!=D_BUF,NEW DATA FETCHED
SJMP D_EXT
;-------------THE PART OF CHECK TABLE -----------
D_NXT: MOV DPTR,#TAB0
MOV R3,D_BUF
MOV A,R3
MOV B,#02H
MUL AB ;A STORED LOW 8BITS ,B STORED HIGH 8BITS
ADD A,DPL
MOV DPL,A
MOV A,DPH
ADDC A,B
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV LED43,A
MOV A,#01H
MOVC A,@A+DPTR
MOV LED21,A
SETB 20H.0 ;SET DIS_P MSG SIGN
D_EXT: CLR 20H.3 ;CLR D_DPROCESS MSG SIGN;
SETB 20H.2 ;SET ADC_P MSG SIGN
CPL P3.1
POP DPL
POP DPH
POP PSW
RET
;-------DIS_P--------------------
DIS_P: PUSH PSW
SETB RS1
CLR RS0
ACALL F_CODE ;SEPARATE ONE WORD BCD CODE
MOV A,LED3
MOV LED3,LED4
MOV LED4,A
ANL LED3,#7FH ;设置小数点位
VUATR: MOV R0,#LED1 ;发送起始地址
MOV R2,#04H ;发送字节数
SEND: MOV R3,#08H ;每一帧发送位数
MOV A,@R0
S_STA: JNB ACC.0,SND_0
SND_1: SETB VRXD
CLR VTXD;0
SETB VTXD;1
SJMP S_CONT
SND_0: CLR VRXD
CLR VTXD
SETB VTXD
S_CONT: RR A
DJNZ R3,S_STA
INC R0
DJNZ R2,SEND
CLR 20H.0 ;CLR DIS_P MSG SIGN
POP PSW
NOP
RET
;-------------------------
F_CODE: MOV R0,#LED21
MOV R1,#LED1
MOV R2,#02H
RE_F: MOV A,@R0
MOV B,#10H ;BCD/16,SHANG A,YU B ;A,B ARE ALSO BCD CODE
DIV AB ;HIGH BIT IN A,LOW BIT IN B
INC R1
ACALL FETCH ;FETCH SHI WEI
DEC R1
MOV A,B
ACALL FETCH ;FETCH GE WEI
INC R0
INC R1
INC R1
DJNZ R2,RE_F
RET
FETCH: MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
MOV @R1,A
RET
;------------------------
LEDTAB: DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4
DB 92H,82H,0F8H,80H,90H;5,6,7,8,9
;------------------------
;HIGH 8 BITS FIRST STORED
;LOW 8 BITS SECOND STORED
;EXAMPLE 0313H EQUAL (DATA)H=03H,(DATA)L=13H
TAB0: DW 0000H,0019H,0039H,0058H,0078H,0098H,0117H,0136H
DW 0156H,0176H,0195H,0215H,0234H,0254H,0273H,0293H
DW 0313H,0332H,0352H,0371H,0391H,0410H,0430H,0449H
DW 0469H,0488H,0508H,0527H,0547H,0566H,0586H,0605H
DW 0625H,0645H,0664H,0684H,0703H,0723H,0742H,0762H
DW 0781H,0800H,0820H,0840H,0859H,0879H,0898H,0918H
DW 0938H,0957H,0977H,0996H,1016H,1035H,1055H,1074H
DW 1094H,1113H,1133H,1152H,1172H,1191H,1211H,1230H
DW 1250H,1270H,1289H,1309H,1328H,1348H,1367H,1387H
DW 1406H,1426H,1445H,1465H,1484H,1504H,1523H,1543H
DW 1563H,1582H,1602H,1621H,1641H,1660H,1680H,1699H
DW 1719H,1738H,1758H,1777H,1797H,1816H,1836H,1855H
DW 1875H,1895H,1914H,1934H,1953H,1973H,1992H,2012H
DW 2031H,2051H,2070H,2090H,2109H,2129H,2148H,2168H
DW 2188H,2207H,2227H,2246H,2266H,2285H,2305H,2324H
DW 2344H,2363H,2383H,2402H,2422H,2441H,2461H,2480H
DW 2500H,2520H,2539H,2559H,2578H,2598H,2617H,2637H
DW 2656H,2676H,2695H,2715H,2734H,2754H,2773H,2793H
DW 2813H,2832H,2852H,2871H,2891H,2910H,2930H,2949H
DW 2969H,2988H,3008H,3027H,3047H,3066H,3086H,3105H
DW 3125H,3145H,3164H,3184H,3203H,3223H,3242H,3262H
DW 3281H,3301H,3320H,3340H,3360H,3379H,3398H,3418H
DW 3438H,3457H,3477H,3496H,3516H,3535H,3555H,3574H
DW 3594H,3613H,3633H,3652H,3672H,3691H,3711H,3730H
DW 3750H,3770H,3789H,3809H,3828H,3848H,3867H,3887H
DW 3906H,3926H,3945H,3965H,3984H,4004H,4023H,4043H
DW 4063H,4082H,4102H,4121H,4140H,4160H,4180H,4199H
DW 4219H,4238H,4258H,4277H,4297H,4316H,4336H,4355H
DW 4375H,4395H,4414H,4434H,4453H,4473H,4492H,4512H
DW 4531H,4551H,4570H,4590H,4609H,4629H,4648H,4668H
DW 4688H,4707H,4727H,4746H,4766H,4785H,4805H,4824H
DW 4844H,4863H,4883H,4902H,4922H,4941H,4961H,4980H
END