




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 PC机实时时钟的设计利用PC机现有的硬件和软件资源设计程序,以实现在显示器上显示XX(时):XX(分):XX(秒)。(1)设计思路PC机系统板上使用一片8253,其地址为40H43H,其通道0以方式3工作,每55ms向中断控制器8259A IRQ0端发一次中断请求。本设计题要求借用原有电路,重新设置8253的计数器0每10ms产生一次中断,100次中断后加1秒,然后调整时、分、秒并显示在屏幕上。 (2) 实时时钟的功能按下任意键开始显示数据区中存放的时间值,并且每秒更新一次,运行中按下空格键则停止运行并返回DOS。程序中应保护原系统的08H中断矢量以便退出时恢复原系统的设置。 (3) 题目
2、的要求 PC机实时时钟的基本程序如附录一,请根据中断服务程序设计时钟时、分、秒调整的中断服务程序,然后调试实现时钟的基本功能 在原有程序基础上,增加键盘输入字符功能,可通过修改时、分、秒的数据,实现实时时钟可调整功能。 在原有程序基础上,设计美观的时钟显示方式及友好的操作方式。附录一STACK segment para stack 'stack' db 256 dup (0)stack endsdata segment para public 'data'count db 100tenh db '1'hour db '3',20h
3、tenm db '1'minute db '0' db ':'tens db '5'second db '0',0dh,'$'data endscode segment para public 'code'start proc far assume cs:code push ds xor ax,ax push ax mov ah,01 int 21h cli cld mov ax,0000h mov ds,ax mov si,0020h lodsw mov bx,ax lodsw p
4、ush ax;seg push bx;offset mov ax,data mov ds,ax assume ds:data mov ax,0000h mov es,ax mov di,0020h mov ax,offset timer stosw mov ax,cs stosw mov al,00110110b out 43h,al mov ax,11932 out 40h,al mov al,ah out 40h,al in al,21h push ax mov al,0fch stiforever: mov dl,0ffh mov ah,06 int 21h jz disp cmp al
5、,20h jz exitdisp:mov dx,offset tenh mov ah,9 int 21h mov al,secondwaitcha: cmp al,second jz waitcha jmp foreverexit: cli cld pop ax out 21h,ax mov al,36h out 43h,al mov al,0 out 40h,al out 40h,al mov ax,0 mov es,ax mov di,4*8 pop ax stosw pop ax stosw sti retstart endptimer:push ax push cx sti mov a
6、l,count dec al mov count,al jnz int_ret mov count,100 mov al,second add al,1 aaa mov second,al jnc int_ret mov al,tens adc al,0 aaa and al,0fh mov tens,al cmp al,6 jnz int_ret mov al,0 mov tens,al mov al,minute add al,1 aaa mov minute,al jnc int_ret mov al,tenm adc al,0 aaa and al,0fh mov tenm,al cm
7、p al,6 jnz int_ret mov al,0 mov tenm,al mov al,tenh mov cl,4 shl al,cl mov cl,al mov al,hour and al,0fh or al,cl add al,1 daa cmp al,24h jz reseth mov ch,al mov cl,4 shr al,cl or al,30h mov tenh,al mov al,ch and al,0fh or al,30h mov hour,al jmp int_retreseth: mov tenh,'0' mov hour,'0'
8、;int_ret: mov al,second and al,0fh or al,30h mov second,al mov al,tens and al,0fh or al,30h mov tens,al mov al,tenm and al,0fh or al,30h mov tenm,al mov al,minute and al,0fh or al,30h mov minute,al cli mov al,20h out 20h,al pop cx pop ax iretcode ends end start附录一 STACK segment para
9、 stack 'stack' db 256 dup (0) stack ends data segment para public 'data' count db 100 tenh db '1' hour db '3',20h
10、 tenm db '1' minute db '0' db ':' tens db '5' second db '0',0dh,'$' data ends code segment para public &
11、#39;code' start proc far assume cs:code push ds xor ax,ax push ax &
12、#160; mov ah,01 int 21h cli cld mov ax,0000h mov ds,ax mov
13、si,0020h lodsw mov bx,axlodsw push ax; seg push bx;offset mov ax,data
14、 mov ds,ax assume ds:data mov ax,0000h mov es,ax mov di,0020h mov ax,offset timer
15、0; stosw mov ax,cs stosw mov al,00110110b out 43h,almov ax,11932 out
16、160;40h,al mov al,ah out 40h,al in al,21h push ax mov al,0fch
17、60; sti forever: mov dl,0ffh mov ah,06 int 21h jz disp cmp al,20h &
18、#160; jz exit disp: mov dx,offset tenh mov ah,9 int 21hmov al,second waitcha: cmp al,second jz wait
19、cha jmp forever exit: cli cld pop ax out 21h,ax mov al,36h
20、 out 43h,al mov al,0 out 40h,al out 40h,al mov ax,0 &
21、#160; mov es,ax mov di,4*8 pop ax stosw pop ax stosw sti
22、60; ret start endp timer: push ax push cx stimov al,count dec al mov count,al
23、160; jnz int_ret mov count,100 mov al,second add al,1 aaa
24、 mov second,al jnc int_ret mov al,tens adc al,0 aaaand al,0fh
25、60; mov tens,al cmp al,6 jnz int_ret mov al,0 mov tens,al &
26、#160; mov al,minute add al,1 aaa mov minute,al jnc int_ret mov al,tenm &
27、#160; adc al,0 aaa and al,0fh mov tenm,al cmp al,6jnz int_ret mov
28、 al,0 mov tenm,al mov al,tenh mov cl,4 shl al,cl mov cl,al &
29、#160; mov al,hour and al,0fh or al,cl add al,1 daa cmp al,24h
30、0; jz reseth mov ch,al mov cl,4 shr al,cl or al,30h mov tenh
31、,al mov al,ch and al,0fh or al,30h mov hour,al jmp int_ret reseth:
32、; mov tenh,'0' mov hour,'0' int_ret: mov al,second and al,0fh or al,30h mov second,al
33、 mov al,tens and al,0fh or al,30h mov tens,al mov al,tenm a
34、nd al,0fh or al,30h mov tenm,al mov al,minute and al,0fh or al,30h
35、;mov minute,alcli mov al,20h out 20h,al pop cx pop ax iret code ends end s
36、tar在本次设计中使用了四个中断工作方式即T0、T1、/INT0、/INT1。其中 1 T0中断采用T0定时中断工作方式完成LED动态扫描。 2 T1中断采用T1定时中断工作方式产生100ms或50ms单位时间。 3 /INT0中断采用外部中断工作方式完成时间按调整功能。 4 /INT1中断采用外部中断工作方式完成闹钟时间输入功能。 同时还要对一些存储单元的进行初始化这些内容都需要在初始化程序ORG 0000H ;程序执行开始地址 LJMP MAIN ;跳转主程序执行 ORG 0003H ;外部中断0中断服务程序入口地址 LJMP INTA ;转外部中断0中断服务程序 ORG 000BH ;定
37、时器T0中断服务程序入口地址 LJMP TO_SEV ;转T0定时中断服务程序执行 ORG 0013H ;外部中断1中断服务程序入口地址 LJMP INTB ;转外部中断1中断服务程序 ORG 001BH ;定时器T1中断服务程序入口地址 LJMP T1_SEV ;转T1定时中断服务程序 ORG 0030H ;设置主程序起始地址=0030H MAIN MOV SP, #60H ;设置堆栈指针 MOV A#00HMOV 30H, A MOV 31H, A MOV 32H, A MOV 33H, A MOV 34H, #0CH MOV 35H, A MOV 36H, A MOV 37H, A MO
38、V 50H, #DFH MOV 51H, #EFH MOV 52H, #F7H MOV 53H, #FBH MOV 54H, #FDH MOV 55H, #FEHCLR RS0 CLR RS1 MOV R2, #0 MOV R3, #0 MOV R4, #0 MOV R5, #12 MOV TMOD, #11H MOV TH1, #3CH MOV TL1, #0B0H MOV TH0, #0ECH MOV TL0, #78H MOV IP, #08H MOV TCON, #50H MOV IE, #8FH LOP: MOV A, 34H ANL A, #F0H MOV 40H, A MOV A
39、, 34HANL A, #0FH MOV 41H, A MOV A, 33H ANL A, #F0H MOV 42H, A MOV A, 33H ANL A, #0FH MOV 43H, A MOV A, 32H ANL A, #F0H MOV 44H, A MOV A, 32H ANL A, #0FHAA: MOV 45H, A SETB RS1 CLR RS0 A1: MOV R2, 37H ;判断是否有定时时间 CJNE R2, #0, NT MOV R2, 36H CJNE R2, #0, NT MOV R2, 35H CJNE R2, #0, NT SJMP BB NT: MOV A
40、, 37H CJNE A, 34H, BB ;判断定时时间到否 MOV A, 36H CJNE A, 33H,BBMOV A, 35H CJNE A, 32H, BB CLR P3.6 ;时间到发出报警 SJMP LOP BB: SETB P3.6 SJMP LOP程序清单如下 TO_SEV: PUSH A ;LED定时扫描程序 PUSH PSW ;保护现场 SETB RS1 ;RS1、RS0=11H SETB RS0 ;选择3组工作寄存器 CLR TR0 ;停止T0定时器 MOV R2, #06H ;设置显示器位数 MOV R0, #40H ;设置段码首地址 MOV R1, #50H ;设置
41、位码首地址GO_ON: MOV A, R2 ;送显示位数到A CJNE A, 31H, NO_FLASH ;判断是闪烁位否 NO_FLASH:MOV A, R1 ;送位码地址到A累加器 MOV P3, A ;输出位码数据到P3口 MOV A, R0 ;送段码地址到A累加器 MOV P0, A ;输出段码数据到P0口 LCALL DELAY1 ;调延时子程序延时1ms FLASH: INC R0 ;段码地址+1 INC R1 ;位码地址+1 DJNZ R2, GO_ON ;判断6为都显示完否没完继续显示下一位 MOV TH0,#0D8H MOV TL0,#F1H ;重置T0计数初值 POP A
42、;恢复现场 SETB ET0 ;允许T0中断 SETB TR0 ;启动T0开始定时 SETB EA ;开中断 RETI ;中断返回 DELAY1: MOV R3, #0FAH ;延时1ms子程序 AGAIN: MOV R4, #03H DELAY DJNZ R4, DELAY DJNZ R3, AGAIN RET 说明在TO中断服务程序中又调用了延时1ms子程序因此T0中断服务程序又是延时1ms子程序的主程序5.3.1 24h时间的产生 选择定时器T1工作方式1定时50msT1定时50ms中断一次利用R2寄存器加1R2寄存器的值等于20时时间正好为1s再利用R3寄存器计数60s一次类推累计24
43、h的时间值并需要设置以下几个寄存器 R2累计1s时间寄存器。T1每中断一次R2=R2+1计数二十次向R3进位并将R2清零。 R3累计60s时间寄存器当R3=60s向R4进位然后将R3清零。 R4累计60min时间寄存器。当R4=60min正好是1h的时间向R5进位然后R4清零。 R5累计24h时间寄存器。当R5=24h正好是昼夜的时间并使R5清零。5.3.2 计算定时器T1的技术初值 当时钟频率=12MHZ时 计数值= 机器周期时间定时时间 =s1ms50=50000 计数初值=65537-50000=15537=3CB0H 初值寄存器的初值为TH1=3CH; TL1=B0H 工作方式计数器T
44、MOD=0001XXXXB=1*H(T1、T0的工作方式控制字应该一次性写入即TMOD=11H) 5.3.3 程序设计框图及程序清单 程序设计框图如图12所示。程序清单 T1定时器每50ms中断一次中断20次为1s。 T1_SEV: MOV TH1 , #3CH ;重置T1计数初值 MOV TL1, #0B0H CLR EA ;关中断 PUSH A ;保护现场 PUSH B PUSH PSW CLR RS1CLR RS0 ;选择0区工作寄存器 INC R2 ;中断次数加1 CJNE R2, #14H ,EN ;判断中断20次否否转EN标号地址 MOV R2, #0 ;T1中断20次的累计时间1s计数寄存器R2清零 INC R3 ;秒计时单元R3+1 MOV 32HR3 ;秒值送32H单元 CJNE R3, #3CH,EN ;判R3=60秒否转EN标号地址 MOV R3#0 ;60s时间到R3清零 MOV 32HR3 ;秒值送32H单元 INC R4 ;分计时单元R4+1 MOV 33HR4 ;分值送33H单元 CJNE R4, #3CH,EN ;判R4=60min否转EN标号地址 MOV R4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建省云霄一中11-12学年高一下学期期中考试(语文)
- 2025年加拿大高考英语作文专项突破:TOEFL写作论点展开与论证结构模拟试卷
- 2025年乒乓球裁判员二级考试试题:规则应用与临场执裁实战技巧
- 非居民税收培训实务解析
- 2025护理培训体系构建与实施
- 贵州省贵阳市2016-2017学年高二数学下学期半期考试试题文(扫描版)
- 医学护理课件大全
- 口服农药中毒护理
- 公务员考试申论民生保障类写作能力提升策略与实战演练卷
- java面试题及答案2025年算法
- 房屋买卖合同范本模版模板
- 电大专科行政管理毕业论文范文
- 第五课 在和睦家庭中成长 说课稿-2024-2025学年高中政治统编版选择性必修二法律与生活
- 农业昆虫学-形考测试一-国开(ZJ)-参考资料
- 房地产 -中建商务管理精细化管理实施细则
- 初级消防设施操作员实操题库 (一)
- JJF 2166-2024电子固体密度天平校准规范
- 2024年海南省高考化学试卷真题(含答案解析)
- 六年级青岛版数学下学期应用题专项水平练习题
- 人工智能算法与实践-第16章 LSTM神经网络
- 新员工三级安全教育考试试题参考答案
评论
0/150
提交评论