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