苏州大学实验报告-定时溢出中断实验报告

上传人:M****1 文档编号:497850643 上传时间:2023-07-07 格式:DOC 页数:4 大小:34.52KB
返回 下载 相关 举报
苏州大学实验报告-定时溢出中断实验报告_第1页
第1页 / 共4页
苏州大学实验报告-定时溢出中断实验报告_第2页
第2页 / 共4页
苏州大学实验报告-定时溢出中断实验报告_第3页
第3页 / 共4页
苏州大学实验报告-定时溢出中断实验报告_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《苏州大学实验报告-定时溢出中断实验报告》由会员分享,可在线阅读,更多相关《苏州大学实验报告-定时溢出中断实验报告(4页珍藏版)》请在金锄头文库上搜索。

1、苏州大学实验报告院、系年级专业姓名学号课程名称成绩指导教师同组实验者实验日期实验名称: 定时溢出中断实验 一实验目的通过该实验,进一步熟悉MT-IDE嵌入式开发系统环境、汇编和C语言以及调试方式;复习串口的相关原理和编程方法;理解用定时器实现计数与定时的工作原理以及实现方法;理解课本中的程序代码。二实验内容编制一个利用定时器中断计数的程序。要求1秒钟中断一次,计数加1,该计数范围为从0到255,超过又重新计数,每次的数字通过接在PTA0PTA7上的八个小灯动态显示,小灯亮,表示该位为“1”;小灯暗,表示该位为“0”。三实验过程(一)基本原理定时器的核心是一个不断加1的16位计数寄存器,该计数器

2、的时钟频率由外部晶振时钟或总线时钟经过分频因子分频得到,在定时器内部有个控制和状态寄存器,通过对它某些位的设置,可以确定在多少时间后计数器加1。在定时器内部有个预置寄存器,当计数器的值等于预置寄存器的值时,称为计数器溢出。当计数器溢出时,计数器的值被赋0,同时将计数器溢出标志等状态置于控制和状态寄存器中。通过对控制和状态寄存器某些位的设置,可以决定在计数器溢出时,是否允许中断,利用这个中断,可以编写中断程序,实现计数与定时等功能。四编程(一)流程图关总中断开总中断开始结束计时sec+,sec取反后给PTA,清溢出标志位开始MCU、Timer1初始化头文件和声明1 ?复位结束溢出中断允许,开放总

3、中断图1 定时器计时流程图(二)所用寄存器名称及其所用的位T1状态和控制寄存器(Timer 1 Status and Control Register,T1SC)数据位 D7 D6 D5 D4 D3 D2 D1 D0定义 TOF TOIE TSTOP TRST x PS2 PS1 PS0复位 0 0 1 0 0 0 0 0T1计数寄存器(Timer 1 Counter Register,T1CNTH、TICNTL)这是一个16位寄存器,分为高8位和低8位,每一个计数周期值加一。T1预置寄存器(Timer 1 Counter Modulo Register,T1MODH、T1MODL)这是一个1

4、6位寄存器,分为高8位和低8位,当计数寄存器中的值达到预置寄存器的值时发生中断。(三)主要代码段1汇编方式:主程序部分代码MainInit: SEI /关总中断 LDHX #$023F /堆栈初始化为RAM最高端 TXS JSR MCUInit /调系统初始化子程序GP32Init JSR Timer1init /调定时器1初始化子程序 LDA #$FF STA DDRA/对A口进行初始化 STA PTA /A口初始状态为暗 CLR sec /给sec秒赋初值0 CLI /开总中断 MainLoop: /程序总循环入口 NOP NOPJMP MainLoop中断处理子程序部分代码Timer1I

5、nt: SEI /关总中断 PSHH /保护H INC sec /秒数加1 CLC LDA sec COMA STA PTA LDA T1SC BCLR #TOFBit,T1SC /清除定时器溢出标志位 PULH /恢复H CLI /开总中断 RTI2C语言方式:主程序部分代码void main() DisMCUInt(); /关总中断 MCUInit(); /芯片初始化 Timer1Init(); /定时器1的初始化 EnTm1OverflowInt(); /开放溢出中断 T1SC &= (1TSTOPBit); /允许定时器1计数 EnMCUInt(); /开总中断 DDRA = 0xFF

6、; PTA = 0xFF; /全局变量初始化 sec = 0; while(1) 中断处理程序部分代码#pragma interrupt_handler isrTimer1void isrTimer1(void) DisMCUInt(); sec+; /秒加1 PTA = sec; T1SC&= (1TOFBit); /清除定时器溢出标志位 EnMCUInt();五实验问答(根据实验指导书所列举的问题)1通过实验总结完全软件定时和利用可编程定时器定时的差异性以及各自优缺点完全软件定时是利用计算机执行指令的时间来实现定时。通常设计一个延时子程序,子程序中包括一定指令。设计者需要对指令的执行时间严

7、格的计算。该方法节省硬件,但延时时要执行延时程序,降低了CPU利用率,不利于多作业环境。利用可编程定时器计时,结合了完全硬件完全软件的优点,其计时可由程序设置,设置后可与CPU并行工作,不占用CPU工作时间,同时定时器成本不高。因此该方法较优。2总结定时器初始化包括哪些内容? 定时器初始化过程中需要对定时器状态和控制寄存器、计数寄存器和预置寄存器设置。具体为根据要求的时间间隔、总线频率计算出分频因子和预置寄存器的值写入相应的寄存器同时设置计数寄存器的值为0,最后允许计数寄存器计数。 3本自编程序中可以用寄存器A代替sec全局变量吗? 不可以。因为在每次中断发生时将寄存器A中的值压入堆栈,而在退

8、出中断时又会将A中的值恢复为中断发生前A中的值,从而使得在中断过程中对其所作的更新无效。思考用寄存器H又如何。 4本实验中是定时器的间隔为1秒,思考任何获得更小或更大的定时间隔? 首先可以通过对分频因子和预置寄存器的设置来获取所要求的时间间隔,当超过一定值后,可以通过中断处理程序解决。 5想一想课本中第202页的中断程序1秒钟中断一次,最高能采用多大的时钟频率。 6若本实验自编的中断程序时钟频率太高了,1秒钟的计数超过65535范围,中断程序该怎样处理以便解决这个问题。 通过计数时钟频率计算出1秒钟的计数次数。将该次数等分位n段,使得每断的计数次数不超过65535,将每段的计数次数写入到预置寄存器。增加标志变量,记录进入中断处理函数的次数。当进入中断处理函数的次数为n时,此时时间间隔为1秒。 7计数寄存器可以如何清零? 向计数寄存器中直接写入0可以使计数寄存器清零;向定时器复位位写入1时会清除计数寄存器;在允许计数的情况下,当计数寄存器的值达到预置寄存器的设定值时,计数寄存器亦自动清零。 六实验小结通过该实验,了解了如何使用定时器溢出中断进行计时,熟悉和掌握了MT-IDE嵌入式开发系统环境及其调试方式,进一步熟悉汇编编程和C语言编程;复习了串口通信(SCI)的相关原理和方法。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号