智能化仪器仪表课程设计程序.docx_第1页
智能化仪器仪表课程设计程序.docx_第2页
智能化仪器仪表课程设计程序.docx_第3页
智能化仪器仪表课程设计程序.docx_第4页
智能化仪器仪表课程设计程序.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

;=;ORG 0000H LJMP MAIN ORG 0013H LJMP VOT ORG 0030HMAIN:MOV SP,#30H MOV DPTR,#7F0AH;寄存器A初始化 MOV A,#20H MOVX DPTR,A ;寄存器A的值为20H MOV DPTR,#7F0BH ;寄存器B初始化 MOV A,#82H MOVX DPTR,A ;寄存器B的值为82H,时标寄存器用十进制BCD码 MOV DPTR,#7F00H ; DS12887秒地址7F00H MOV A,#55H MOVX DPTR,A ;秒初始化55秒 INC DPTR INC DPTR MOV A,#58H MOVX DPTR,A ;分初始化58分 INC DPTR INC DPTR ; DS12887 时地址7F04H MOV A,#23H MOVX DPTR,A ;时初始化23时 INC DPTR INC DPTR MOV A,#06H MOVX DPTR,A ;星期初始化 星期6 INC DPTR MOV A,#05H MOVX DPTR,A ;日初始化,05日 INC DPTR MOV A,#06H MOVX DPTR,A ;月初始化,06月 INC DPTR ;DS12887年地址7F09H MOV A,#10H MOVX DPTR,A ;年低位初始化10年 MOV DPTR,#7F0EH ;年高位初始化(使用用户RAM区) MOV A,#20H MOVX DPTR,A ;年高位初始化20 MOV DPTR,#7F0BH MOV A,#22H MOVX DPTR,A ;寄存器B值为22H,允许周期中断,寄存器用十进制BCD码 MOV DPTR,#7F0CH ;寄存器C设置中断, MOVX A,DPTR ;程序访问后寄存器C自动清零 MOV TMOD,#0D0H ;初始化定时器,选择T1计数方式1 MOV TL1,#00H MOV TH1,#00H ;计数器1的高位和低位都为00 MOV IE,#81H ;CPU开放中断,允许外部中断0中断 SETB IT1 ;中断为边沿触发方式 MOV R3,#01H ;R3为1,使未按下按键时初次显示时间KK:LCALL KEY;调用判断按键1是否按下的程序 LCALL DISP4 K0: CJNE R3,#01H,K1;执行程序没有按按键1时显示时间 LCALL SHIJIAN LJMP JUDGE K1: CJNE R3,#02H,K2 ;第一次按下按键1时(R3等于2)显示日期 LCALL RIQI LJMP JUDGE K2:CJNE R3,#03H,K3 ;第二次按下按键1时(R3等于3)显示星期 LCALL XINGQI LJMP JUDGE K3:CJNE R3,#04H,K4 ;第三次按下按键1时(R3等于4)显示电压 SETB EX1 SETB TR1 LJMP KK K4:MOV R3,#01H CLR EX1 ;不允许外部中断1 LJMP KK ;按第二个按键S2进入闪烁JUDGE: JB P1.1,UUU ;判断P1.1即S2是否为0(按下),如果未按下,执行UUU程序 LCALL DELAY10 ;调用10MS延时程序,以消除抖动等因素 JB P1.1,UUU ;再次判断S2是不是按下 LJMP FF1 ;S2按下,绝对跳转到FF1UUU:LJMP KK ;返回到KKFF1:JNB P1.1,FF1 ;判断S2是否弹起,如果没弹起则继续执行FF1 LCALL DELAY10 JNB P1.1,FF1MMM:MOV R1,#70H ;70H赋给R1AGAIN: LCALL SHANSHUO JB P1.2,EE1 LCALL DELAY10 JB P1.2,EE1;判断第三按键S3是否弹起,若弹起,跳转到YIWEI(闪烁移动)FF2:JNB P1.2,FF2 LCALL DELAY10 JNB P1.2,FF2 LCALL YIWEI;判断第四按键S4是否按下,若没按下,调用EE2(判断第2键是否有按下)EE1:JB P1.3,EE2 LCALL DELAY10 JB P1.3,EE2 CJNE R3,#1,ONE ;通过R3为标志,判断显示什么,不同显示情况下,加1后的程序不同 LCALL GSHIJIAN;调用时间修改程序LJMP TOLONE: CJNE R3,#2,TWO LCALL GRIQI;调用日期修改程序 LJMP TOLTWO:LCALL GXINGQI;调用星期修改程序TOL:LJMP FF3;判断第四按键S4是否弹起FF3:JNB P1.3,FF3 LCALL DELAY10 JNB P1.3,FF3;判断第二按键S2是否按下,若没按下,则转到用AGAIN,继续闪烁EE2:JB P1.1,AGAIN LCALL DELAY10 JB P1.1,AGAIN;判断第二按键S2是否弹起FF4:JNB P1.1,FF4 LCALL DELAY10 JNB P1.1,FF4 CJNE R3,#01H,A1;判断是否在显示时间下加1,因为在不同显示情况下的装载程序不同,因此以R3值为标志,判断此时显示什么 LCALL ZSHIJIAN;调用时间装载程序LJMP KKA1: CJNE R3,#02H,A2;判断是否在显示日期LCALL ZRIQI ;调用日期装载程序LJMP KKA2: LCALL ZXINGQI ;调用星期装载程序 LJMP KK;判断1键是否按下程序KEY: JB P1.0,KEY1 ;判断1键是否按下(0),若按下则执行延时。(开关闭合)软件消抖 LCALL DELAY10 JB P1.0,KEY1 ;按键按下时为低电平 INC R3WT:JNB P1.0,WT ;判断1键是否弹起。(开关断开)软件消抖 LCALL DELAY10 JNB P1.0,WTKEY1:RET ;中断返回到KK;时间显示SHIJIAN:TIME:MOV DPTR,#7F0AH MOVX A,DPTR ;读12887寄存器A里的内容 JB ACC.7,TIME ;寄存器7为1时,时钟信息不可读,执行TIME程序 MOV R2,#3H ;循环次数为3次 MOV R1,#77H MOV DPTR,#7F00H;把秒的地址7F00H给DPTRLOOP1:MOVX A,DPTR;提取芯片中的时间 ANL A,#0FH MOV R1,A MOVX A,DPTR ANL A,#0F0H SWAP A DEC R1 MOV R1,A DEC R1 DEC R1 INC DPTR INC DPTR DJNZ R2,LOOP1 MOV 72H,#0CH ;72H和75H显示一条杠 MOV 75H,#0CH ACALL DISP4 ;绝对调用动态扫描显示程序,显示时间 RET;第三个按键功能程序(闪烁移动)YIWEI: INC R1 ;R1的值+1,初次为R1由#70H 变成#71H CJNE R1,#78H,XQCD MOV R1,#70HXQCD:RET;时间的第四个按键功能程序(加1)GSHIJIAN:INC R1;R1是闪烁位地址,闪烁位地址的内容加1CJNE R1,#70H,B2;判断此时加1的位置是否是小时高位,因为在不同位置加1的限制不一样LJMP B1 ;调到B1检查B2:CJNE R1,#71H,B3CJNE R1,#10,B1;小时的低位小于10时,调到B1做进一步检查LJMP RZ ;小时的低位加到10时,变为0(0-9显示)B1:MOV A,70H ;B1主要是把小时的低位和高位,从70H,71H,放到A中,以便判断,A是否大于24H,若大于24H,加1的这位清0,若小于24,不处理,并结束程序调用SWAP AMOV 43H,AMOV A,71HADD A,43HSUBB A,#24H;与24H做差比较JNB ACC.7,RZ;A的内容为0,则ACC.7为0,执行RZ清零LJMP GGB3:CJNE R1,#73H,B4;判断加1的位置是否是分高位 CJNE R1,#06H,GG;分高位小于6,跳至GG结束程序 (以下类推) LJMP RZB4:CJNE R1,#74H,B5 CJNE R1,#0AH,GG LJMP RZB5:CJNE R1,#76H,B6 CJNE R1,#06H,GG LJMP RZB6: CJNE R1,#0AH,GG LJMP RZRZ:MOV R1,#0HGG:RET;把修改过的时间重新装入时钟芯片 ZSHIJIAN:MOV DPTR,#7F00H MOV A,76H ;秒高位地址给A SWAP A ;交换高低半字节 ADD A,77H ;交换后与秒低位相加 MOVX DPTR,A ;相加后把新值重新装给DS12887秒 INC DPTR INC DPTR;读取DS12887分值 MOV A,73H SWAP AADD A,74H MOVX DPTR,A ;重装分值 INC DPTR INC DPTR ;读取DS12887时值 MOV A,70H SWAP A ADD A,71H MOVX DPTR,A ;重装时 RET;星期显示XINGQI:MOV DPTR,#7F0AH MOVX A,DPTR;读12887寄存器A里的内容 JB ACC.7,XINGQI;寄存器7为1时,时钟信息不可读,执行XINGQI程序 MOV DPTR,#7F06H;DS12887星期地址7F06H MOVX A,DPTR ANL A,#0FH MOV 70H,A MOV R2, #07H;循环7次。使其余数码管变暗 MOV R1, #77HLOOP3: MOV R1,#0AH DEC R1 DJNZ R2,LOOP3 ACALL DISP4 RET;星期的第四个按键功能程序(加1)GXINGQI:MOV A,R1 CJNE A,#07H,XQJJJ;星期的最大值为7 MOV R1,#00HXQJJJ:INC R1 RET;装载星期ZXINGQI:MOV DPTR,#7F06H ;把修改过的星期重新装入时钟芯片 MOV A,70H MOVX DPTR,A RET;日期程序/与时间类似RIQI:DATE: MOV DPTR,#7F0AH MOVX A,DPTR;读12887寄存器A里的内容 JB ACC.7,DATE;寄存器7为1时,时钟信息不可读,执行DATE程序 MOV R2, #03H;循环次数为3次 MOV R1,#77H MOV DPTR,#7F07H;把日期的地址7F07给DPTRLOOP2: MOVX A,DPTR ANL A,#0FH MOV R1,A MOVX A,DPTR ANL A,#0F0H SWAP A DEC R1 MOV R1,A DEC R1 INC DPTR DJNZ R2,LOOP2 MOV DPTR,#7F0EH MOVX A,DPTR ANL A,#0FH MOV 71H,A MOVX A,DPTR ANL A,#0F0H SWAP A MOV 70H,A RET;日期的第四个按键功能程序(加1)GRIQI:INC R1;R1是闪烁位地址,闪烁位地址的内容加1CJNE R1,#70H,C1;判断此时加1的位置CJNE R1,#0AH,LALJMP GZC1:CJNE R1,#71H,C2CJNE R1,#0AH,LALJMP GZC2:CJNE R1,#72H,C3CJNE R1,#0AH,LALJMP GZC3:CJNE R1,#73H,C4CJNE R1,#0AH,LALJMP RZC4:CJNE R1,#74H,C9CJNE R1,#02H,C5LJMP GZ;C9:CJNE R1,#75H,C6CJNE R1,#0AH,C5LJMP GZC5:MOV A,74H;C5是为了判断月份不能大于12SWAP AADD A,75HSUBB A,#13HJB ACC.7, LALJMP GZC6:CJNE R1,#76H,C7CJNE R1,#04H,B8LJMP GZC7: CJNE R1,#0AH,B8LJMP GZB8: MOV R0, #76HMOV A,R0SWAP AINC R0ADD A, R0SUBB A ,#32HJB ACC.7,LAGZ:MOV R1,#0MOV A,74HCJNE A,#0,LAMOV A,75HCJNE A,#0,LAMOV 75H,#01LA:RET;把修改过的日期重新装入时钟芯片 ZRIQI:MOV DPTR,#7F07H MOV A,76H SWAP A ADD A,77H MOVX DPTR,A INC DPTR MOV A,74H SWAP A ADD A,75H MOVX DPTR,A INC DPTR MOV A,72H SWAP A ADD A,73H MOVX DPTR,A MOV DPTR,#7F0EH MOV A,70H SWAP A ADD A,71H MOVX DPTR,A RET;电压VOT: PUSH ACC;进栈 PUSH PSW SETB RS0 ;RS0置1 CLR TR1 ;TR1置0,关闭计数器1工作 CLR EA ;EA置0 (CPU中断关) MOV R6,TL1 ;定时器低位给R6 MOV R7,TH1 ;定时器高位给R7 MOV TL1,#00H ;定时器低位置0 MOV TH1,#00H ;定时器高位置0 SETB TR1 ;TR1置1 MOV A,R6 ;R6的值即定时器低位的值减10H,再放到R6里 SUBB A,#10H MOV R6,A MOV A,R7 ;R7的值即定时器高位的值减27H,再放到R7里 SUBB A,#27H MOV R7,A LCALL CZW ;调用10进制转换程序 LCALL DIANYA ;调用电压显示程序 POP PSW ;退栈 POP ACC SETB EA ;开CPU中断 RETI;十进制转换程序CZW:CLR A ;A清0 MOV R3,A ;R3.R4,R5都为0 MOV R4,A MOV R5,A MOV R2,#10H ;R2的值为10HHB3:CLR CMOV A,R6 ;定时器地位减10H后给A RLC A ;A带进位循环左移1位,再放到R6 MOV R6,A MOV A,R7 ;定时器高位给A,再左移一位再放到R7 RLC A MOV R7,A;移出位CY MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 DA A;(R3R4R5)*2+CYR3R4R5 MOV R3,A;十进制调整 DJNZ R2,HB3 RET;电压的量程是在2V以内.故整数位只要1位DIANYA:MOV 72H,R3 ;R3的值是整数位,由数码管的72H显示 MOV A,R4 ;R4的高位为小数的第1位,由74H显示 ANL A,#0F0H SWAP A MOV 74H,A MOV A,R4 ;R4的低位是小数的第2位,由75H显示 ANL A,#0FH MOV 75H,A MOV A,R5 ;R5的高位是小数的第3位,由76H显示 ANL A,#0F0H SWAP A MOV 76H,A MOV A,R5 ;R5的低位是小数的第4位,由77H显示 ANL A,#0FH MOV 77H,A MOV 70H,#0AH ;70H,71H显示全暗 MOV 71H,#0AH MOV 73H,#0BH ;73H显示小数点 RETDISP4:MOV R0,#70H ;显示段码的存放首地址 MOV R7,#01H ;显示位码的初始值DISP1:MOV A, R7 ;位码送A MOV DPTR,#0DFFFH;取位码口地址 MOVX D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论