❶ 关于51单片机的数值计算问题
U,是多少位二进制数字?
-------------------------
MOV A, U
MOV B, #209
MUL AB ;乘以209,可以方便以后的计算.
;乘积为16位。再除以256,右移8位即可.
;商就是剩下在B中的8位数了.
MOV A, B
MOV B, #10
DIV AB ;除以10,余数就是"一位小数"
MOV R2, B ;保存小数.
MOV B, #10
DIV AB ;再除以10,余数就是"个位数"
MOV R1, B ;保存个位数.
MOV R0, A ;保存十位数.
;完
结果的两位整数,一位小数:分别存在 R0, R1, R2 中。
❷ 单片机计数值问题,注意不是计数初值。已知晶振频率为12MHz,问1ms的计数值应该如何计算,如果换成
1ms对应的1000的计数值,公式就是计数值=定时时间/机器周期。这是51单片机工作在方式1
❸ 52单片机T2定时计数器装载计数值是如何计算
跟T1、T0完全一样的。T2也是16位的定时器,你要定时1S,那就是20个50ms循环,也就是定时50mS,T0T1你应该会算吧,一模一样,2^16-(定时时间/机器周期),50ms的常数还是3CB0(当然是16进制的)。
下面是我以前程序中的一段。
(以下是初始化中的)
TH2=0x3C;/**T2定时初值,50ms**/
TL2=0xB0;
T2CON=0x00;/**T2工作模式,16位定时器**/
RCAP2H=0x3C;/**T2自动重装值,每次溢出后,自动将设置数值重新装入**/
RCAP2L=0xB0;
ET2=1;/**T2中断允许**/
EA=1;
TR2=1;/**T2启动**/
(以下是中断程序的一部分)
void Timer2(void) interrupt 5/**T2中断响应程序**/
{
TR2=0;/**停止T2计数器**/
TF2=0;/**清除T2中断标志,必须**/
con1s++;/**秒计数器加1**/
if(con1s==20)/**当秒计数器计到20,代表1秒,50ms*20=1秒**/
{
con1s=0;
second++;
。。。。。。
TR2=1;
}
T2最有意思的地方是,可以自动重装载,不过它的中断标志必须人工清除,与T0T1不同。
后两者是初值必须人工装载,但中断标志可以自动清除,刚好相反。
❹ 单片机如何计算初值
一般最直接的想法就是,指定一个计时值x,然后从0开始累加计数,计数到x表示时间到,可以处理事务了。这种处理方法,需要一个数值比较器,每计一次数,就比较一下。这对单片机或者说硬件电路来讲,一个8位计数器就需要包含一个8位数值比较器,实在不够简便。
第二种想法,是指定一个计时值x,然后进行减计数,减计数到0表示时间到。这也要一个比较器,只不过是个0值比较器,硬件电路上比上一种要简单一些,但减计数器还是不常用。我们知道累加器才是最简便的硬件电路之一。
上面两种方法,都是软件实现的定时器的合理想法。那么硬件电路实现定时最简便的方法是什么呢?
那就是用累加器来实现。比如一个8位的累加器,可以从0累加计数,计数到256时溢出,产生溢出信号,就可以触发事务处理了。
要是我们只需要计数10次就够了,则可以将计数初值定义为246。那样,计数10次后就可以达到256,产生溢出信号了。
所以就有了(2^n-x)。n是计数器的位数;2^n就是最大计数值;x是计数初值。整个这段,表示我们需要的计时次数。
计数器每次计数的时间间隔是t,及计数周期。那么总的计时时长m=计数周期×计数次数=t×(2^n-x),也就是m=(2^n-x)×t。
计数位数n由选用的单片机确定,通常等于8,12,16或32等等,即8位、12位等计数器。计数周期t由定时器基础时钟确定,可通过设置定时器时钟源和选择时钟分频数确定。这两项灵活性不大,一般在程序初始化时就应设定。
初值x可以在应用时,根据定时需求进行修改确定。
协调好n,t和x三者的设定,就可以完美实现定时功能了。
❺ 51单片机用定时器计时应该如何计算求大神支招
这个其实很简单的,你只需要知道一个条件即可:晶振频率。
因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12×10^6)=1us,也就是说计数器没1us计数一次。
那么有了这个条件就好办多了,一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能计时65.536ms,则65536减去多少就是定时多少,如(65536-X)/256,就是定时X微秒。
那么如果晶振不是12MHz,就要把上述的X乘以12/晶振,得到的值就是定时时长。原理相同。
有不懂的地方随时回复我。
希望我的回答能帮助到你。
❻ 单片机计数初值的计算
呵呵 正确为你解答:
1 可以按定时时间的计算公式, 计算出定时器的时间常数X:
定时时间T=(2的N次方-X)12/单片机晶振频率
2 N为定时器的工作方式:
方式0时,N=13
方式1时,N=16
方式2时,N=8
3 根据定时时间和工作方式,计算出时间常数X
把X转换成二进制数,高8位送给TH1,低8位送给TL1,就可以启动定时器开始定时了。
例如: 工作在方式1,定时时间为1000微秒 晶振频率=12MHZ
则 定时时间T=(2的16次方-X)12/12MHZ=1000 解出 X=64536=FC18H
❼ 【单片机】单片机的定时时间是怎样计算
单片机的定时时间的计算公式=计数值(定时值)* 机器周期= 计数值(定时值)* 12 / 晶振频率。
上面的两个等号是等价的,因为,单片机的机器周期=12秒/晶振频率,因此两个公式通用。
完成一个基本操作所需要的时间称为机器周期。一般,一个机器周期由 若干个S周期(状态周期)组成。80C51系列单片机一个机器周期由6个S周期组成。一个S周期(状态周期),由2个时钟周期组成。
若干个机器周期,组成了指令周期。根据指令不同,所需的机器周期数也不同。
(7)单片机计数值怎么计算扩展阅读
几种典型指令;
1、单字节周期指令(比如 INC A)
2、双字节单周期指令(比如 ADD A,#data)
3、单字节双周期指令 (比如 INC DPTR)
4、单字节双周期指令 (比如MOVX A @DPTR)
❽ 51单片机各种位数定时器初值计算方法
对12MHz ,1个机器周期 1us ,12/fosc = 1us
。
方式0是13位定时器,最大时间间隔 = 2^13 = 8.192ms
方式1是16位定时器,最大时间间隔 = 2^16 = 65.536ms
方式2是8位定时器,最大时间间隔 = 2^8 = 0.256ms =256 us
方式3 仅适用于T0,此时T0分成两个8位计数器,T1停止计数
当选用定时器的方式1时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为:
THX = (2^16 - N)/256 TLX = (2^16 -N )%256(此处的X为定时器0或定时器1)
公式为:(2^y - X)*Tcy = t
Tosc= 1/ fosc
一个机器周期 = 12个时钟周期 = 12/fosc
溢出速率 = 1 / 溢出时间
故:初值X = 2^y – t/Tcy
THX = 高八位
TLX = 低八位
注:
X:定时器初值
N:计数值
y:定时器工作方式
fosc:晶振频率
Tcy:机器周期,Tosc:时钟周期
Tcy = 1/Tosc
❾ 单片机中定时计数器的TH0和TL0的值如何计算
单片机在不同的工作方式下,计数器的位数不同,因而最大计数值也不同。现在设最大计数值为M,那么在各方式下的M值如下;
方式0:M=2^13=8192
方式1:M=2^16=65536
方式2:M=2^8=256
方式3:定时器0分为两个8为定时器,所以两个M均为256.
因为定时器是做加1计数,并在计满溢出时产生中断,因此初值X可以这样计算:
X=M-计数值
现在举例说明定时处置的计算方法,若80C51主频为6MHz,要求产生1ms的定时,计算初值。
在6MHz的主频下,计数器每加1所需的时间是2uS。若果要产生1ms的计时就需要“加1”
500次。那么500即为计数值,如果要求在方式1下工作,则计数初值X=M-计数值=65536-500=65036=FE0CH
❿ NEC单片机的计数初值的计较
定时或计数法子下计数初值若何确定,定时器决议不同的事变法子,不同的把持情势其计数值均不类似。若设最大计数值为m,各把持情势下的m值为:
情势0:m=213=8192
情势1:m=216=65536
情势2:m=28=256
情势3:m=256,定时器t0分成2个自力的8位计数器,所以th0、tl0的m均为256。
因为mcs-51的两个定时器均为加1计数器,当初到最大值(00h或0000h)时产生溢出,将tf职位地方1,可发出溢出间断,因此计数器初值x的计较式为:x=m-计数值式中的m由把持情势确定,不同的把持情势计数器的长不类似,故m值也不类似。而式中的计数值与定时器的事变法子有关。
1、计数事变法子时
计数事变法子时,计数脉冲由外部引入,是对外部冲进行计数,因此计数值依照哀求确定。其计数初值:x=m-计数值
例如:某工序哀求对外部脉冲旗帜暗号计100次,x=m-100
2、定时事变法子时
定时事变法子时,因为计数脉冲由内部供给,是对板滞周期进行计数,故计数脉冲频率为fcont=fosc×1/12、计数周期t=1/fcont=12/fosc定时事变法子的计数初值x便是:
x=m-计数值=m-t/t=m-(fosc×t)/12
式中:fosc为振荡器的振荡频率,t为哀求定时的时间。
定时器有两种事变法子:即定时和计数事变法子。由tmod的d6位和d2位决议,其中d6位决议t1的事变法子,d2位决议t0的事变法子。=0事变在定时法子,=1事变在计数法子。并有四种把持情势:
1、情势0:13位计数器,tli只用低5位。
2、情势1:16位计数器。
3、情势2:8位自动重装计数器,thi的值在计数中不变,tli溢出时,thi中的值自动装入tli中。
4、情势3:t0分成2个自力的8位计数器,t1停止计数。
mcs-51有5个间断源,可分为2个间断优先级,即高优先级和低优先级,间断自然优先级:
外部间断0;定时器0间断;外部间断1;定时器1间断;
串行口间断;定时器2间断
(1)同级或高优先级的间断在进行中;
(2)现在的板滞周期还不是履行指令的末端一上板滞周期,即在履行的指令还没完成前不响应任何间断;
(3)在履行的是间断返回指令ret1或是访谒专用寄存器ie或ip的指令,换而言之,在reti大要读写ie或ip今后,不会登时响应间断请求,起码要在履行此外一要指令之扣才会响应。
(一)间断响应条件
cpu响应间断的条件有:
(1)有间断源发出间断请求;
(2)间断总允许位ea=1,即cpu开间断;
(3)哀求间断的间断源的间断允许位为1,即没有被屏蔽。
八、串行口事变法子及帧格局
mcs-51单片机串行口可以经过进程软件设置三种办法:
法1:与常见的微型计较机的串行口不同,它又叫同步移位寄存器输出法子。在这种法子下,数据从rxd端串行输出或输入,同步旗帜暗号从txd端输出,波特率安稳不变,为振荡率的1/12。该法是以8位数据为一帧,没有肇端起誓位和停止位,先发送或接管最低位。
法2:可接管或发送11位数据,以11位为一帧,比方式1增加了一个数据位,此外类似。第9个数据即d8位具有特别的用场,可以经过进程软件搂控制它,再加特别成果寄存器scon中的sm2位的配合,可使mcs-51单片机串行口适用于多机通信。法子2的波特率安稳,只需两种决议,为振荡率的1/64或1/32,可由pcon的最高位决议。
法3:法3与法2类似,唯一的区别是法3的小组特率是可变的。而帧格局与法2-样为11位一帧。所以子3也适当于多机通信。