设单片机的晶振为6MHZ,在各工作方式下就算定时3ms所需要的定时初值
这个程序你写的太不规范了。
改你的程序.
DELAY MOV R7,#50 ;2 2代表机器周期
D3: MOV R6,#50 ;2
D2: MOV R5,#200 ;2
D1: DJNZ R5,D1 ;2
DJNZ R6,D2 ;2
DJNZ R7,D3 ;2
RET ;2
其实这个程序来做延迟程序是有误差的,而且很大。
实际延迟时间 t=2us+((2us*200+2us)*60)*50+2us= ...
自己算吧 反正比1S延迟要高,仔细看看计算式子的顺序。以基本2重循环思路来解决3重循环。如果要求不高的话,用它来做1S延迟也可以。
下面来给你写一个通过定时,计数器来做延迟子程序。(精确度很高)
有关知识看定时计数器单元的介绍。
DELAY: MOV TMOD,#01H ;选择工作方式1 定时器0
MOV TH0,#**
MOV TLO,#**
SETB TR0
LOOP1: JNB TF0,LOOP
CLR TF0
SJMP MAIN
** 的初始值计算方法 1000 000US=(65535-X)/T
T=12*1/FOSC
FOSC 即为晶振频率 用X的值除以256,商给TH0,余数给TL0
这样,如果需要延迟子程序直接调用。精确度极高。
希望对你有用。不懂继续问
由于你没有提出矩形脉冲的频率,所以我就没有改TH0,TL0的初值,现在的程序里P1.0的频率是976.5625Hz
ORG 0000H
AJMP MAIN
ORG 000BH
CPL P1.0
ORG 0030H
MAIN: MOV TMOD,#02H
SETB TR0
SETB EA
SETB ET0
SJMP $
END
方式1是16位的定时/计数器,计满为2^16=65536
方式2是8位的定时/计数器,计满为2^8=256.
方式1:3ms:初值是65536-3000/2=64036,TL0=FAH;TH0=24H。即得到初值
还要看你用的是什么单片机,一般资料里都有相应的计算方法的,或者同系列的芯片资料,同系列的方法应该都一样的
6M、51的片子3mS初值
方式0:Ox1A24
方式1:0xfa24
方式2、3无法定时到3mS这么长
需要的话留Q给你个定时器计算器软件
有个小工具的软件,叫MCUTOOL的,很方便地算出定时初值。
设单片机的晶振为6MHZ,在各工作方式下就算定时3ms所需要的定时初值
方式1:3ms:初值是65536-3000\/2=64036,TL0=FAH;TH0=24H。即得到初值
单片机的晶振频率为6MHz,执行下列程序需要 个机器周期和 时间...
根据晶振为6MHz知每个机器周期为2us,为了说明方便对上面程序段编了个号:第1条指令只在循环体外,只执行一次,要1个机器周期;第2到第4为一循环结构,循环次数由R3决定,28H表示40次,而这三条指令执行一次所需的机器周期为4个,总共160个机器周期;第5条指令在循环体外,只执行一次,要2个机器周期...
如果晶振频率为6MHz时,定时\/计数器在工作方式0、方式1、方式2下,其最...
工作方式0:最大定时时间 TM = 8192*MC工作方式1:最大定时时间 TM = 65536*MC工作方式2:最大定时时间 TM = 256*MC其中MC为内部机器脉冲周期(即机器周期)晶振为6MHz,如果按常规标准的12分频的51系列单片机算的话(MC = 12*Tosc = 2微秒)。则各自最大定时时间如下:工作方式0:最大定时时间 TM = 8192*MC ...
晶振频率为6MHz定时\/计数器的最大定时时间为
晶振频率为6MHz时,定时\/计数器在工作方式0、方式1、方式2下,其最大的定时时间分别为:16.384 mS;131.072 mS;0.512 mS;根据计算公式,X=M-计数初值=M-(fosc*t)\/12,其中X是计数初值,要得到最大定时时间X=0;M最大计数值,工作方式0时M=2^13=8192,工作方式1时M=2^16=65535,工作...
单片机振荡频率6mhz工作在方式一
工作在方式1,定时时间为1000微秒 晶振频率=6MHZ 则 定时时间T=(2的16次方-X)12\/6MHZ=1000 解出 X=2的16次方-500
单片机的晶振频率为6MHz,定时50ms,则初值怎么设置,应工作在哪种...
51单片机,晶振频率为6MHz时,一个计时脉冲是2us,定时50ms,设置工作方式1即16位模式,最大计数值65536,50ms是25000个脉冲,初值是65536-25000=40536,其中高8位是(65536-25000)\/256,低8位是(65536-25000)%256。
当定时\/计数器在工作方式1下,晶振频率为6MHz,最短定时时间和最长定时...
首先51单片机机器周期的计算方式=12\/晶振(Hz),单位秒(s),你的6MHz晶振那么就是12\/6M=2us,而计数器每一个机器周期计数一次,所以最短定时时长就是2us;但是最长定时可以说是无限长,若你指的是在不使用变量计时的条件下,根据工作方式1的16位计数最大为65536,因每2us计数一次,则单个计时周期...
单片机的晶振频率为6mhz,执行下列程序需要多少时间(请详细说明,并说明...
对于 STC 系列1T单片机 MOV R3,#100 ;2 为 0.333... uS LOOP: NOP ;1 为 0.166... uS NOP ;1 为 0.166... uS NOP ;1 为 0.166... uS DJNZ R3,LOOP ;4 为 0.666... uS RET ;4 为 0.666... uS 0.333...uS +(0.166...uS*7*100)+0....
若单片机的晶振频率为6MHz,从P1.0输出频率为200ms的连续方波,定时器用...
分析:主时钟6MHz, 输出方波的周期为200ms(高电平100ms,低电平100ms),设定T0为100ms 中断,每中断一次,就将输出电取反一次。编程:include<REG51.h> sbit Out=P1^0;void main(){ TMOD=0x01;TH0=(65536-100000\/2)\/256;TL0=(65536-100000\/2)%256;EA=1; ET0=1; TR0=1;while(1...
单片机,当定时器\/计数器工作方式于1下,晶振频率为6M,请计算最短定时时间...
定时器是通过计数溢出来计时的,工作方式1是16位计数方式。晶振频率为6M,那么计数器加1需要一个机器周期2us。机器周期=12\/fosc,fosc为晶振频率。计数初值为1时,定时最短为2us,最长是计2的16次方(即65536),最长时间=2*65536us=131.072ms 。在工作方式1下,定时时间:t=(65536-T0初始值)*...