第一范文网 - 专业文章范例文档资料分享平台

微机课程设计

来源:用户分享 时间:2025/5/16 17:07:16 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

MOV 3FH,#12H ;<根据需要设置> MOV 40H,#20H

MOV 55H,#02H ;闹钟的初始值 MOV 56H,#00H

MOV 52H,#01H ;时间状态显示 MOV 25H,#0FFH ;正常进程下的闪烁值 MOV 26H,#0FFH ;调整时的闪烁值 MOV R2,#11 ;自动切换计数

MOV R4,#0 ;长时间无操作计数 CLR 61H ;闹钟满一分钟的标志位 CLR 62H ;闹钟开关

CLR 63H ;满一秒标志位(正常进程自动切换) CLR 64H ;满0.25秒标志位

;******************************主程序循环**************** LOOP: LCALL ZDQH ;自动切换子程序 LCALL NZ ;闹钟子程序

LCALL CZ ;调用拆字子程序 LCALL SKEY ;调用键盘扫描加处理 LCALL DISP ;调用显示子程序 LCALL RUNPING ;判断闰年平年 LCALL FLASH ;闪烁子程序

LCALL NO_SKEY ;长时间无键按下则返回 SJMP LOOP ;反复循环主流程

;***********************T0中断*************************** TP0:PUSH ACC ;T0 500微秒中断服务程序 PUSH PSW ;保护现场

DJNZ 38H,DONE ;每250微秒减1,满0.05秒? MOV 38H,#200

DJNZ 39H,DONE ;每0.05秒减1,满0.25S? MOV 39H,#5 SETB 64H DJNZ 4AH,DONE MOV 4AH,#4 ;每0.25秒减1,满1秒? INC R4 ;长时间无操作 SETB 63H MOV A,3AH ;秒单元(按BCD码)加1 ADD A,#1 DA A MOV 3AH,A

CJNE A,#60H,DONE ;满1分钟? SETB 61H

MOV 3AH,#0 ;秒单元清零

MOV A,3BH ;分钟单元(按BCD码)加1 ADD A,#1

DA A MOV 3BH,A

CJNE A,#60H,DONE ;满1小时? MOV 3BH,#0 ;分钟单元清零 MOV A,3CH ;小时单元(按BCD码)加1 ADD A,#1 DA A MOV 3CH,A

CJNE A,#24H,DONE ;满24小时? MOV 3CH,#0 ;小时单元清零 MOV A,3DH ;天单元(按BCD码)加1 ADD A,#1 DA A MOV 3DH,A

MOV A,53H ;闰年和平年的表 CJNE A,#00H,L2

MOV DPTR,#TAB2-1 SJMP L4

L2:MOV DPTR,#TAB1-1 L4:MOV A,3EH

MOVC A,@A+DPTR MOV 50H,A MOV A, 3DH

CJNE A,50H,DONE ;满一月? (50H存放表中的值) MOV 3DH,#01H ;日单元变为1

MOV A,3EH ;月单元(按BCD码)加1 ADD A,#1 DA A MOV 3EH,A

CJNE A,#13H,DONE ;满年?

MOV 3EH,#01H ;月单元变为1 MOV A,3FH ;年单元(按BCD码)加1 ADD A,#1 DA A MOV 3FH,A CJNE A,#00H,DONE MOV 3FH,#01H DONE:POP PSW

POP ACC ;恢复现场 RETI ;中断返回

;**************************自动切换子程序*************** ZDQH:JNB 63H,L1 CLR 20H.2

DJNZ R2 ,N1

MOV A,52H

MOV R2,#11;自动切换的计数秒数 CJNE A,#01H,L0

MOV 52H,#02H;日期状态显示标志 L1: RET

L0: CJNE A,#02H,N1 MOV 52H,#01H N1:RET

;*************************闹钟子程序**************** NZ:

JNB 62H,Q3 ;开关标志位为1则响 MOV A,3BH CJNE A,55H,Q3 MOV A,3CH CJNE A,56H,Q3 CLR P3.2 RET

Q3:SETB P3.2 RET

; ************************拆字子程序******************** CZ:MOV A,52H

CJNE A,#01H,CZ2

MOV R0,#3AH ;拆字子程序 MOV R1,#30H CZ1:MOV A,@R0 ;时间的拆字 ANL A,#0FH MOV @R1,A INC R1 MOV A,@R0 ANL A,#0F0H SWAP A

MOV @R1,A INC R0 INC R1 INC R1

CJNE R0,#3DH,CZ1 MOV 32H,#0AH

MOV 35H,#0AH ;第3、6位显示“-” RET CZ2: CJNE A,#02H, Q2 MOV R0,#3DH

MOV R1,#30H ;30H~37H为显示缓冲单元 L3: MOV A,@R0 ;日期的拆字 ANL A,#0FH

MOV @R1,A INC R1 MOV A,@R0 ANL A,#0F0H SWAP A

MOV @R1,A INC R0 INC R1

CJNE R0,#41H,L3 MOV A,32H ADD A,#0BH MOV 32H,A MOV A,34H ADD A,#0BH MOV 34H,A Q2:RET

;*******************************显示子程序*********************** DISP:MOV R0,#30H ;显示更新子程序。置显示缓冲单元首地址(对应最右位)

MOV R3,#01H ;位码初值(从最右位起) DISP1:MOV A,R3 ANL A,25H MOV DPTR,#0FEFDH ; 8255-B口(位码输出口) MOVX @DPTR,A ; 输出当前字位码 MOV A,@R0 ; 取当前位显示数据码 ADD A,#TAB-NPC ; 加TAB与NEXTPC差址 MOVC A,@A+PC ; 查表得相应字段码

NPC:MOV DPTR,#0FEFCH ; 8255-A口(字段码输出口) MOVX @DPTR,A ; 输出字段码 LCALL D1MS ; 保持显示1毫秒 INC R0 ; 指向下一显示缓冲单元 MOV DPTR,#0FEFCH ;消窜显。 MOV A,#0FFH MOVX @DPTR,A

MOV A,R3 ; 取出原来的位码 JB ACC.7,DISP2 ; 判断若已显示到最左位则结束

RL A ; 未完,字位码左移1位 MOV R3,A ; 回存新的位码 LJMP DISP1 ; 转下一位的显示驱动 DISP2:RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;0-9

搜索更多关于: 微机课程设计 的文档
微机课程设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c047dp7ewdy5kaxc90sed_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top