⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01.asm

📁 电子表实现
💻 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 + -