c8051f410定时器与pca设计实验.pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一实验一 定时器与定时器与 PCA 设计实验设计实验 实验一实验一 定时器与定时器与 设计实验设计实验 一、实验目的 1、掌握 c8051f410单片机片内定时器的使用方法; 2、掌握 c8051f410单片机片内 PCA0边沿触发的捕捉工作方式; 3、掌握仿真器及 Keil 软件的使用,初步掌握程序的调试方法,包括跟踪、单步运行和 断点设置等。 二、实验仪器 1、自制的C8051f410 实验开发板 1块 2、直流稳压电源、示波器 各1 台 3、仿真器(U-EC6) 1只 4、PC机 1台 三、实验内容 实验任务:实验任务:利用 PCA0 上升边沿触发的捕捉方式测量方波的周期,实验电路如图所示, 实验任务实验任务:: 将 CEX0 配置到P0.0端口,并将被测方波信号由 P0.0 输入到 C8051F410 中的PCA0。 本实验任务可以拆分为以下 2 个步骤,分别完成: (1)首先产生能被PCA0上升边沿触发捕捉的方波信号。 利用片内定时 T2 产生方波信号,并通过 P0.1脚输出,具体细节参见代码中注释。 (2)使用导线连接P0.0与 P0.1 脚,将产生的方波信号通过输入 CEX0进行捕捉,PCA0 时基输入选择为定时器 T0 的溢出,通过计算,可以求到方波的周期。 说明:在代码中定义一全局整型变量 capture_period,用来保存 PCA0 在相邻的两次正 边沿捕捉期间,PCA0 中定时器计数的次数(前后两次计数值之差),PCA0 的定时器每 10 us 计数一次,方波的周期为 500us,故 capture_period = 500/10 = 5 0= 32H 。 实验参考实验参考代码代码:: 实验实验参考参考代码代码:: #include <c8051f410.h> #define SYSCLK // 内部时钟频率 #define T0_CLOCKS 245 //定时器 0 的计数次数,定时值 #define T2_RELOAD_CLOCKS 6125 //定时器 2 计数次数, 250 us sfr16 PCA0CP0 = 0xFB; sfr16 TMR2RL = 0xCA; //T2 寄存器 sfr16 TMR2 = 0xCC; sbit TEST_OUT = P0^1; static unsigned int capture_period; void OSCILLATOR_Init (void) //配置系统时钟z { OSCICN = 0x87; CLKSEL = 0x00; } void PORT_Init (void) { XBR0 = 0x00; XBR1 = 0x41; P0MDOUT |= 0x02; } void PCA0_Init (void) //T0 - 8 位自动重装, 使用 SYSCLK 作为时钟源 { TMOD &= 0xF0; TMOD |= 0x02; CKCON |= 0x04; TH0 = -T0_CLOCKS; TL0 = -T0_CLOCKS; PCA0CN = 0x00; //配置 PCA ,使用T0 作为计数时基 PCA0MD = 0x04; PCA0CPM0 = 0x21; //上升沿捕捉 EIE1 |= 0x10; // 中断使能 CR = 1; TR0 = 1; } void TestTimerInit (void) //T2 - 16 位自动重装, 使用 SYSCLK 作为时钟源 { CKCON |= 0x10; TMR2RL =

文档评论(0)

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

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

1亿VIP精品文档

相关文档