当前位置:首页 >> 信息与通信 >>

C8051f410定时器与PCA设计实验


实验一
一、实验目的

定时器与 PCA 设计实验

1、掌握 c8051f410 单片机片内定时器的使用方法; 2、掌握 c8051f410 单片机片内 PCA0 边沿触发的捕捉工作方式; 3、掌握仿真器及 Keil 软件的使用,初步掌握程序的调试方法,包括跟踪、单步运行和 断点设置等。

二、实验仪器
1、自制的 C8051f410 实验开发板 2、直流稳压电源、示波器 3、仿真器(U-EC6) 4、PC 机 1块 各1台 1只 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 24500000 //内部时钟频率 #define T0_CLOCKS 245 //定时器 0 的计数次数,定时值 10 us #define T2_RELOAD_CLOCKS 6125 //定时器 2 计数次数, 250 us sfr16 PCA0CP0 = 0xFB; sfr16 TMR2RL = 0xCA; sfr16 TMR2 = 0xCC; sbit TEST_OUT = P0^1; static unsigned int capture_period; void OSCILLATOR_Init (void) { OSCICN = 0x87; CLKSEL = 0x00; } void PORT_Init (void) { XBR0 = 0x00; XBR1 = 0x41; P0MDOUT |= 0x02; } void PCA0_Init (void) { TMOD &= 0xF0; TMOD |= 0x02; CKCON |= 0x04; TH0 = -T0_CLOCKS; TL0 = -T0_CLOCKS; //T0 - 8 位自动重装, 使用 SYSCLK 作为时钟源 //配置系统时钟 24500000Hz

//T2 寄存器

PCA0CN = 0x00; //配置 PCA,使用 T0 作为计数时基 PCA0MD = 0x04; PCA0CPM0 = 0x21; //上升沿捕捉 EIE1 |= 0x10; //中断使能 CR = 1; TR0 = 1; }

void TestTimerInit (void) { CKCON |= 0x10;

//T2 - 16 位自动重装, 使用 SYSCLK 作为时钟源

TMR2RL = -(int)T2_RELOAD_CLOCKS; TMR2 = -(int)T2_RELOAD_CLOCKS; TMR2CN = 0x04; } void PCA0_ISR (void) interrupt 11 { static unsigned int current_capture_value, previous_capture_value; if (CCF0) { CCF0 = 0; current_capture_value = PCA0CP0; capture_period = current_capture_value - previous_capture_value; previous_capture_value = current_capture_value; } else { PCA0CN &= ~0x86; } } void main (void) { PCA0MD = 0x00; PORT_Init (); OSCILLATOR_Init (); PCA0_Init (); TestTimerInit (); EA = 1; while (1) { if (TF2H) { TEST_OUT = ~TEST_OUT;

TF2H = 0; } } }

四、实验现象和结果
1、下载运行程序,利用示波器可以从单片机 P0.1 脚检测到 f=2kHz 的方波信号; 2、运行程序后,通过 Keil 软件的“观察”窗口,查看全局变量 capture_period=32H。

五、预习要求
1、读懂程序; 2、预先给出运算结果,以便和实验结果比较;

六、思考题
1、全局变量 capture_period=32H,是如何计算出来的? 2、修改代码从 P0.1 脚产生 100ms 的方波信号,并用示波器观察,此时 capture_period 的值为多少?


相关文章:
C8051F410例程简介
PCA 例 6:软件定时器模式 程序描述:利用 PCA 软件定时器模式,产生定时的中断;...c8051f410 270页 1下载券 C8051f410实验板原理图 2页 免费 C8051f410串口...
C8051F020的PCA配置小结
C8051F020的PCA配置小结_信息与通信_工程科技_专业资料。C8051F020 PCA 配置小结...在计数器/ 定时器溢出(CF) 中断被允许时,该位置 1 将导致 CPU 转向 CF ...
基于C8051F410的双燃料发动机ECU
C8051F410 作为 ECU 设计的核心,它具有 6 个捕捉...看门狗定时器功能的可编程计数器/ 定时器阵列(PCA)...4 具体的船上实验结果 分享到: X 分享到: ...
单片机实验指导书(2012)
给器件上的数字外设(UART、SMBus、PCA定时器等) ...的设计方法; 二、实验仪器 1、自制的 C8051f410 ...
单片机原理与应用课程实践,实验报告
"C8051F410.h" sbit LED = P1; void PCA_Init...(); //定时器的配置 Port_IO_Init(); //管脚...实践四 按键输入接口设计实验 一、实验目的: 1、了解...
PCA+T0+T1定时4个定时器.C
PCA+T0+T1定时4个定时器.C_电子/电路_工程科技_专业资料。PCA的2个T0+T1...C8051f410定时器与PCA设... 4页 免费 用定时器 T0 或 T1 模拟... 9页 ...
基于C8051F410单片机的剩余电流动作保护装置设计
基于C8051F410 单片机的剩余电流动作保护装置设计 【摘要】本文首先介绍了 C8051F...定时器阵 列(PCA)硬件实时时钟(smaRTClock) ,工作电压可低至 1V,带 64 ...
一种基于C8051F410芯片带校时功能的时钟
主要介绍一种通过微处理器 C8051F410 来实现的、带有校时功能的时钟的设计和...应用实践课程》实验指导书》.温州大学,2011 [3] 翟流顺.80C51单片机定时误差的...
基于C8051F410单片机的流水灯设计与制作
实验五 基于 C8051F410 单片机的流水灯设计与制作一、实验目的 1、 认识和了解...PCA0MD &= ~0x40; // WDTE = 0 关闭看门狗,上电默认打开 P1MDOUT=0x...
C8051F020实验指导书_图文
C8051F020实验指导书_其它_职业教育_教育专区。C8051...安装而设计的;C8051F020 CPU 板是将 C8051F020 ...计数器/定时器阵列(PCA) 5 个通用16 位计数器/...
更多相关标签: