单片机定时/控制器的控制接口
定时/计数器编程的 5 个步骤
1.根据需求选择工作方式,确定方式控制字,写入TMOD寄存器
2.计算定时/计数器的计数值,求计数初值,写入初值寄存器
3.根据需要,开放定时/计数器的中断选项
4.设置定时/计数器控制寄存器TCON,启动定时器
5.等待定时时间到,用查询或中断方式作相应处理
定时/计数器的应用举例
利用定时器产生周期性动作的基本思想:
产生周期性的定时
定时时间到做相应处理
如 设系统时钟频率为12MHz,要求用定时/计数器T0实现从P1.0输出周期为500μs的方形波(即周期性高低电平切换)
分析:
从P1.0输出周期为500μs的方波,只需P1.0每250μs取反一次即可
当系统时钟为12MHz,振荡频率为(1/12M)s,即(1/12)μs,一个机器周期为12个振荡周期,所以一个机器周期为1μs,即计数一次为1μs,则计数值为250,选择计数方式2,计数初值为方式2的 256 - 250 = 6
工作方式2,方式控制字0x02,计数初值6,TH0 = TL0 = 0x06
代码实现
查询法:时刻查询TF的状态并在溢出时做处理
/*
*12MHz的晶振 使P1.0端口输出周期为500μs的方波
*/
#includesbit P1_0 = P1^0;
void main(){
TMOD = 0x02;
TH0 = TL0 = 0x06;
TR0 = 1;
for(;;){
if(TF0){//查询溢出状态
TF0 = 0; //归位
P1_0 = ~P1_0; //处理
}
}
}
中断法:溢出状态触发中断,并使用中断服务处理溢出
#includesbit P1_0 = P1^0;
void main(){
TMOD = 0x02;
TH0 = TL0 = 0x06;
EA = 1;//
ET0 = 1;//中断控制,详见该系列博客中断篇
TR0 = 1;
while(1);//使程序一直执行
}
//中断服务程序
void time0_int(void) interrupt 1 {
P1_0 = !P1_0;
}
长时间定时
一般晶振频率都以MHz为单位,机器周期就以μs为单位,这样短的周期有时无法满足需求,但我们可以用编程手段实现更长时间的计时,比如设置计数变量,每计时100μs就让计数变量加一,计数变量达到10000时就实现了1s单位的计时,这样就可以灵活适应需要
关键字:单片机 定时 控制器 控制接口
引用地址:
单片机基础(六):单片机定时/控制器的控制接口
推荐阅读最新更新时间:2024-11-06 14:22
从单片机步入Linux之运行地址与加载地址
01 单片机存储分配 在玩单片机(以stm32为例)的时候会有RAM空间和ROM空间,RAM空间主要是用于数据的访问,而ROM空间用于存放烧录的固件,当然固件也可以直接加载到RAM中运行,只是说每次上电都需要重新加载。 如上图所示ROM为FLASH地址,而RAM为SRAM地址,毋庸置疑生成的单片机固件会烧录到Flash上,这样才能保证每次上电都有可以正常运行。 对于很多初学者该有疑问了,明明全局变量等等都是分配到RAM上的呀,怎么说固件放到Flash上的呢? 其实并不矛盾,程序指令中访问变量都是访问变量的地址也就是内存的地址,所谓的分配到RAM上,仅仅只是说相应的变量占据了对应的RAM地址,并不能理解为这个变量存在于RAM里面
[单片机]
兆易创新:MCU产品供需关系上供不应求
12月2日,兆易创新在投资者互动平台表示,MCU产品供需关系上还是供不应求。公司在为明年的业绩规划做产能布局,为明年业绩实现提供产能支持。明年整体产能比今年产能情况要乐观,能满足公司业绩持续增长的目标。 在今年整个行业供不应求以及国产替代背景下,目前兆易创新MCU产品在汽车、工业领域占比有比较大的成长,预计明年在汽车、工业领域贡献会继续提升。公司MCU产品在这些对性能、可靠性有高要求的领域及应用场景(包括大家电),预计都是持续成长,市场需求非常旺盛。 兆易创新透露,最新的一颗车规MCU产品已流片,会很快回来进入测试。目前车规级 MCU 主要面向通用车身市场,如座舱等,不会马上进入动力系统。公司在整个汽车市场做长远规划,汽车需求是多
[手机便携]
DCS控制器中采用ARM处理器的冗余设计
在自动化的许多领域,有效性的要求越来越高,因而对自动化系统的容错水平的要求也变得越来越高,尤其在设备停机代价非常大的场合。为了满足这些严格的要求,在DCS系统中通常采用冗余技术,这样才能够满足这些领域所需要的安全性、可靠性和有效性的标准。 在DCS控制系统中,分布处理单元是系统关键的部分。当前这些分布处理单元的控制器往往是基于86系列CPU建构的,这种架构目前被广泛采用。但是由于86系列分布处理单元的特点,导致现在的控制器处理单元存在很多的缺点,如放热量大等。而且在封闭的环境中,这些问题始终很难解决。随着很多低功耗技术的发展和低功耗控制器的出现,分布处理单元的CPU可以有更多的选择,尤其是低功耗的控制器产生很少的热量,且可以使系统
[工业控制]
爱特梅尔32位闪存ARM微控制器AT91SAM7X入选《电子工程专辑》2007年度电子成就奖微控制器类最后五强
全球领先的先进半导体解决方案开发及制造商爱特梅尔 (Atmel Corporation) (美国纳斯达克交易代号:ATML) 宣布,其基于 ARM 技术的闪存 (Flash) 微控制器AT91SAM7X已入围《电子工程专辑》在中国首次举办的 “电子成就奖” 微控制器类别的候选名单。该奖项的评选标准是产品必须能够提供先进的技术,协助中国工程师开发更加成熟完善的电子系统。 AT91SAM7X 架构提供广泛的连接、存储和处理资源,不但可安全地支持各项通信协议,而且还提供实时系统所需的功能。这款微控制器内嵌了一个10/100以太网 (Ethernet) 媒体访问控制器 (MAC)、控制器局域网 (CAN)、全速 (12Mb
[焦点新闻]
单片机C语言程序设计:10s的秒表
#include #define uchar unsigned char #define uint unsigned int sbit K1=P3^7; uchar i,Second_Counts,Key_Flag_Idx; bit Key_State; uchar DSY_CODE ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //延时 void DelayMS(uint ms) { uchar t; while(ms--) for(t=0;t 120;t ); } //处理按键事件 void Key_E
[单片机]
基于MSK4226的直流有刷电机四象限控制
0 引言 本文主要介绍了一种直流电机的四象限控制器。控制器以单片机MSP430F169作为控制核心,利用单片机的PWM功能,可发生多通道占空比可调的PWM信号;PWM信号通过电机驱动芯片MSK4226将电机两端的电压调制成频率一定、宽度可变的脉冲电压序列,控制电机转速与转向;单片机实时监测驱动芯片上的电机电流,发生过流时采取保护;在文章的最后比较了电机四象限控制与单像控制,总结出了四象限控制的优缺点。 1 控制原理及方法 1.1 PWM控制原理 直流电动具有惯性环节,直流电机的数学模型相当于一个电阻和电感串联而成,而冲量相等而形状不同的窄脉沖加在具有惯性的环节上时,其效果基本相同。冲量指窄脉沖的面积,效果基本相同是指环节的
[单片机]
单片机初步测试
今天研究Keil工具的调试与使用,知道怎么调试出printf和怎么看IO输出状态,并简单的测试了延迟程序,但是只限与C ,汇编是硬伤啊,有时间再好好看看 #include #include #ifdef MONITOR51 char code reserve _at_ 0x23; #endif
[单片机]
汽车大灯中擎耀智能控制器在车灯智能化配置下的创新与分析
随着科技的飞速发展,汽车工业也在不断地进行着革新。其中,车灯作为汽车的重要组成部分,其智能化配置已经成为汽车行业的一大趋势。这种趋势不仅为消费者带来了更加安全、便捷的驾驶体验,同时也为商家提供了丰富的商业机会。汽车工业的迅猛发展,车辆电子化、智能化水平的不断提升,车灯作为汽车的重要组成部分,其功能和控制方式也在经历着革命性的变化。传统的机械式车灯控制已经逐渐让位于更为高效、智能的CAN数据协议控制系统。 CAN(Controller Area Network)即控制器局域网络,是一种国际标准的串行通信协议,广泛应用于汽车行业中。在车灯系统中,CAN数据协议使得车灯与车辆其他电子控制单元之间的信息交换变得可能,实现了车灯的智能化
[嵌入式]