单片机电子时钟汇编语言程序.doc

上传人:豆**** 文档编号:24036210 上传时间:2022-07-03 格式:DOC 页数:41 大小:162.50KB
返回 下载 相关 举报
单片机电子时钟汇编语言程序.doc_第1页
第1页 / 共41页
单片机电子时钟汇编语言程序.doc_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《单片机电子时钟汇编语言程序.doc》由会员分享,可在线阅读,更多相关《单片机电子时钟汇编语言程序.doc(41页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date单片机电子时钟汇编语言程序单片机电子时钟汇编语言程序51单片机架构下时钟控制程序;KEYA A键功能程序 开启/关闭定时器 ;KEYB B键功能程序 时值加1;KEYC C键功能程序 分值加1;KEYDD键功能程序 秒值加1;KEYEE键功能程序 12/24时值转换;BEEP_BL整点报时;P0 显示接口 ;系统初始化程序* KEYA EQU P3.0 ;单片机控制设

2、置 KEYB EQU P3.1 ;单片机控制设置 KEYC EQU P3.2 ;单片机控制设置 KEYD EQU P3.3 ;单片机控制设置 KEYE EQU P3.4 ;单片机控制设置 BEEP EQU P3.7 ;单片机控制设置 ORG 0000H AJMP MAIN;转到系统初始化程序 ORG 000BH AJMP PITO;转到定时器0中断服务程序 ORG 0100H MAIN: MOV SP, #60H;确立堆栈区 MOV TMOD, #01H;设定定时器0为工作方式1 MOV TL0, #0DCH;装计数器初值 MOV TH0, #0BH CLR 21H.0 CLR TR0;TR0

3、置0,定时关闭 SETB EA;EA置1,中断总允许 SETB ET0 ; ET0置1,定时器0中断 ; 允许 MOV 30H, #10H;循环次数 MOV 7EH, #0AH;P.点显示初始化 MOV R0, #79H MOV R1, #05H PP: MOV R0, #0BH INC R0 DJNZ R1, PP MOV R0, #31H;时、分、秒值存储单元清零 MOV R1, #06H Q00: MOV R0, #00H INC R0 DJNZ R1, Q00;监控程序* LOOP: LCALL DIR;调显示子程序 LCALL KEY ;调键扫描子程序 LOOP1: JB 20H.0

4、, KEYA ; A键是否按下,是跳转到A键功能程序 开启/关闭定时器 JB 20H.1, KEYB ; B键是否按下,是跳转到B键功能程序 时值加1 JB 20H.2, KEYC ; C键是否按下,是跳转到C键功能程序 分值加1 JB 20H.3, KEYD ; D键是否按下,是跳转到D键功能程序 秒值加1JB 20H.4, KEYE ; E键是否按下,是跳转到E键功能程序 12/24时值转换 LCALL DIR LJMP LOOP;跳转到监控程序;A键功能子程序* KEYA: CPL TR0 ;开启/关闭定时器 SETB 21H.0 AJMP LOOP ;返回;B键功能子程序* KEYB:

5、 JB TR0, KEYB1 ; 定时器是否运行,是跳转 JNB 21H.0, KEYB2 MOV R0, #36H; 时值存储单元地址送R0 LCALL DAAD1 ; 调加1子程序 MOV A, R3 ; 时值加1后的值送累加器ALCALL BEEP_BL ; 整点报时 XRL A, #12H ;时值是否到12时JNZ KEYB0 ; BACK: XRL A, #24H;判是否到24时 JNZ KEYB1 ; 时值是否到24时,否返回 LCALL CLR0; 时值存储单元清零 KEYB0: JB 20H.4, KEYB1; 是否启用12时值,否返回 LCALL CLR0; 时值存储单元清零

6、 KEYB1: MOV 7DH, 35H MOV 7EH, 36H KEYB2: LJMP LOOP; 返回监控程序;C键功能子程序* KEYC: JB 8CH, KEYC1 ; 定时器是否运行,否跳转 JNB 21H.0, KEYC2 MOV R0, #34H; 分值存储单元地址送R0 LCALL DAAD1; 调加1子程序 MOV A, R3; 分值加1后的值送累加器A XRL A, #60H ; JNZ KEYC1; 分值是否到60分,否返回 LCALL CLR0; 分值存储单元清零 KEYC1: MOV 7CH, 34H MOV 7BH, 33H KEYC2: LJMP LOOP; 返

7、回监控程序;D键功能子程序* KEYD: JB 8CH, KEYD1 ; 定时器是否运行,否跳转 JNB 21H.0, KEYD2 MOV R0, #32H ; 秒值存储单元地址送R0 LCALL DAAD1 ; 调加1子程序 MOV A, R3 ; 秒值加1后的值送R0 XRL A, #60H JNZ KEYD1;秒值是否到60秒,否返回 LCALL CLR0;秒值存储单元清0 KEYD1: MOV 79H, 31H MOV 7AH, 32H KEYD2: LJMP LOOP;返回监控程序;中断服务程序* PITO: PUSH PSW;中断服务程序,现场保护 PUSH A SETB RS0;

8、选第三组通用寄存器 SETB RS1 MOV TL0, #0DCH;计数器重新加载 MOV TH0, #0BH MOV A, 30H;循环次数减1 DEC A MOV 30H, A JNZ RETO;不满16次,转RET0返回 MOV 30H, #10H;满16次开始计时操作 MOV R0, #32H;秒显示单元地址 ACALL DAAD1;秒加1 MOV A, R3;加1后秒值在R3中 XRL A, #60H;判是否到60秒 JNZ RETO;不到转RET0返回 ACALL CLR0;到60秒显示单元清0 MOV R0, #34H;分显示单元地址 ACALL DAAD1;分加1 MOV A,

9、 R3;加1后分值在R3中 XRL A, #60H;判是否到60分 JNZ RETO;不到转RET0返回 ACALL CLR0;到60分显示单元清0 MOV R0, #36H;时显示单元地址 ACALL DAAD1;时加1 MOV A, R3 ;加1后时值在R3中LCALL BEEP_BL; 整点报时 XRL A, #12H ; 时值是否到12时JNZ KEYB3 ; XRL A, #24H;判是否到24时 JNZ RETO;不到转RET0返回 ACALL CLR0;到24时显示单元清0 KEYB3:JB 20H.4, RETO; 是否启用12时值,否返回 ACALL CLR0; 时值存储单元

10、清零 RETO: CLR RS0;返回第0组通用寄存器 CLR RS1 POP A;现场恢复 POP PSWMOV 79H, 31H;时、分、秒值放缓冲区 MOV 7AH, 32H MOV 7BH, 33H MOV 7CH, 34H MOV 7DH, 35H MOV 7EH, 36H RETI ;中断返回;加1子程序* DAAD1: MOV A, R0 ; 加1子程序,十位送A DEC R0 SWAP A;十位数占高4位 ORL A, R0;个位数占低4位 ADD A, #01H;加1 DA A;十进制调整 MOV R3, A;全值暂存R3中 ANL A, #0FH;屏蔽十位数,取出个位数 M

11、OV R0, A;个位值送显示缓冲单元 MOV A, R3 INC R0 ANL A, #0F0H;屏蔽个位数取出十位数 SWAP A;使十位数占低四位 MOV R0, A;十位数送缓冲单元 RET;返回 CLR0: CLR A;清缓冲单元子程序 MOV R0, A;十位缓冲单元清0 DEC R0 MOV R0, A;个位数缓冲单元清0 RET;返回 ;键盘扫描子程序* KEY: LCALL KEYCHULI;调键值处理子程序 JZ EXIT;没有键按下转到返回 LCALL DIR LCALL DIR;调显示去抖动 LCALL KEYCHULI;调键值处理子程序 JZ EXIT;没有键按下转到

12、返回 MOV B, 20H ;保存键值 KEYSF: LCALL KEYCHULI;调键值处理子程序 JZ KEY1;键释放,转到恢复键值 LCALL DIR;调显示子程序延时 AJMP KEYSF;等到键释放 KEY1: MOV 20H, B;键值送20H单元保存 EXIT: RET;返回 KEYCHULI: PUSH PSW;保护现场 CLR RS1;改变寄存器组号 SETB RS0 MOV P1, #0FFH;先向P1口写1 MOV A, P1;P1口值送累加器A CPL A;A值取反 ANL A, #0FH;保存P1口的低4位 MOV 20H, A;A值送20H保存 CLR RS1;改

13、变寄存器组号 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; 缓冲区值送累加器A DISP1: ADD A, #1BH MOVC A, A+PC;取段控码并送A中 DISP2: MOV P0, A;送段控码 MOV R2, #09H;设置延时循环次数 ACALL DEY;延时点亮 INC R0;缓冲区地址加1 MOV A, R3;位控

14、码送A JNB ACC.1, HERE;是否到最高位,是转到返回 JBACC.5, LD2 RL A RL A;不到向显示器高位移位 LD2:RL A MOV R3, A; 位控值保存到R4中 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 0F8H DB 80H DB 90H DB 0CH 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-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com