公共选修课实验指导书.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
公共选修课实验指导书.pdf

《单片机及嵌入式系统应用实验指导书》 实验一:定时器使用及中断处理 【实验目的】 1. 通过实验熟悉定时器Timer A/B的工作原理。 2. 掌握预置数单元P_TimerA/B_Data和定时控制单元P_TimerA/B_Ctrl的设置方法。 3. 掌握定时器Timer A/B的编程方法。 【实验设备】 1.装有u’nsp IDE仿真环境的PC机一台。 2.µ’nSP™十六位单片机开发板一套。 【实验要求】 1. 编程要求:编写一个C语言程序。 2. 实现功能:设计程序使一个LED发光管以1秒为周期闪烁,即发光管每0.5秒点亮或熄灭一次。 3. 实验现象:计数初值不同、时钟源不同,发光二极管的亮灭状态变化就不同。 【实验原理】 分析题目要求,主要涉及两方面的操作,即控制LED发光管的亮灭以及定时0.3秒。对于LED发光 管,只用一个IO就可以控制了 (例如使用IOA0 );而对于0.5秒定时,我们可以利用TimerA定时器轻 易地实现,也可以采用2Hz时基中断实现。 首先设置P_TimerA_Ctrl寄存器。当P_TimerA_Ctrl设置为0x0032时,定时器的计数频率将被设置 为32768Hz 。也就是说,CPU每1/32768秒向TimerA发出一次计数信号。我们需要定时0.5秒,也就是 每次要等CPU发出0.3/(1/32768)=16384个计数信号之后对LED发光管进行一次点亮或熄灭操作。 怎样才能知道CPU 已经发出了16384个计数信号?大体上有两种做法: 方法一:给定时器一个初始计数值0 ,开始定时后,程序不断查询P_TimerA_Data 的值,当 P_TimerA_Data达到16384时,表示0.5秒已经到了,再通过程序把P_TimerA_Data 的值恢复为0 ,进行 下一轮定时。这种方法比较简洁易懂,但缺点是明显的:程序需要不停地判断计数值是否达到了9830, 一方面难以“集中精力”完成其他工作 (本例题只需完成一项工作,因此这一点在本例中体现得并不明 显),另一方面也浪费了大量的CPU时间。 方法二:与方法一相比,方法二的效率将大大提高,但是要利用“ 中断” 了。定时0.5s采用哪个时 基信号比较方便呢?SPCE061A单片机时基信号频率丰富,有2Hz、4Hz、8Hz、16Hz、32Hz、64Hz、128Hz、 256Hz、512Hz、1024H、2048Hz、4096Hz等多种频率。我们可以很明显的看出2Hz时基信号中断是最方 便的。只要触发2Hz的时基信号中断,就可以达到0.5s的定时目的。 【程序流程图】 定时器实现方法流程如图所示,中断实现方法流程图略。 【实验步骤】 1.将µ’nSP™ IDE打开后,建立一个新工程。 2.编写程序代码。 3.编译程序,观察结果。 4. 修改定时器、中断参数。 5.编译程序,观察结果。 【程序范例】 根据上面方法一的程序流程,用C语言编写程序如下: 天津理工大学自动化学院 1 《单片机及嵌入式系统应用实验指导书》 #define P_TimerA_Data (unsigned int *)0x700A #define P_TimerA_Ctrl (unsigned int *)0x700B #define P_IOA_Data (unsigned int *)0x7000 #define P_IOA_Dir (unsigned int *)0x7002 #define P_IOA_Attrib (unsigned int *)0x7003 #define P_Watchdog_Clear (unsigned int *)0x7012 main() { int LED_Flag=0; //LED灯亮灭标志 *P_IOA_Dir = 0x0001; //设置IOA0为同相输出 *P_

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档