下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、; 程序清单 ; 标题:电子钟- ; 设计者:闫向阳- ; 时间:2010.07.29 ;LED数码管显示器设定- ;P0.7-P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a ;* ;P2.7-P2.0位控线,从右至左(LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7 ;时十位,时个位,分十位,分个位,秒十位,秒个位对应的储存单元是(77H,76H,75H,74H,73H,72H) ;键值放在20H单元 ;s2-s9的键值分别放在(20H.0,20H.1,20H.2,20H.3,20H.4,20H.5,20H.6,20H.7) ;20H.0-20
2、H.7对于的伪定义是 S2B-S9B ;F0启动停止判断位 23H.0 停止是否按下判断位 23H.1启动第一次按下判断 ;寄存器第零组为监控程序 ,寄存器第一组为显示程序 ,寄存器第二组为中断程序 ;定时器1中断方式工作 定时50ms 方式1工作 ;堆栈初始化在80H ORG 0000H START: LJMP MAIN ;主程序入口地址 ORG 000BH LJMP TC0 ORG 001BH LJMP TC1 ORG 0030H MAIN: MOV SP, #80H ;确立堆栈区 ;* ;时分秒的十位和个位分别伪定义 SECGE EQU 72H SECSHI EQU 73H FENGE
3、EQU 74H FENSHI EQU 75H SHIGE EQU 76H SHISHI EQU 77H ;* ;键值伪定义 S2B BIT 20H.0 S3B BIT 20H.1 S4B BIT 20H.2 S5B BIT 20H.3 S6B BIT 20H.4 S7B BIT 20H.5 S8B BIT 20H.6 S9B BIT 20H.7 CLR 23H.4 ;启动停止判断位 CLR 23H.0 ;停止是否按下判断位 CLR 23H.1 CLR 23H.2 ;调整键按下判断位 CLR 23H.3 ;定时5秒是否到 ;* ;定时器初始化 MOV TMOD , #11H MOV TH0 ,
4、#3CH MOV TL0 , #0B0H MOV TH1 , #3CH MOV TL0 , #0B0H MOV IE , #8AH ;允许定时器0中断 ,定时器1中断 ;* MOV PSW , #00H ; psw初始化 MOV R0 , #20H ;RAM区首地址 MOV R7 , #5FH ;RAM区单元个数 ML: MOV R0 , #00H ;RAM初始化 INC R0 DJNZ R7, ML PUSH PSW ;改变当期寄存器为2组 SETB RS1 CLR RS0 MOV R1 ,#200 MOV R5, #20 ;设定中断服务程序循环次数 MOV R6,#0 ;判调整键按下的次数
5、 MOV R7,#25 ;按键是若不松开调显示的次数 POP PSW TSF : MOV DPTR , #DISBH ;系统初始化后提示符“P.”字符代码表首地址 MOV R5 , #08H MOV R0 , #78H DISPTSF:CLR A MOVC A , A+DPTR MOV R0 , A INC R0 INC DPTR DJNZ R5 , DISPTSF ;调显示子程序显示提示符“P.” TT: LCALL DISP LCALL KEY MOV A , 20H ;* ;键判断程序 JB S2B , S2 JB S3B , SA3 JB S4B , SA4 JB S5B , S5 J
6、B S6B , S6 JB S7B , S7 JB S8B , S8 JB S9B , S9 LJMP TT ;* ;键功能程序 SA3: LJMP S3 SA4 : LJMP S4 S5 : NOP LJMP TT S6 : NOP LJMP TT S7 : NOP LJMP TT S8 : NOP LJMP TT S9 : NOP LJMP TT ;启动停止键功能程序 S2 : PUSH PSW ;改变通用寄存器组为2组 SETB RS1 CLR RS0 JB 23H.0 ,SZT JB 23H.4 , S2TZ ;F0为0执行启动程序,否则转向停止程序 SETB 23H.4 SETB T
7、R0 CLR 23H.2 JB 23H.1, S2D1 ;23H.1为1转向启动程序结束 SETB 23H.1 ;第一次启动电子钟,标志位置1 MOV SECSHI ,#0 MOV SECGE ,#0 MOV FENSHI ,#0 MOV FENGE ,#0 MOV SHISHI ,#0 MOV SHIGE ,#0 S2D1: LCALL KEY ;判键是否松开 JB S2B ,S2D1 LJMP SS2 S2TZ: CLR TR0 ;停止程序 SETB 23H.0 CLR 23H.4 S2D2: LCALL KEY ;判键是否松开 JB S2B ,S2D2 LJMP SS2 SZT: JNB
8、 23H.0 ,SS2 ;判停止键是否按下,没有按下转向结束程序 SETB TR1 SETB 23H.2 ;调整键按下,置1 CJNE R6 ,#00H ,S2S ;是第一次按下调整键吗 INC R6 ;调整键的次数加1 S2S1: LCALL KEY JB S2B ,S2S1 LJMP SS2 S2S: CJNE R6 ,#01H ,S2F ;是第二次按下调整键吗 INC R6 ;调整键次数加1 S2S2: LCALL KEY JB S2B ,S2S2 LJMP SS2 S2F: MOV R6 ,#00H ;第三次按下调整键,把按下调整键的次数置0 S2S3: LCALL KEY JB S2
9、B ,S2S3 SS2: LCALL TAKE POP PSW LJMP TT ;* ;加1键功能程序 S3:PUSH PSW ;改变通用寄存器为2组 SETB RS1 CLR RS0 JNB 23H.2 ,S3G ;判调整键是否按下 CJNE R6, #01H ,S3F ;停止键按下的次数是1次吗? LCALL TAKE3 ;时加1 CJNE R2 , #24H, S3D1 ;24小 时到了吗 MOV SHISHI ,#00H MOV SHIGE ,#00H S3D1:LCALL DISP ;延时0.2秒 DJNZ R7 , S3D1 MOV R7 ,#25 LJMP S3G S3F: CJ
10、NE R6 ,#02H ,S3M ;停止键按下的次数是2次吗? LCALL TAKE2 ;分加1 CJNE R3 ,#60H , S3D2 ;60分到了吗 MOV FENSHI ,#00H MOV FENGE ,#00H S3D2: LCALL DISP ;延时0.2秒 DJNZ R7 ,S3D2 MOV R7 ,#25 LJMP S3G S3M: LCALL TAKE1 ;秒加1 CJNE R4 ,#60H ,S3D3 ;60秒到了吗 MOV SECSHI ,#00H MOV SECGE ,#00H S3D3: LCALL DISP ;延时0.2秒 DJNZ R7 , S3D3 MOV R7
11、 ,#25 S3G: LCALL TAKE POP PSW LJMP TT ;* ;减1键功能程序 S4:PUSH PSW SETB RS1 CLR RS0 JNB 23H.2 ,S4G CJNE R6, #01H ,S4F ;停止键按下的次数是1次吗 S4DY :LCALL TAKE7 ;时减1 S4D1:LCALL DISP ;延时0.2秒 DJNZ R7 , S4D1 MOV R7 ,#25 LJMP S4G S4F: CJNE R6 ,#02H ,S4M ;停止键按下的次数是2次吗 LCALL TAKE6 ;分减1 S4D2: LCALL DISP DJNZ R7 ,S4D2 MOV
12、R7 ,#25 LJMP S4G S4M: CJNE R6 ,#00H ,S4G ;停止键按下的次数是3次吗 LCALL TAKE5 ;秒减1 S4D3: LCALL DISP DJNZ R7 , S4D3 MOV R7 ,#25 S4G: LCALL TAKE POP PSW LJMP TT ;* ; ;常数表格区- ; ;系统初始化后提示符“P.”字符代码表 DISBH: DB 10H,10H,10H,10H,10H,10H,10H,11H ;提示符“P.”字符序号 ; ;显示字符段选码表(共阳极代码 TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8
13、H,80H ;0-8 DB 90H, 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH ;9,A,B,C,D,E,F,灭,p. ,- ;* ;延时1毫秒子程序 DL: MOV R7, #02H DL1: MOV R6, #0FFH DL2: DJNZ R6, DL2 DJNZ R7, DL1 RET ;* ;显示子程序 ;入口:78H,79H,7AH,7BH,7CH,7DH,7EH,7FH DISP: PUSH DPH PUSH DPL PUSH ACC PUSH PSW CLR RS1 ;改变当前寄存器组为组1 SETB RS0 MOV R1, #78H ;显示
14、缓冲存储单元首地址 MOV R2, #0FEH ;从右至左显示 DISP1: MOV A, R1 MOV DPTR, #TAB MOVC A, A+DPTR MOV P0, A ;送段控 MOV P2, R2 ;送位控 LCALL DL ; 延时1毫秒 MOV A, R2 JNB ACC.7, DISP2 RL A INC R1 MOV R2, A LJMP DISP1 DISP2: POP PSW ;恢复当前寄存器组的组号 POP ACC POP DPL POP DPH RET ;* ;8个按键S2至S9分别依次接在P1.0至P1.7口线 ;键扫子程序KEY ;出口:B,20H KEY: L
15、CALL KEYCHULI ;调键处理子程序 JZ EXIT LCALL DISP ;去抖动 LCALL DISP LCALL KEYCHULI ;调键处理子程序 JZ EXIT ; MOV B, 20H ;保存键值 KEYSF: LCALL KEYCHULI ;调键处理子程序 JZ KEY1 ;按键释放,准备退出KEY子程序 LCALL DISP KEY1: MOV 20H, B ;恢复键值 EXIT: RET ; ;键处理子程序KEYCHULI ;出口:A,20H KEYCHULI: MOV P1, #0FFH ;先向P1口写1 MOV A, P1 CPL A MOV 20H, A ;保存
16、取反后的键值 RET ;* ;* ;显示处理子程序 TAKE : MOV 7fH ,SHISHI MOV 7eH ,SHIGE MOV 7dH ,#12H MOV 7cH ,FENSHI MOV 7bH ,FENGE MOV 7aH ,#12H MOV 79H ,SECSHI MOV 78H ,SECGE RET ;* ;数字处理子程序 TAKE1: PUSH PSW ;秒加1子程序 SETB RS1 ;改变当期寄存器为2组 CLR RS0 MOV A, SECSHI SWAP A MOV R4 ,A MOV A, SECGE ORL A,R4 ADD A, #01H DA A MOV R4
17、,A SWAP A ANL A, #0FH MOV SECSHI ,A MOV A, R4 ANL A, #0FH MOV SECGE ,A POP PSW RET TAKE2: PUSH PSW ;分加1子程序 SETB RS1 CLR RS0 MOV A, FENSHI SWAP A MOV R3 ,A MOV A, FENGE ORL A,R3 ADD A ,#01H DA A MOV R3 ,A SWAP A ANL A, #0FH MOV FENSHI ,A MOV A, R3 ANL A, #0FH MOV FENGE ,A POP PSW RET TAKE3: PUSH PSW
18、;时加1子程序 SETB RS1 CLR RS0 MOV A, SHISHI SWAP A MOV R2 ,A MOV A, SHIGE ORL A,R2 ADD A ,#01H DA A MOV R2,A SWAP A ANL A, #0FH MOV SHISHI ,A MOV A, R2 ANL A, #0FH MOV SHIGE ,A POP PSW RET TAKE5: PUSH PSW ;秒减1程序 SETB RS1 CLR RS1 MOV A, SECSHI SWAP A MOV R4 ,A MOV A, SECGE ORL A,R4 SU BB A ,#01H MOV R4 ,A
19、 SWAP A ANL A, #0FH CJNE A ,#0FH ,LOPM ;秒到00吗? MOV A , #05H LOPM: MOV SECSHI ,A MOV A, R4 ANL A, #0FH CJNE A, #0FH ,LODP ;个位是0吗? SUBB A, #6 LODP:MOV SECGE ,A POP PSW RET TAKE6: PUSH PSW ;分减1程序 SETB RS1 CLR RS1 MOV A, FENSHI SWAP A MOV R3 ,A MOV A, FENGE ORL A,R3 SUBB A ,#01H MOV R3 ,A SWAP A ANL A,
20、#0FH CJNE A ,#0FH , LOPF ;分到00吗? MOV A , #05H LOPF:MOV FENSHI ,A MOV A, R3 ANL A, #0FH CJNE A, #0FH ,LODP1 ;个位是0吗? SUBB A, #6 LODP1:MOV FENGE ,A POP PSW RET TAKE7: PUSH PSW ;时减1程序 SETB RS1 CLR RS1 MOV A, SHISHI SWAP A MOV R2 ,A MOV A, SHIGE ORL A,R2 SUBB A ,#01H MOV R2 ,A SWAP A ANL A, #0FH CJNE A ,#0FH , LOPS ;时到00吗? MOV SHISHI ,#02H MOV SHIGE ,#03H LJMP LODP3 LOP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保育员项目介绍课件
- 小学科学改变物体在水中的沉和浮
- (2026版)小学反诈工作总结
- 04-07-核函数的基本概念-
- 初三化学溶液与溶解度
- 医疗纠纷与医疗事故
- 2026高中数学教资面试数列专题题库参考答案及解析
- 企业文化的管理课件
- 基于VC++图像处理系统设计与实现
- 九年级化学水的分解与合成
- 医疗康复护理扩容提升工程实施方案解读
- 高三数学一轮复习《数列求和》教学设计
- 2026年基层党支部书记考试题及答案
- 2026年广东省广州市中考数学试题(含解析)
- 2026秋统编版九年级上册道德与法治全册背诵提纲
- 2026年安全员之江苏省C2证(土建安全员)通关考试题库带答案解析
- 双控模板,热力锅炉企业风险管控清单
- 【信息安全】商业秘密定密与防护专项审计计划
- 2026年道路危险货物运输押运人员从业资格考试题库(含答案)
- 2026统考专升本语文:现代汉语教材讲义
- 2026年陕西省中考数学真题含解析
评论
0/150
提交评论