1. 怎么计算单片机中的下列的延迟函数(12M)
首先你要知道一个指令周期是几秒
算法是1/(晶振频率除以12)
然后你要知道循环究竟执行了几个指令周期
你可以用keil里在线反汇编命令看看你的循环编译成机器语言后到底是几个指令周期
这样就知道了延迟时间
当然你取近似值也可以的
比如
for(i=0,i<255,i++){x=2}
这里x=2是一个指令周期
而执行了255次
假如你的晶振是12mhz的
则你执行一个指令周期是1us
255次是0.255ms
2. 单片机中,12M的晶振是什么意思
就是机器周期的频率,单片机每个动作的最小周期就是12M倒数。指令周期和时钟周期(机器周期)是不同的,这要看指令类型和处理器架构。老的51一般的最小指令周期是12个机器周期,很多指令要多个指令周期。现在的高速单片机就快很多。要编定时程序最好用单片机的内部定时器,需要了解你用的单片机的定时器工作情况,程序很简单。
3. STC89C52单片机为什么选用12M的晶振
个人以为,选用12M晶振主要有两个理由,一是运行速度快,二是51单片机内部是12分频,采用12M晶振可以得到1μS的的时钟周期,这样定时计算会比较方便。
4. 单片机上的晶振为什么有时是12MHZ,有时是11.0592MHZ有什么区别么
标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以先12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机)。
11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M
5. 单片机中晶振频率为12MHZ的机器周期怎么算
1、系统晶振频率是12M,则机器周期=12/12=1us;
2、定时1ms=1*1000=1000us;
3、工作在方式0下:最大计数值是2^13=8192;
4、定时初值=8192-(1*1000)=7192;
5、换算成十六进制数为:定时初值=1C18H。
定时器中断是由单片机中的定时器溢出引起的中断,51单片机中有两个定时器t0和t1。
定时/计数器t0和t1由两个8位专用寄存器组成,即定时/计数器t0由th0和tl0组成,t1由th1和tl1组成。
此外,还有两个8位特殊功能寄存器tmod和tcon。tmod负责控制和确定t0和t1的功能和工作模式。tcon用于控制t0和t1的开始或停止计数,以及定时/计数器的状态。
(5)单片机中的12m扩展阅读:
计时器工作流简介:
定时器的工作过程可以按此顺序进行(以51为例,使用定时器0模式生成一个50ms的定时器)
一、确定使用哪个计时器和使用哪种方式。在此步骤中,使用tmod进行设置。tmod的低位4位用于设置定时器0,高位4位用于设置定时器1。
其中,m0和m1用于设置计时器的工作方式。浇口一般不需要设置。C/T选择计数模式或计时模式,如TMOD=0x01,这意味着定时器0在模式1下工作。
二、接下来,我们需要设定时间。50毫秒的定时器,th0=65535-50000/256和tl0=65535-50000%256可以这样使用。
可以理解为:因为这是定时器的初始值,也就是说,计数脉冲在这个数字的基础上向上增加,当它达到65535时,就会溢出并中断。
三、第三步是打开中断,并使用ie寄存器打开总中断ea=1。此步骤对于所有中断都是必需的,然后打开定时器0中断和ET0=1。
四、此时,准备工作完成,定时器启动,使用tcon寄存器tr0=1实现50ms的定时器。
文献:《单片机原理及应用》,曹巧媛主编,电子工业出版社,第四章单片机定时功能的应用——第一节定时器/计数器的结构和工作原理