版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、附录一:软件设计中断入口程序ORG 0000HLJMP STARTORG 0003HRETIORG 000BHLJMP INTT0ORG 0013HRETIORG 001BHLJMP INTT1ORG 0023HRETI;程序执行开始地址 ;跳到标号START执行 ;外中断0中断程序入口 ;外中断0中断返回 ;定时器T0中断程序入口 ;跳至INTTO执行 ;外中断1中断程序入口 ;外中断1中断返回 ;定时器T1中断程序入口 ;跳至INTT1执行 ;串行中断程序入口地址 ;串行中断程序返回主 程 序START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BHcl
2、r P3.7 ;CLEARDISP: MOV R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清20H(标志用)MOV 7AH,#0AH ;放入"熄灭符"数据MOV TMOD,#11H ;设T0、T1为16位定时器MOV TL0,#0B0H ;50MS定时初值(T0计时用) MOV TH0,#3CH ;50MS定时初值MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用) MOV TH1,#3CH ;50MS定时初值SETB EA ;总中断开放SETB ET0 ;允许T0中断SETB TR0 ;开启T0定时器MO
3、V R4,#14H ;1秒定时用初值(50MS×20) START1: LCALL DISPLAY ;调用显示子程序JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序 SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM1秒计时程序;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重
4、装初值(低8位修正值)MOV A,#3CH ;高8位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退出ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合) CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或
5、等于60秒时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60分时中断退出ACALL CLR0 ;大于或等于60分时分计时单元清0 MOV R0,#79H ;指向小时计时单(78H-79H) ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于12小时中断退出ACALL CL
6、R0 ;大于或等于12小时小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移 MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放T0中断RETI ;中断返回闪动调时程序;T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护PUSH PSW ;MOV TL1, #0B0H ;装定时器T1定时初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50M
7、S中断6次) MOV R2,#06H ;重装0.3秒定时用初值CPL 02H ;0.3秒定时到对闪烁标志取反 JB 02H,FLASH1 ;02H位为1时显示单元"熄灭" MOV 72H,76H ;02H位为0时正常显示MOV 73H,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场POP ACC ;RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分 MOV 73H,7AH ;显示单元(7
8、2H-73H),将不显示分数据MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ;转中断退出加1子 程 序 ;ADD1: MOV A,R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,R0 ;前一地址中数据放入A中低四位ADD A,#01H ;A
9、加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOV R0,A ;数据放入当削地址单元中RET ;子程序返回清零程序;对计时单元复零用CLR0: CLR A ;清累加器MOV R0,A ;清当前地址单元DEC R0 ;指向前一地址MOV R0,A ;前一地址单元清0RET ;子程序返回时钟调整程序;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器
10、T0中断CLR TR0 ;关闭定时器T0LCALL DL1S ;调用1秒延时程序JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1SET4: JB P3.7,SET3 ;等待键按下LCALL DL05S ;有键按下,延时0.5秒JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态 MOV R0,#77H ;按下时间小于0
11、.5秒加1分钟操作 LCALL ADD1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,HHH ;调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环 LCALL CLR0 ;调整单元数据大于或等于60时清0 CLR C ;清进位标志AJMP SET4 ;跳转到SET4循环CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。开T0中断 SETB TR0 ;开启T0定时器(开时钟)CLOSE: JB P3.7,CLOSE ;无按键按下,等待。LCALL DISPLAY ;有键按下,调显示子程序延时削
12、抖 JB P3.7,CLOSE ;是干扰返回CLOSE等待WAITH: JNB P3.7,WAITH ;等待键释放LJMP START1 ;返回主程序(LED数据显示亮) SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态) SETHH1: JNB P3.7,SET5 ;等待键释放SETB 01H ;小时调整标志置1SET6: JB P3.7,SET7 ;等待按键按下LCALL DL05S ;有键按下延时0.5秒JNB P3.7,SETOUT ;按下时间大于0.5秒退出时间调整MOV R0,#79H ;按下时间小于0.5秒加1小时操作 LCALL ADD1 ;调加1子程序MOV A
13、,R3 ;CLR C ;CJNE A,#12H,HOUU ;计时单元数据与12比较HOUU: JC SET6 ;小于12转SET6循环LCALL CLR0 ;大于或等于24时清0操作AJMP SET6 ;跳转到SET6循环SETOUT: JNB P3.7,SETOUT1 ;调时退出程序。等待键释放LCALL DISPLAY ;延时削抖JNB P3.7,SETOUT ;是抖动,返回SETOUT再等待 CLR 01H ;清调小时标志CLR 00H ;清调分标志CLR 02H ;清闪烁标志CLR TR1 ;关闭定时器T1CLR ET1 ;关定时器T1中断SETB TR0 ;开启定时器T0SETB E
14、T0 ;开定时器T0中断(计时开始) LJMP START1 ;跳回主程序SET1: LCALL DISPLAY ;键释放等待时调用显示程序(调分) AJMP SET2 ;防止键按下时无时钟显示SET3: LCALL DISPLAY ;等待调分按键时时钟显示用 AJMP SET4SET5: LCALL DISPLAY ;键释放等待时调用显示程序(调小时)AJMP SETHH1 ;防止键按下时无时钟显示SET7: LCALL DISPLAY ;等待调小时按键时时钟显示用 AJMP SET6SETOUT1: LCALL DISPLAY ;退出时钟调整时键释放等待 AJMP SETOUT ;防止键按
15、下时无时钟显示; 显示程序 ; 显示数据在70H-75H单元内,用六位LED共阳数码管显示,P0口输出段码数据,P3口作; 扫描控制,每个LED数码管亮1MS时间再逐位循环。DISPLAY: MOV R1,#70H ;指向显示数据首址MOV R5,#0FEH ;扫描控制字初值PLAY: MOV A,R5 ;扫描字放入AMOV P2,A ;从P2口输出MOV A,R1 ;取显示数据到AMOV DPTR,#TAB ;取段码表地址MOVC A,A+DPTR ;查显示数据对应段码MOV P1,A ;段码放入P0口LCALL DL1MS ;显示1MSINC R1 ;指向下一地址MOV A,R5 ;扫描控
16、制字放入AJNB ACC.5,ENDOUT ;ACC.5=0时一次显示结束 RL A ;A中数据循环左移 MOV R5,A ;放回R5内AJMP PLAY ;跳回PLAY循环ENDOUT: SETB P2.5 ;一次显示结束,P2口复位 MOV P1,#0FFH ;P0口复位RET ;子程序返回TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;1MS延时程序,LED显示程序用DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET;20MS延时程序,采用调用显示子程序以改善LE
17、D的显示闪烁现象DS20MS: ACALL DISPLAYACALL DISPLAYACALL DISPLAYRET;延时程序,用作按键时间的长短判断DL1S: LCALL DL05SLCALL DL05SRETDL05S: MOV R3,#20H ;8毫秒*32=0.196秒 DL05S1: LCALL DISPLAYDJNZ R3,DL05S1RETEND ;程序结束整点报时程序:ORG 0000HLJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8HMOV TL0,#0EFH ;形成10毫秒中断RETISTART:SETB P1.3J
18、B P0.3,$ MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOPMOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H MOV B,#00H MUSIC1: NOP CLR AMOVC A,A+DPTR JZ END0 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5: NOPMOV R6,A INC DPTR MOV A,BMOVC A,A+DPTR MOV R7,ASETB TR0 MUSIC2: NOP CPL P1.3 MOV A,
19、R6 MOV R3,A LCALL DEL MOV A,R7CJNE A,20H,MUSIC2 MOV 20H,#00H INC DPTR ; INC BLJMP MUSIC1 MUSIC3: NOPCLR TR0 MOV R2,#0DH MUSIC4:;中断计数器清0 ;表序号清0 ;查表取代码 ;是00H,则结束 ;取节拍代码送R7 ;启动计数 ;中断计数器(20H)=R7否?;不等,则继续循环;等于,则取下一代码 ;休止100毫秒NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MUSIC1END0:NOPMOV R2,#64HLJMP
20、 START ;报时结束,返回 MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6LJMP MUSIC0DEL:NOPDEL3:MOV R4,#02HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETNOPDAT:db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h db 30h,20h,30h,20h,39h,10h,26h,10h,26
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 44514-2024微机电系统(MEMS)技术层状MEMS材料界面黏附能四点弯曲试验方法
- 解除购房合同协议
- 以房抵债合同范本协议
- 【初中地理】第一章~第三章知识点-2024-2025学年七年级地理上学期(人教版2024)
- 房产土地征收补偿协议
- 2024年全新合作协议医疗器械
- 房产购买预订协议
- 国际期刊代理注册服务协议
- 标准股权投资协议范本
- 消防给水材料采购合同样本
- 创新联合体协议书模板
- 《精细化管理》课件
- 工业网络联接IP化技术与实践白皮书
- 2024年山东省春季高考数学试卷试题真题(含答案)
- 新生儿高胆红素血症护理查房 (精制手工图文)
- 审计招投标合同范本
- 2024年《种子生产经营者及种子法》知识考试题库与答案
- 医疗机构聘用合同标准范本
- 2024-2030年中国移动运营行业深度分析及发展战略研究咨询报告
- 服装行业竞争对手分析
- 教室使用登记表
评论
0/150
提交评论