完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
整体概貌
单片机型号:C8051F020 威廉希尔官方网站 等级:不懂底层编程的菜鸟 写作目的:加深对底层的了解,方便下一步对FPGA底层配置的实现 编写内容:1. 定时器的定时 2.串口波特率的设定 3.定时器3用作ADC的采样时钟 4.多通道ADC的初始化配置 5.多口配置用作通信 6.晶振倍频的实现 写作流程:1.利用对象的功能实现 2.结合代码的功能实现 3.详细代码实现 详细实现 1.定时器的定时 1.1 使用定时器2设置为自动重装载的16位定时/计数器实现以任意ms为单位的定时 1.2 基本概念-原理 1.2.1 定时器的捕获和自动重装载的功能的区别 定时器的捕获:类似与外部中断,由电平的跳变沿触发。应用:遥控器的按键对应一连串高低不一/长度不同的电平,通过捕获对电平时长进行解码从而区分不同的按键。 定时器的自动重装载:定时器溢出后自动加载预设的值。 1.2.2 定时器的溢出 定时器溢出流程图 1.2.3 寄存器配置
1.3 详细代码实现 void Wait_MS(unsigned int ms) { char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page SFRPAGE = TMR2_PAGE; TMR2CN = 0x00; // Stop Timer2; Clear TF2; TMR2CF = 0x00; // use SYSCLK/12 as timebase RCAP2 = -(SYSCLK/1000/12); // Timer 2 overflows at 1 kHz,now the whole 16bits are all zero. TMR2 = RCAP2; // The value of PCAP2 loads registers ET2 = 0; // Disable Timer 2 interrupts TR2 = 1; // Start Timer 2,learn this expression,this variable belongs to TMR2CN while(ms) { TF2 = 0; // Clear flag to initialize,software to clear while(!TF2); // Wait until timer overflows ms--; // Decrement ms } TR2 = 0; // Stop Timer 2,creat a close loop SFRPAGE = SFRPAGE_SAVE; // Restore SFRPAGE } 寄存器配置的时候需要结合用户手册中的配置寄存器和下位机中的芯片说明进行配置 记数初值的计算公式:2^n-clock/12/(1s/t) |
||
|
||
只有小组成员才能发言,加入小组>>
2629 浏览 0 评论
835浏览 1评论
293浏览 1评论
610浏览 0评论
336浏览 0评论
555浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-24 15:06 , Processed in 1.265395 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191