📄 01.asm
字号:
/*
本段程序为开发板调试程序,实现功能:LED以及DPY显示和键盘的扫描输入。____OK
*/
T0_01 EQU 20H//宏定义
T0_02 EQU 21H
T0_03 EQU 22H
ORG 0000H
SJMP MAIN
ORG 0003H
RETI
ORG 000BH
LJMP T0_INTR
MAIN:/*主程序功能:扫描键盘输入*/
MOV SP,#60H//初始化程序
MOV TMOD,#11H//定义T0的工作方式:16位计数器。
setb EA
SETB ET0//允许定时器0中断
LCALL DPY_INIT_DISP//开始自检显示
LCALL LED_INIT_DISP
LCALL BUZZER
lcall BUZZER
ORL P1,#03EH//初始化键盘
CPL P1.1
KEY:
JNB P1.2,SW_01//查询"按键输入"
KEY_02:
JNB P1.3,SW_02
KEY_03:
JNB P1.4,SW_03
KEY_04:
JNB P1.5,SW_04
SJMP KEY
SW_01: //对应的散转程序,实现不同按键输入
LCALL LED_INIT_DISP
SJMP KEY_02
SW_02:
LCALL DPY_INIT_DISP
SJMP KEY_03
SW_03:
LCALL NUMBER_DISP
SJMP KEY_04
SW_04:
LCALL LIGHT
SJMP KEY
DPY_INIT_DISP://DPY显示
anl P2,#0F0H//低电平实现DPY驱动,开始显示
MOV A,#01H
MOV R5,#08H
DPY_INIT_DISP_01://逐位显示
MOV P0,A
LCALL DELAY
RR A
DJNZ R5,DPY_INIT_DISP_01
MOV R5,#2
DPY_INIT_DISP_02://全部显示
MOV A,#0FFH
MOV P0,A
LCALL DELAY
MOV P0,#00H
DJNZ R5,DPY_INIT_DISP_02
orl P2,#00FH//关闭显示
LCALL DELAY
RET
LED_INIT_DISP://初始化流水灯显示
SETB P2.4
SETB P2.5
CPL P2.4//启动245
MOV A,#080H
CLR C
LED_INIT_DISP_01:
MOV P0,A
LCALL DELAY
RRC A
JNZ LED_INIT_DISP_01
MOV A,#01H
clr c
LED_INIT_DISP_02:
MOV P0,A
LCALL DELAY
RLC A
JNZ LED_INIT_DISP_02
SETB P2.4//关闭245
RET
NUMBER_DISP:
MOV TL0,#0B0H
MOV TH0,#3CH
MOV R4,#03H
SETB TR0
MOV T0_01,#0
MOV A,T0_01
NUMBER_DISP_01:
CJNE A,#61,NUMBER_DISP_02//判断1分钟到?
MOV T0_01,#0//保存计数累加的值
MOV T0_02,#0
MOV T0_03,#0//保存秒计数值
SJMP NUMBER_DISP_END
NUMBER_DISP_02:
MOV DPTR,#TAB_DPY//查表基地址
MOV A,T0_01
MOV B,#10
DIV AB
MOV T0_02,B
MOV T0_03,A//16进制转换为10进制
MOV A,T0_02//动态显示方式
MOVC A,@A+DPTR
MOV P0,A
CLR P2.3
LCALL DIMS
SETB P2.3
MOV A,T0_03
MOVC A,@A+DPTR
MOV P0,A
CLR P2.2
LCALL DIMS
SETB P2.2
MOV A,T0_01
SJMP NUMBER_DISP_01
NUMBER_DISP_END:
CLR TR0//停止定时(按照任务的不同来规定)
RET
T0_INTR: //定时中断
MOV TL0,#0B0H//重新启动定时器
MOV TH0,#3CH
SETB TR0
T0_INTR_01:
CJNE R4,#0,UN_SEC//1S是否到
MOV R4,#03
MOV A,T0_01
INC A
MOV T0_01,A
SJMP T0_INTR_END
UN_SEC:
DEC R4
T0_INTR_END:
RETI
BUZZER://“BUZZER”叫一声
CPL P1.0//低电平驱动.
LCALL DELAY
SETB P1.0
LCALL DELAY
RET
LIGHT:
SETB P2.4
SETB P2.5
CPL P2.4//启动245
MOV P0,#01
LCALL DELAY
SETB P2.4//关闭245
RET
DELAY://延时子程序
MOV R7,#0
DELAY_02:
MOV R6,#0
DELAY_01:
DJNZ R6,DELAY_01
DJNZ R7,DELAY_02
RET
DIMS:
MOV R7,80
DJNZ R7,$
RET
TAB_DPY:
DB 0E7H,84H,0D3H,0D6H,0B4H,76H,77H,0C4H,0F7H,0F6H;0,1,2,3,4,5,6,7,8,9
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -