单片机电子时钟汇编语言程序 联系客服

发布时间 : 星期日 文章单片机电子时钟汇编语言程序更新完毕开始阅读1a81486a7e21af45b307a8cc

DEC R0

MOV @R0, A RET

; ; 个位数缓冲单元清\返回

;键盘扫描子程序*************************************************** KEY: LCALL KEYCHULI ; 调键值处理子程序 JZ EXIT LCALL DIR LCALL DIR JZ EXIT

; ; ;

没有键按下转到返回 ;

调显示去抖动

LCALL KEYCHULI MOV B, 20H KEYSF: LCALL KEYCHULI JZ KEY1 LCALL DIR

调键值处理子程序 没有键按下转到返回

; 保存键值

; 调键值处理子程序 ; ; ; ;

键释放,转到恢复键值 ; 调显示子程序延时 等到键释放

键值送20H单元保存 返回 ; ;

保护现场

改变寄存器组号

AJMP KEYSF KEY1: MOV 20H, B EXIT: RET KEYCHULI: PUSH PSW CLR RS1

SETB RS0

MOV P1, #0FFH ; MOV A, P1 ; CPL A ;

先向P1口写1

P1口值送累加器A A值取反

保存P1口的低4位 A值送20H保存 ; ; ;

改变寄存器组号 恢复现场

ANL A, #0FH ; MOV 20H, A ; CLR RS1 CLR RS0 POP PSW

RET

;显示子程序******************************************************** DIR: PUSH PSW ; 恢复现场 SETB RS1

;

改变寄存器组号

CLR RS0

MOV R0, #79H ; MOV R3, #0FBH ; LD0: MOV P2, R3 ; MOV A, @R0 DISP1: ADD A, #1BH MOVC A, @A+PC DISP2: MOV P0, A ; MOV R2, #09H ;

建立显示缓冲区首地址 设置位控码 送位控码

; 缓冲区值送累加器A ; 取段控码并送A中 送段控码

设置延时循环次数

ACALL DEY ; 延时点亮

INC R0 ; MOV A, R3 ; JNB ACC.1, HERE ; JB

ACC.5, LD2

;

RL A RL A

缓冲区地址加1 位控码送A

是否到最高位,是转到返回

不到向显示器高位移位

LD2:RL A

MOV R3, A AJMP LD0 HERE: CLR RS0 CLR RS1 POP PSW RET DBB: DB 0C0H DB 0F9H DB 0A4H DB 0B0H DB 99H DB 92H DB 82H

DB DB DB DB

0F8H 80H 90H 0CH

; 位控值保存到R4中

;

继续扫描 改变寄存器组号

;

; 恢复现场 ; 返回

DB 0FFH

;整点报时********************************************************** BEEP_BL: MOV R6,#100 BL1:CALL BL2 CPL BEEP DJNZ R6,BL1 MOV R5,#25 CALL DEY RET ;返回计时 BL2:MOV R7,#180 BL3:NOP

DJNZ R7,BL3

RET

;延时子程序******************************************************** DEY: PUSH 12H DEY0: PUSH 12H

DEY1: PUSH 12H

DEY2: DJNZ R2, DEY2 POP 12H

DJNZ R2, DEY1

POP 12H

DJNZ R2, DEY0 POP 12H

DJNZ R2, DEY

RET END