单片机课程设计 马拉松比赛计时器设计文档格式.docx
- 文档编号:22124767
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:12
- 大小:58.58KB
单片机课程设计 马拉松比赛计时器设计文档格式.docx
《单片机课程设计 马拉松比赛计时器设计文档格式.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 马拉松比赛计时器设计文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
0003H
TFO(TO中断)
000BH
INT1(外部中断1)
0013H
TF1(T1中断)
001BH
RI/TI(串行口中断)
0023H
TF2(T2中断)
002BH
各个中断入口地址相隔很近,不便于存放各个较长的中断服务程序,故通常将中断服务程序存放在另外方便存放的地方,而在中断入口地址开始的二三个单元中,安排一条转移类指令,以转入中方端服务程序。
由于6个中断源各有其中断请求标志IEO,TFO,IE1,RI/TI以及TF2,在中断源满足中断请求的条件下,个标志自动加1,向CPU请求中断。
如果某个中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件人为清除,中断请求的状态就将一直保持,直到CPU响应此中断为止。
对串行口中断而言,这一过程与其他五个中断的不同之处在于,及时CPU响应了中断,其中断标志RI/TI也不会自动清零,必须在中断服务程序中设置清除RI/TI的指令后,才有可能再一次提出中断请求。
CPU的现场保护和恢复必须有由被响应的中断服务程序去执行,当执行RI/TI中断返回指令后,断点值自动从栈顶2字节弹出并装入PC寄存器,使CPU继续执行被打断的程序。
三.设计任务
利用单片机内部定时器TO实现时、分、秒计时且在6个数码管上同时显示时、分、秒计时时间,并能通过按键对时间进行重新设置
四.设计方案
1,.系统硬件电路设计
系统硬件电路设计原理图1-1所示
图1-1计时电路结构框图
图1-1
2系统软件设计
(1)主程序(START)
在主程序中只完成系统的初始化,同时进行时分秒按键的扫描。
如果有按键按下,则做相应时分秒计数数据的加1处理。
主程序执行流程图按图1-2所示
(2)定时器中端服务程序(TIMERO)
定时器TO用于时间计时。
定时计数个数为5000,由于采用12MHz晶体振荡器,所以定时溢出中断周期为5000微秒=5毫秒。
为了保证计时的准确性,进入中断服务程序时应立即重设计数初始值。
在中断程序中还要判断是否计时1s,若是,还应通过调用其他子程序作时分秒值的相应处理。
(3)显示子程序(DISP)
该子程序通过在中断服务程序中被调用而执行。
每一次中断程序调用一次,其作用是根据扫描指针循环驱动各个数码管。
(4)时钟调整子程序(CLK_CHANGE)
当中断程序中判断出计时1s时,该程序即被调用执行。
其作用为将秒的计数初值加1,同时判断是否应对十分作相应的修改。
(5)数据转换子程序(COVERT)
当中断程序中判断出计时1s时,该程序及被调用执行。
由于时分秒的计数值分别保存在一个字节里,而每一个计数值实际是一个2位的十进制数。
在驱动显示时必须将这个2位数拆开以分别去扫描个位和十位,该子程序就是完成这个的,并把拆分结果存储在从20H开始的显示寄存器单元里。
(6)延时子程序(DELAY)
用于键盘的延时去斗
五.程序清单
ORG0000H;
复位起始地址
AJMPSTART;
跳转至主程序
ORG000BH;
TIMERO中断矢量地址
AJMPTIMERO;
跳转至TO中断子程序TIMERO
START:
MOVSO,#6FH;
设置堆栈从6FH开始
MOV30H,#00H;
显示位码寄存器处置为00
MOV2AH,#00H;
“时”寄存器初值为00H
MOV2BH,#00H;
“分”寄存器初值为00H
MOV2CH,#00H;
“秒”寄存器初值为000H
MOVTMOD,#01H;
设TO为工作方式1,即16位定时
;
器
MOVTHO,#OECH;
计时器计时中断时间为5000微秒
MOVTLO,78H
MOVIE,#82H;
TO中断使能总的中断使能
MOVR4,#200;
5000微秒中断200次,实现计时
1s功能
SETBTRO;
启动定时器TO
;
LOOP段为主程序中用于循环地扫描按键以检测外界输入对时分秒的设置和修改
LOOP:
JBP0.0,NEXT2;
P0.0(秒值修改键)是否被按下?
不是,则跳至NEXT2检查po.1
ACALLDELAY;
去抖动
JBPO.O,NEXT2;
PO.O;
PO.O(秒值修改键)不是真正被
按下则跳转至NEXT2检查PO.1
MAIN:
JNBPO.O,NEXT1;
PO.0(秒值修改键)是否放开?
MOVA,2CH;
将秒寄存器的值放入A
ADDA#01;
A的内容加1
DAA;
十进制调整
MOV2CH,A;
将A的值放回秒寄存器
CJNEA,#60H,NEXT2;
是否等于60秒?
不是,则跳至
NEXT2
MOV2CH,#00;
是则重新设置秒寄存器的值为
00
NEXT2:
JBPO.1,NEXT4;
PO.1(分值修改键)是否被按下?
不是则跳至NEXT4检查PO.2
ACALLDELAY;
JBPO.1,NEXT4;
PO.1(分值修改键)不是真正被
按下,则跳转至NEXT4检查
PO.2
NEXT3:
JNBPO.1,NEXT3;
(分值修改键)是否已放开?
MOVA,2BH;
将分寄存器的值修改,类同秒
的处理
ADDA,#01;
DAA
MOV2BH,A
CJNEA,#60H,NEXT4;
是否等于60分?
不是,则跳
转至;
NEXT4
MOV2BH,#00;
是,则重新设置分寄存器的
值为00
NEXT4:
JBPO.2,LOOP;
PO.2(时值修改键)是否被按
下?
不是,;
则跳转至LOOP
ACALLDELAY;
PO.2(时值修改键)不是真正
被按下,则跳转至LOOP重
复检查
NEXT5:
JNBPO.2,NEXT5;
PO.2(时值修改键)是否已放
开?
MOVA,2AH;
将时寄存器的值修改,类同分
秒的处理
ADDA,#01H
MOV2AH,A
CJNE,#24H,LOOP;
是否等于24时?
至LOOP
MOV2AH,#00;
是,则重新设置时寄存器的
AJMPLOOP
TO中断子程序。
每5000微秒中断一次,在该子程序中判断是否1秒计时到,并做相应调
;
整和处理(CLK_CHANGE子程序和CONVERT子程序),同时实现每5000微秒的显示
更新
TIMERO:
重设定时器中断计时5000
微秒
MOVTLO,#78H
PUSHACC;
保留现场的值
PUSHPSW
DJNZR4,TIMLP1;
计时1s到否?
不到1s,则
跳转至;
TIMLP1
MOVR4,#200
ACALLCLK_CHANGE;
调用计时子程序CLK_CHANGE
ACALLCONVERT;
调用数码转换及存储CONVERT
;
子程序
TIMLP1:
ACALLDISP;
调用显示子程序DISP
POPPSW;
恢复现场的值
POPACC
RETI
DISP子程序实现时分秒计时值在数码管上的输出驱动显示。
每一次调用(相隔5000微秒)
只驱动显示6个数码管中的一个
DISPMOVA,30H;
扫描显示位码载入A
ADDA,#20H;
扫描显示位码作为偏移量,
再加上显示缓冲区首地址
20H,得待显示数据的实际
MOVR1,A;
存入扫描显示位指针R1
MOVA,30H;
SWAPA;
A中低四位交换到高四位(P1
高四位显示位码,低四位显
示数据值)
ORLA,@R1;
得“显示位码-显示段码“
MOVP1,A;
输出至P1显示
INC30H;
扫面偏移量指针加1
MOVA,30H
CJNEA,#6,DSPEND;
扫描显示完否?
至DSPEND
MOV30H,#0;
是,则扫描显示位偏移量置
为0
DSPEND:
RET
CLK_CHANGE子程序为计时1s到各时分秒数据的处理程序
CLK_CHANGE:
MOVA,2CH;
2CH单元为秒寄存器
ADDA,#1;
加1秒
DAA;
MOV2CH,A;
存入秒寄存器
CJNEA,#60,CLKEND;
是否超过60秒?
不是,
则跳至CLKEND
是,则重设为00
MOVA,2BH;
2BH单元为分寄存器,
其处理类同秒处理
ADDA,#1
MOVBH,A
CJNEA,#60,CLKEND;
是否超过60分?
MOV2BH,#00;
MOVA,2AH;
2AH单元为时寄存器,其
处理类同秒分处理
DAA
CJNEA,#24,CLKEND;
是否超过24时?
MOV2AH,#00;
CLKEND:
RET
CONVERT子程序实现时分秒计时值转换为BCD码并存储在以20H为起始地址的显示
输出数据存储在单元里,即显示缓冲区20H至25H单元
CONVERT:
MOVR1,#20;
送显示缓冲区首地址值
到R1指针
MOVA,2CH;
将秒寄存器的内容存入
A
ANLA,#OFH;
取秒值的个位,并存入
20H单元
MOV@R1,A
INCR1;
目标地址指针修改
将秒寄存器的内容存入A
ANLA,#0F0H;
取秒值的十位,并存入
21H单元
SWAPA
MOV@R1,A
INCR1;
目标地址指针修
改
MOVA,2BH;
分值的处理,类似
于秒的处理ANLA,#0FH
INCR1
MOVA,2BH
ANLA,#0F0H
MOV@R1。
时值的处理,类似
于分秒的处理ANLA,#0FH
MOV@R1,A
MOVA,2AH
MOV@R1,A
RET
DELAY:
MOVR6,#10;
延时约5ms(以
晶振为12MHz计)
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
END
六.心得体会:
通过本次单片机课程设计的锻炼,让我深刻的了解到了单片机技术在日常生活中所扮演的角色以及其在高科技领域所占有的地位,其次是单片机作为我们生活中比较常见的东西他给我们带来了很多方便,学好单片机不仅仅是对自己科学文化知识的提高,更是对这个世界上更多深奥的东西的爱好,激发了我对一些事物的好奇之心,更是提高了我的积极动手能力和实践能力,充实了我的生活,开阔了我的世界,让我领略了科技的无穷。
虽然本次课程设计都是从网上和图书馆的一些资料上积累的,但是我还是非常开心,因为这是我自己从前辈们的身上学到的知识,感谢我身边在这次设计中给我提供帮助的老师和同学,也感谢提供这些设计材料的人士!
我会在此基础上更加努力学习,为将来的道路造一盏指明灯!
七.参考文献
①《片机系统设计与实践》主编:
汪道辉
出版地:
北京
出版社:
电子工业出版社
出版日期:
2006年5月
②《单片机应用系统设计技术》主编:
张齐朱宁西
出版社:
出版日期:
2009年1月
目录
一.设计目的2
二.相关知识2
1.定时器/计数器2
2.中端系统3
三.设计任务4
四.设计方案4
1,.系统硬件电路设计4
2系统软件设计5
(1)主程序(START)5
(2)定时器中端服务程序(TIMERO)5
(3)显示子程序(DISP)6
(4)时钟调整子程序(CLK_CHANGE)6
(5)数据转换子程序(COVERT)6
(6)延时子程序(DELAY)6
五.程序清单6
10
七.参考文献10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计 马拉松比赛计时器设计 单片机 课程设计 马拉松 比赛 计时器 设计