📄 乙机接受.asm
字号:
RS EQU P3.3
RW EQU P3.4
E EQU P3.5
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER0
ORG 0023H
LJMP JIESHOU
ORG 0100H
START:
MOV SP,#6FH
;MOV 20H,#0FFH
MOV 22H,#01H
;MOV 26H,#0FFH
MOV 23H,#00H
MOV 34H,#28H;存放矩形波频率
MOV 35H,#28H;存放梯形波频率
MOV 36H,#28H;存放锯齿波频率
MOV 37H,#28H;存放三角波频率
MOV 38H,#28H;存放正弦波频率
MOV 39H,#0AH;存放矩形波占空比
MOV 3BH,#00H;频率百位 (传送)
MOV 3CH,#04H;频率十位 (传送)
MOV 3DH,#00H;频率个位 (传送)
MOV 3EH,#05H;占空比十分位(传送)
MOV 3FH,#00H;占空比百分位(传送)
MOV 40H,#00H
MOV 41H,#00H
MOV 55H,#19H
MOV 56H,#0CH
MOV 57H,#32H
MOV 58H,#19H
MOV 59H,#32H
MOV 5AH,#25
MOV 5BH,#25
MOV R4,#50
MOV TMOD,#01H
MOV TH0 ,#3CH
MOV TL0 ,#0AFH
MOV IE,#92H
SETB TR0
MOV SCON,#80H
MOV PCON,#00H
SETB PS
SETB REN
LCALL INT_LCD
MIAN:
LCALL DISP
LCALL BOXING
LCALL READKEY
LJMP MIAN
JIESHOU:
PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
MOV A,SBUF
;JNB P,ERR
;JNB RB8,ERR ;加上校验不对
CLR RI
MOV 20H,A
SETB 1FH
;LCALL READKEY
ERR:
POP DPL
POP DPH
POP ACC
POP PSW
RETI
DISP: ;显示子程序
MOV R5,#00H
LCALL ZHI
MOV R6,#80H
DISP1:
MOV A,R6
LCALL WCOM
JNB 15H,L01
LJMP L1
L01: JNB 16H,L02
LJMP L1
L02: JNB 17H,L03
LJMP L1
L03: JNB 18H,L04
LJMP L1
L04: JNB 19H,L7
L1: CJNE R5,#18,L2K
MOV A,3BH
LJMP L8
L2K: CJNE R5,#19,L2
MOV A,3CH
LJMP L8
L2: CJNE R5,#20,L3
MOV A,3DH
LJMP L8
L3: JNB 15H,L7
CJNE R5,#26,L4
MOV A,3EH
LJMP L8
L4: CJNE R5,#27,L7
MOV A,3FH
LJMP L8
L5: ;JNB 17H,L7
;CJNE R5,#26,L6
;MOV A,3EH
LJMP L8
L6: CJNE R5,#27,L7
MOV A,3FH
LJMP L8
L7: MOV A,R5
MOVC A,@A+DPTR
L8: LCALL WDATE
INC R5
INC R6
CJNE R5,#16,DISP2
MOV R6,#0C0H
DISP2:
CJNE R5,#32,DISP1
RET
ZHI:
JNB 10H,ZHI1
MOV DPTR,#DISTAB0
AJMP ZHIEND
ZHI1:
JNB 11H,ZHI2
MOV DPTR,#DISTAB1
AJMP ZHIEND
ZHI2:
JNB 12H,ZHI3
MOV DPTR,#DISTAB2
AJMP ZHIEND
ZHI3:
JNB 13H,ZHI4
MOV DPTR,#DISTAB3
AJMP ZHIEND
ZHI4:
JNB 14H,ZHI5
MOV DPTR,#DISTAB4
AJMP ZHIEND
ZHI5:
JNB 15H,ZHI6
MOV DPTR,#DISTAB5
MOV R3,34H
LCALL BCDZH
LCALL BCDZH1
AJMP ZHIEND
ZHI6:
JNB 16H,ZHI7
MOV DPTR,#DISTAB6
MOV R3,35H
LCALL BCDZH
AJMP ZHIEND
ZHI7:
JNB 17H,ZHI8
MOV DPTR,#DISTAB7
MOV R3,36H
LCALL BCDZH
AJMP ZHIEND
ZHI8:
JNB 18H,ZHI9
MOV DPTR,#DISTAB8
MOV R3,37H
LCALL BCDZH
AJMP ZHIEND
ZHI9:
JNB 19H,ZHIEND
MOV DPTR,#DISTAB9
MOV R3,38H
LCALL BCDZH
ZHIEND:
RET
INT_LCD:
LCALL DELAY5MS
LCALL DELAY5MS
LCALL DELAY5MS
MOV A,#38H
LCALL WCOM_NC;不检测忙信号
LCALL DELAY5MS
MOV A,#38H
LCALL WCOM_NC
LCALL DELAY5MS
MOV A,#38H
LCALL WCOM ;忙检测
LCALL DELAY5MS
MOV A,#0CH
LCALL WCOM
LCALL DELAY5MS
MOV A,#06H
LCALL WCOM
LCALL DELAY5MS
MOV A,#01H
LCALL WCOM
LCALL DELAY5MS
RET
WCOM_NC:;不忙检测子程序
MOV P1,A
CLR E
NOP
NOP
CLR RS
CLR RW
SETB E
LCALL DELAY250us
CLR E
RET
WCOM:;写指令子程序
LCALL CHECKBUSY
LCALL WCOM_NC
RET
WDATE:;写数据子程序
LCALL CHECKBUSY
MOV P1,A
CLR E
NOP
NOP
SETB RS
CLR RW
SETB E
LCALL DELAY250us
CLR E
RET
CHECKBUSY:;忙检测子程序
PUSH ACC
MOV P1,#0FFH
CLR E
NOP
NOP
CLR RS
SETB RW
SETB E
BUSYLOOP:
NOP
JB P1.7,BUSYLOOP
CLR E
POP ACC
RET
BCDZH:
PUSH DPH
PUSH DPL
MOV A,R3
MOV B,#100
DIV AB
MOV 3BH,A
MOV A,#10
XCH A,B
DIV AB
MOV 3CH,A
MOV 3DH,B
MOV DPTR,#DISTABA
MOV A,3BH
MOVC A,@A+DPTR
MOV 3BH,A
MOV A,3CH
MOVC A,@A+DPTR
MOV 3CH,A
MOV A,3DH
MOVC A,@A+DPTR
MOV 3DH,A
POP DPL
POP DPH
RET
BCDZH1:
PUSH DPH
PUSH DPL
MOV A,39H
MOV B,#10
DIV AB
MOV 3EH,A
MOV 3FH,#00H
MOV DPTR,#DISTABA
MOV A,3EH
MOVC A,@A+DPTR
MOV 3EH,A
MOV A,3FH
MOVC A,@A+DPTR
MOV 3FH,A
POP DPL
POP DPH
RET
BOXING:
JNB 15H,BX1
LCALL FANG
LJMP BOXINGEND
BX1: JNB 16H,BX2
LCALL TIXING
LJMP BOXINGEND
BX2: JNB 17H,BX3
LCALL JUCHI
LJMP BOXINGEND
BX3: JNB 18H,BX4
LCALL SANJIAO
LJMP BOXINGEND
BX4: JNB 19H,BOXINGEND
LCALL ZHENXIAN
BOXINGEND:
;CLR 1FH
RET
FANG:
MOV DPTR,#7FFFH ;通过高低电平地的变化来输出方波
MOV A,#00H
MOVX @DPTR,A ;向选通地址送低电平地
MOV 53H,55H
MOV 45H,5BH
LCALL DELAY11
MOV A,#0FFH
MOVX @DPTR,A ;向选通地址送高电平
MOV 53H,55H
MOV 45H,5AH
LCALL DELAY11
JB 1FH,FANGEND
LJMP FANG
FANGEND:
RET
TIXING:
MOV DPTR,#7FFFH
MOV A,#00H
LOOP2: MOV 53H,56H
LCALL DELAY10
MOVX @DPTR,A ;选通地址
INC A ;延时
CJNE A,#0FFH,LOOP2;每次以19H的梯度增加
DOWN: MOV 53H,56H
LCALL DELAY13
LOOP3:DEC A
MOV 53H,56H
LCALL DELAY10
MOVX @DPTR,A
CJNE A,#00H,LOOP3
MOV 53H,56H
LCALL DELAY13
JB 1FH,TIXINGEND
LJMP TIXING
TIXINGEND:
RET
JUCHI:
MOV DPTR,#7FFFH ;选通地址
DA0:MOV A,#00H;初值放在R6
DA1:MOVX @DPTR,A
INC A
MOV 53H,57H
LCALL DELAY10
CJNE A,#0FFH,DA1
JB 1FH,JUCHIEND
LJMP JUCHI
JUCHIEND:
RET
SANJIAO:
MOV DPTR,#7FFFH ;选通地址
STR1: MOV A,#00H ;通过上升和下降来产生三角波
STR2: MOV 53H,58H
LCALL DELAY10
MOVX @DPTR,A ;电压随时间上升
INC A
CJNE A,#0FFH,STR2
STR3: DEC A
MOV 53H,58H
LCALL DELAY10 ;电压随时间下降
MOVX @DPTR,A
CJNE A,#00H,STR3
JB 1FH,SJEND
LJMP SANJIAO
SJEND:
RET
ZHENXIAN:
;LCALL D8MS
MOV R1,#00H ;取表格初值
LOOP: MOV A,R1 ;在表格里取数送到指定地址
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV DPTR,#7FFFH
MOVX @DPTR,A
INC R1
MOV 53H,59H
LCALL DELAY10
JB 1FH,ZXEND
LJMP LOOP ;表格加一
ZXEND:
RET
READKEY: JNB 1FH,READKEYEND
READKEY0:
JB 00H,READKEY1
LCALL K0
READKEY1:
JB 01H,READKEY2
LCALL K1
READKEY2:
JB 02H,READKEY3
LCALL K2
READKEY3:
JB 03H,READKEY4
LCALL K3
READKEY4:
JB 04H,READKEY5
LCALL K4
READKEY5:
JB 05H,READKEYEND
LCALL K5
READKEYEND:
CLR 1FH
RET
K0:;查看主目录键
LCALL DELAY
JB 00H,K0END
SETB 08H
CLR 0BH
CLR 0CH
CLR 0DH
MOV 40H,#00H
MOV 41H,#01H
MOV 22H,#02H
MOV 23H,#00H
K0END:
RET
K1:;"+"
LCALL DELAY
JB 01H,K10
LJMP K101
K10:LJMP K1END
K101:
SETB 09H
JNB 08H,K15
CLR 0BH
INC 41H
MOV A,41H
K11:
CJNE A,#01H,K12
MOV 22H,#02H
MOV 23H,#00H
LJMP K1END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -