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

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 的值为多少?


相关文章:
电子设计实验报告
电子设计实验报告_信息与通信_工程科技_专业资料。电子...C8051F360 单片机通过一个外部数据存储器接口来寻址片...} void PcaInit(void) { PCA0CN=0x40; PCA0MD...
单片机原理及应用课程实践
实验报告号: 实践一 C8051F410 入门及定时器实验 ...void PCA_Init() { PCA0MD PCA0MD } &= ~0x...实践四 按键输入接口设计实验 一、实验目的: 1、了解...
实验一 简单程序设计实验
五.实验程序 1.实现 LED 的亮灭 #include "c8051F410.h" #define OLD_...{ PCA0MD=0x00;//关闭WDT控制 OSCICN=0xc7;//设置内部振荡器工作(使用内部...
单片机原理与应用课程实践,实验报告
"C8051F410.h" sbit LED = P1; void PCA_Init...(); //定时器的配置 Port_IO_Init(); //管脚...实践四 按键输入接口设计实验 一、实验目的: 1、了解...
单片机实验指导书(2012)
给器件上的数字外设(UART、SMBus、PCA定时器等) ...的设计方法; 二、实验仪器 1、自制的 C8051f410 ...
微机实验报告-2014
实验内容:利用 C8051F310 单片机设计一个 LED 灯...设定定时器模式 ;设置初值 25ms ; 中断允许 ;开总...PCA_Init: anl mov ret PCA0MD, PCA0MD, #0...
C8051F410学习笔记
若要改变PCA0MD的内容, 必须先禁止看门狗定时器 2、 每个端口引脚的输出方式都...C8051f410实验板原理图 2页 免费 学习笔记之一 14页 免费 基于C8051F410的液晶...
单片机原理及应用实验指导—竞赛版V4
二、实验内容 1. C8051F020 单片机最小系统设计、制作与调试。 2. C8051F020...(2)设计一个定时器。要求:能够输入定时时间,定时最长时间为 99 分 59 秒;按...
一种基于C8051F410芯片带校时功能的时钟
主要介绍一种通过微处理器 C8051F410 来实现的、带有校时功能的时钟的设计和...实验指导书》.温州大学,2011 [3] 翟流顺.80C51单片机定时误差的分析.临沧师范...
华中科技大学单片机实验报告 完整版 LED灯控制器
【任务要求】利用 C8051F310 单片机设计一个 LED ...定时 10 秒 定时器 T0:定时中断 25ms 定时器 T1...PCA_Init: anl mov ret PCA0MD, PCA0MD, #0...
更多相关标签:
c8051f定时器中断 | c8051f410 | c8051f410 中文手册 | c8051f410中文资料 | pca定时器 | c8051f410 开发板光盘 | c8051f410官方例程 | c8051f410 reset |