




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ORG 0000H AJMP MAIN ORG 000BH AJMP T0_SEV ;执行中断服务 ORG 0300HMAIN: MOV SP,#60H MOV R2,#0 MOV R3,#0H MOV R4,#0 MOV R5,#0 MOV 50H,#0 MOV 51H,#0 MOV 52H,#0 ;相关初始化 SETB P1.0LL11: ACALL KEYI CJNE A,#0AH,CLS ;A键表示开始设置数值 AJMP LACLS: CJNE A,#0EH,LCCLS0: MOV R0,#7EHCLS1: MOV R0,#00H DEC R0 CJNE R0,#78H,CLS1 CLR P1.0 AJMP MAINLC: CJNE A,#0CH,LL11 LJMP CLK ;C键执行闹钟 NOPLA: ;确认就开始输入开始时间 LCALL KEYI MOV A,7AH ;将秒合并成一个10进制数,送到40H内存中 MOV B,#0AH ;算法:先取秒的十位,乘以10加秒的个位,将这个 MUL AB ;10进制数送到相应内存中 ADD A,79H MOV 40H,A MOV A,7CH ;将分合并成一个10进制数,送到41H内存中 MOV B,#0AH MUL AB ADD A,7BH MOV 41H,A MOV A,7EH ;将时合并成一个10进制数,送到42H内存中 MOV B,#0AH MUL AB ADD A,7DH MOV 42H,A MOV R0,#42H LCALL LB LCALL KEYI CJNE A,#0BH,LA ;输入完成之后按B确认 MOV TMOD,#01H ;计数器初始化 MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SETB ET0 SETB EAXIANS: ;显示是一直进行的 LCALL DISP MOV A,42H CJNE A,52H,LAST MOV A,41H CJNE A,51H,LAST MOV A,40H CJNE A,50H,LAST ;判断是否到达闹钟设定的时间, CLR P1.0 LJMP PAUSE ;如果没到时间跳到LAST LCALL DISP ;如果到了闹钟时间则灯亮LAST: ;检测显示过程中有无键按下 MOV DPTR,#0FFDDH MOV A,#00H ;对列全部加低电平即全0 MOVX DPTR,A INC DPTR MOVX A,DPTR CPL A ANL A,#0FH ;屏蔽高四位 JNZ LLD ;有按键,检测是哪个键 AJMP XIANS ;如果没有键,则照常显示LLD: ;检测 ACALL KEYI CJNE A,#0AH,LLC LJMP LALLC: CJNE A,#0CH,LLE AJMP CLKLLE: CJNE A,#0EH,LLF CLR EA AJMP CLS LLF:CJNE A,#0FH,LAST2 AJMP PAUSELAST2: AJMP XIANSLB: MOV A,R0 ;-输入错误自动清零 CLR Cy SUBB A,#23 JNB ACC.7,CLS2 DEC R0 MOV A,R0 CLR Cy SUBB A,#59 JNB ACC.7,CLS2 DEC R0 MOV A,R0 CLR Cy SUBB A,#59 JNB ACC.7,CLS2 RETCLS2: MOV R0,#7EHCLS3: MOV R0,#00H DEC R0 CJNE R0,#78H,CLS3 CLR P1.0 LJMP MAINCLK: LCALL KEYI ;-按C之后跳至以下程序设定闹钟时间 MOV 61H,#1 ;已经设定闹钟的标志位 MOV A,7AH ;将秒合并成一个10进制数,送到50H内存中 MOV B,#0AH ;算法:先取秒的十位,乘以10加秒的个位,将这个 MUL AB ;10进制数送到相应内存中 ADD A,79H MOV 50H,A MOV A,7CH MOV B,#0AH MUL AB ADD A,7BH MOV 51H,A MOV A,7EH MOV B,#0AH MUL AB ADD A,7DH MOV 52H,A MOV R0,#52H ACALL LB ACALL KEYI CJNE A,#0BH,CLK ; 按B键表示闹钟设置完毕 进行显示 AJMP XIANSPAUSE:CLR TR0 ; -以下为暂停程序 关中断 CLR ET0 CLR EA SETB P1.0LE1: CALL DISP ACALL KEYI CJNE A,#0FH,LE1 SETB TR0 SETB ET0 SETB EA AJMP XIANST0_SEV: ; -以下为中断计时程序-计时程序 定时中断 MOV TH0,#3CH MOV TL0,#0B0H ;送计数器初值 PUSH ACC PUSH B PUSH PSW ;压栈保护 SETB psw.4 ;选择寄存器区10 CLR psw.3 INC R2 ;R2存放计过0.1秒的次数 CJNE R2,#10,EN ;满10次,即一秒钟到, MOV R2,#0 ;且R2清零 INC 40H ;40H中放的是秒的十进制数,顾要加1 MOV R3,40H ;R3存放计过1秒的次数 CJNE R3,#60,MIAO ;满60次,即一分钟到,若还未到, MOV 79H,#0 ;跳至MIAO将一个十进制数的秒拆成两个十进制数 MOV 7AH,#0 MOV 40H,#0H MOV R3,#0 ;指向秒的所有单元都回0 INC 41H ;分钟值加1 MOV R4,41H ;R4存放计过1分钟的次数 CJNE R4,#60,FEN ;满60次,即一小时到 MOV R4,#0 MOV 7BH,#0 MOV 7CH,#0 MOV 41H,#0 INC 42H MOV R5,42H CJNE R5,#24,SHI ;小时满24,6个LED全部为0 MOV R5,#0 MOV 7DH,#0 MOV 7EH,#0 MOV 42H,#0 LJMP ENMIAO: ;将一个十进制数的秒拆成两个十进制数 MOV A,R3 MOV B,#10 DIV AB MOV 79H,B MOV 7AH,A ;分别将秒的个十位送缓冲 LJMP ENFEN: ;将一个十进制数的分拆成两个十进制数 MOV A,R4 MOV B,#10 DIV AB MOV 7BH,B ;分别将分的个十位送缓冲区 MOV 7CH,A LJMP ENSHI: ;将一个十进制数的小时拆成两个十进制数 MOV A,R5 MOV B,#10 DIV AB MOV 7DH,B MOV 7EH,A ;分别将小时的个十位送缓冲区EN: POP PSW ;退出 出栈 POP B POP Acc SETB EA RETI ;中断服务结束DISP: ;LED显示程序 ;SETB PSW.3 ;选择寄存器区11 ;SETB PSW.4 MOV R0,#7EH ;R0:指向缓存区 MOV R2,#20H ;R2:扫描,字位码DISP_BGN: MOV A,R0 MOV DPTR,#DISTAB MOVC A,A+DPTR ;查表取初值 MOV DPTR,#0FFDCH MOVX DPTR,A ;送字形 MOV A,R2 MOV DPTR,#0FFDDH MOVX DPTR,A ;送字位 CALL DELAY_1MS DEC R0 ;缓存指针-1 JB ACC.0,DIS_OVER ;到最后一个LED,返回 RR A MOV R2,A ;否则移位后字位码送回R2 AJMP DISP_BGN ;显示下一个LEDDELAY_1MS: ;1MS延时 MOV R3,#10DELY0: MOV R4,#50DELY1: DJNZ R4,DELY1 DJNZ R3,DELY0 RETDISTAB: ;字形表 DB 0C0H ;0 DB 0F9H ;1 DB 0A4H ;2 DB 0B0H ;3 DB 99H ;4 DB 92H ;5 DB 82H ;6 DB 0F8H ;7 DB 80H ;8 DB 90H ;9DIS_OVER:NOP RETKEYI: ; 以下为键盘扫描程序 4*4键盘程序 MOV R1,#7EHLK0: ACALL KS1 ;调用KS1,判断有无按键 JNZ LK1 ;A不为0,说明有键按下 到LK1读取键值NI: ACALL DISP AJMP LK0 ;先显示,显示里有延时程序,这就相当于延时消抖LK1: ACALL DISP ;读键值 ACALL DISP ACALL KS1 JNZ LK2 ACALL DISP AJMP LK0LK2: MOV R2,#0FEH ;计算键值的算法 MOV R4,#00HLK4: MOV R3,#01H MOV A,R3 MOV DPTR,#0FFDDH MOV A,R2 MOVX DPTR,A INC DPTR MOVX A,DPTR JB ACC.0,LONE MOV A,#00H AJMP LKPLONE: JB ACC.1,LTW0 MOV A,#08H AJMP LKPLTW0: JB ACC.2,LTHR MOV A,#10H AJMP LKPLTHR: JB ACC.3,NEXT MOV A,#18HLKP: ADD A,R4 PUSH ACCLK3: ACALL DISP ACALL KS1 JNZ LK3 POP ACC MOV DPTR,#TAB2 MOVC A,A+DPTR CJNE A,#0AH,K0 JMP RET1K0: CJNE A,#0BH,K1 JMP RET1K1: CJNE A,#0CH,K2 JMP RET1K2: CJNE A,#0EH,K3 JMP RET1K3: CJNE A,#0FH,K4 JMP RET1K4: CJNE A,#0DH,GOON CJNE R1,#7EH,K5 JMP KEYIK5: INC R1 MOV R1,#0H CJNE R1,#7EH,LK0 JMP KEYIGOON: MOV R1,A DEC R1 CJNE R1,#78H,LK0RET1: RETN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浮式储卸油装置涂料项目可行性研究报告
- 2025-2026学年统编版(2024)小学语文二年级上册第二单元核心知识点归纳
- 防汛救灾知识培训
- 建筑3D打印施工工艺研究
- 资产管理合同
- 防暴车基础知识培训课件
- 版权使用许可合同
- 营销策略优化算法-洞察及研究
- 基于机器学习的故障诊断算法设计-洞察及研究
- 房屋转让标准合同5篇
- 垃圾的危害教学课件
- 寻找闪闪发光的自己(主题班会)课件
- 卷烟送货员安全培训课件
- 2025至2030年中国招投标行业发展潜力分析及投资战略咨询报告
- GB 26488-2025镁合金压铸安全生产规范
- 抖音达人签约合同协议书
- 2025年园林绿化技术员职业技能考核试题及答案解析
- 2025年军事模型行业研究报告及未来行业发展趋势预测
- 2025安徽宣城市总工会招聘社会化工会工作者13人笔试参考题库附答案解析
- 北京数语科技Datablau数据模型与数据资产平台介绍
- 人体对外界环境的感知+课件-2025-2026学年人教版生物八年级上册
评论
0/150
提交评论