ORG 0000H ;程序执行开始地址
LJMP ST ;跳至START执行
ORG 000BH
LJMP CTC
ORG 0023H ;串行口中断入口地址
SJMP SHUCHU ;中断返回(不开中断)
;
ST:
MOV TMOD,01H
MOV TH0,#CTH
MOV TL0,#CTL
MOV SCON,#00H
MOV SMM,#01H
MOV SMJS,#0
MOV JZJS,#0
MOV DPTR,#DAN
MOV ZF,#0
SETB TR0
SETB ET0
SETB ES
SETB EA
LJMP $
;-------------------------------------
CTC:
PUSH ACC
PUSH B
MOV TH0,#CTH
MOV TL0,#CTL
CLR A
MOVC A,@A+DPTR
INC DPTR
MOV SBUF,A
INC ZFJS
MOV A,ZFJS
CJNE A,#YS,CTCR
MOV ZFJS,#0
INC ZF
MOV A,ZF
CJNE A,#7,CTCR
MOV ZF,#0
CTCR: POP B
POP ACC
RETI
;-----------------------------------------
SHUCHU: PUSH ACC
CLR TI
MOV A,JZJS
CJNE A,#4,SHUCHU1
CLR RCLK
MOV JZJS,#0
INC SMJS
MOV A,SMJS
SETB RCLK
CJNE A,#8,SCR
MOV SMJS,#0
MOV A,ZF
MOV B,#32
MUL AB
MOV DPTR,#DAN
ADD A,DPL
MOV DPL,A
MOV A,B
ADDC A,DPH
MOV DPH,A
SJMP SCR
SHUCHU1:
CJNE A,#3,SHUCHU2
MOV A,SMM
MOV SBUF,A
RL A
MOV SMM,A
SJMP SHUCHU3
SHUCHU2:
CLR A
MOVC A,@A+DPTR
MOV SBUF,A
INC DPTR
SHUCHU3:
INC JZJS
SCR: POP ACC
RETI
;--------------------------------
SMJS DATA 22H
JZJS DATA 23H
SMM DATA 24H
ZFJS DATA 25H
ZF DATA 26H
RCLK BIT P3.2
YS EQU 200
CT EQU 655435-1000*4
CTH EQU CT/256
CTL EQU CT MOD 256
DAN:
DB 08H,00H,08H,08H,08H,88H,7EH,88H
DB 08H,50H,0AH,50H,0FFH,20H,08H,20H
DB 28H,50H,2EH,48H,28H,8CH,39H,04H
DB 48H,00H,44H,06H,83H,0FCH,00H,00H
DB 01H,00H,01H,00H,01H,00H,01H,00H
END ;程序结束