设单片机晶振频率为12MHZ,试编写一延时500us的子程序。51单片机

作者&投稿:系叙 (若有异议请与网页底部的电邮联系)
设单片机晶振频率为12MHZ,试编写一延时1s的子程序~

//----假设,系统工作于
12mhz/12t的传统51单片机下.#include

sbit
test
=
p1^0;
void
delay_50ms(unsigned
char
times)
{
while(times
--
)
{
th0
=
0x3c;
//----装入初值,定时器0定时50ms
tl0
=
0xb0;
tr0
=
1;
//-----启动定时器
while(!tf0);
//-----等等定时时间到达
tf0
=
0;
//-----清零定时到达标志
}
}
void
delay_1s(unsigned
char
times)
{
while(times
--
)
{
delay_50ms(20);
}
}
void
main(void)
{
tmod
=
0x01;
//----定时器0工作于方式1
while(1)
{
delay_1s(2);
test
=
~test;
}
}

猜想你问的是1ms.
下面为你写出1ms的程序:
用的是11.0592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了。调用的时候直接把uinsigned int ms改成1就是1ms.

void ConfigTimer0(unsigned int ms)
{
unsigned long tmp;
tmp = 11059200/12;
tmp = (tmp * ms)/1000;
tmp = 65536 - tmp;
tmp = tmp + 18;
T0RH = (unsigned char)(tmp >> 8);
T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 =1;
TR0 = 1;
}

如果是标准的12T单片机模式,那么一个时钟周期就是1us,把定时器T0(或T1)设置为16位模式,TH0、TL0的初始值分别设为#FEH、#0BH,进入子程序时,启动定时器T0,定时器从#FEOB运行500个时钟周期,正好是#FFFFH,定时器T0溢出,即为500us。

void delay(uint time)
{
while(time--);
}
12M晶振,一个机器周期就是1us,time 给 500 就可以

DELAY:MOV R0,#250
DJNZ R0,$;执行一次2us共执行250次用时2×250=500us
RET

DELAY: ;误差 0us
MOV R6,#47H
DL0:
MOV R5,#02H
DJNZ R5,$
DJNZ R6,DL0
RET

;********************汇编****************************
DELAY:
MOV R6,#47H
DL0:
MOV R5,#02H
DJNZ R5,$
DJNZ R6,DL0
RET
/****************C语言*******************/
void delay(void)
{
unsigned char a,b;
for(b=71;b>0;b--)
for(a=2;a>0;a--);
}


单片机的时钟频率为1MHz,4分频,1个时钟周期怎么计算?
如果单片机的晶振频率为1MHz的话,则晶振周期是1us 系统时钟4分频的话:周期是 1us*4 =4us

单片机利用定时器\/计数器T0产生频率为1MHZ的方波,并由单片机的P1.2输出...
用普通51单片机无法产生1M晶振的方波。可以用STC12系列或者其他有1T模式的单片机。比如用12M晶振:ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#02H MOVTH0,#250 MOV TL0,#250 SETB TR0 SETB ET0 SETB EA SJMP T0ISR:CPL P1.2 RETI END ...

单片机: _nop_和delay(1)延时时间是多久?和晶振频率的关系是什么?_百 ...
_nop_的延时时间是一个机器周期,与晶振的关系是:osc\/12\/1000000微秒 比如12M晶振,=12*1000000\/12\/1000000=1us delay(1)则不知道是多少延时时间了,这与你的子程序本身有关。比如:delay(unsigned char a){ unsigned char i,j;for(i=0;i<a;i++)for(j=0;j<120;j++);} 那么delay(1)...

单片机的晶振频率怎么确定?
根据使用需要确定,举例:如果要产生标准的串口波特率,应使用11.0592MHz,如果要让51单片机产生整数的时钟频率可使用12MHz或者24MHz单片机。另外根据单片机本身的参数,不要选择过高的频率,否则会工作不稳定。举例:Atmega8L-8PU,这个单片机后面一个8的意思就是建议最大工作频率不要超过8MHz,如果超过8MHz...

假设单片机的晶体振荡器的频率是12MHz,利用定时器1采用方式1定时20ms...
若选择12M晶振,则定时器的计数频率为1MHZ。假设定时时间为T,机器周期为T1,即12\/晶振频率。X为定时器初值。则 X=2^n-T\/T1。方式0,n=13,方式1时,n=16,方式2和方式3,n=8 本题技术初值计算如下:X=2^16-20*10^(-3)\/(12\/12*10^6)=65536-20000=45536=B1E0H ...

51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波...
51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波,使用定时器 51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波,使用定时器T1工作方式2... 51单片机晶振频率12MHz,编程实现P1.0输出频率为2KHz,占空比为50%的方波,使用定时器T1工作方式2 展开 我来答 答题抽奖 首次...

8051单片机系统中,已知晶振频率为12MHZ,用定时 计数器T1,编程实现从P...
void  time1 H_int(void)  interrupt 3 { TL0=(65536-50000)%256;TH0=(65536-50000)\/256;                        &#...

当80C51单片机晶振频率为12MHz时,时钟周期.机器周期各是多少?_百度知 ...
当80C51单片机晶振频率为12MHz时,时钟周期为(1\/12)微秒,机械周期为1微秒。时钟周期:一个时钟脉冲所需要的时间。在计算机组成原理中又叫T周期或节拍脉冲。是CPU和其他单片机的基本时间单位。它可以表示为时钟晶振频率(1秒钟的时钟脉冲数)的倒数(也就是1s\/时钟脉冲数,比如1\/12MHz),对CPU来说,...

单片机采用12M晶振,T0工作于定时器方式1,如若定时5mS,则定时器初值是多...
1.单片机采用12MHz的晶振,则51单片机的机器周期为晶振频率的12分频,即 f机器=12M\/12=1MHz,则机器周期为1微秒 2.采用定时器方式1,这个定时器为一个16位的定时器,最长的定时时间为(0xFF)65535微秒 3。如果想定时5ms即5000微秒的话,只需用下面的公式计算即可 定时器初值=最长定时时间-需要定时...

51单片机采用12Mhz晶振,采用定时工作方式1,定时时间为:40毫秒,计算出...
T0方式1为16位定时计数器。计满TL0和TH0需要 2^16 =65536个数,设时钟频率为 12MHz , 此时 1 个机器周期 = 12个时钟周期 = 1µs, 即计数一次为1µs,现要计时40毫秒=40000us, 即计数40000次, 显然在TH0T和TL0中要预先装入一个数值N, 使 N + 40000 = 65536 , 计算得 ...

柳河县19532884279: 设80c51单片机的晶振频率为12MHz,试编程输出频率为100Hz,占空比2:10的矩形波 -
鱼屠人免: ;如下即可: ORG 0000HMOV TMOD, #01HSETB TR0 LP1:SETB P1.0MOV R2, #6 LOOP:MOV TH0, #(65536 - 16666) / 256MOV TL0, #(65536 - 16666) MOD 256JNB TF0, $CLR TF0CLR P1.0DJNZ R2, LOOPSJMP LP1 END

柳河县19532884279: 8051单片机系统中设晶振频率为12Mhz,请用T0定时中断编写一个程序,实现在P1 -
鱼屠人免: ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-60000) MOV TL0,#LOW(65536-60000) SETB TR0 SETB ET0 SETB EA SJMP $ T0ISR:CLR TR0 MOV TH0,#HIGH(65536-60000) MOV TL0,#LOW(65536-60000) SETB TR0 CPL P1.3 RETI END

柳河县19532884279: 单片机编程 设单片机的晶振频率为12MHZ,请编出利用定时/计数器T0,使之工作在方式1,产生50ms定时, -
鱼屠人免: #include"reg52.h" #define uchar unsigned char sbit Wave=P1^0; void Timer0() interrupt 1 { static uchar t50ms; TL0=0xb0; TH0=0x3c; t50ms=++t50ms%20; if(!t50ms) Wave=~Wave; } void TimerInit() { TMOD=0x01; TH0=0x3c; TL0=0xb0; TR0=1; EA=1; ET0=1; } void main() { TimerInit(); while(1); } 直接打的,没进行编译,希望不会错.

柳河县19532884279: 1, 设单片机晶振频率为12MHZ,试编写一延时1s的子程序. -
鱼屠人免: //----假设,系统工作于 12MHz/12T的传统51单片机下.#include <reg51.h> sbit Test = P1^0; void Delay_50ms(unsigned char Times) { while(Times -- ) { TH0 = 0x3C; //----装入初值,定时器0定时50ms TL0 = 0xB0; TR0 = 1; //-----启动定时器 while(!...

柳河县19532884279: 设单片机晶振频率为12MHz,请编写一个程序段,使用定时器1以方式1产生周期为100ms的等效方波 -
鱼屠人免: 主程序里这样设置 TMOD=0x10;//定时器1作为定时器用 TH1=(65536-50000)/256; TL1==(65536-50000)%256; EA=1;//开总中断 ET1=1;//允许定时器1中断 TR1=1;//启动定时器1中断程序如下: void timer1()interrupt 3//注意:定时器1的中断序号为3 { TH1=(65536-50000)/256; TL1==(65536-50000)%256; P1.7=~P1.7;}

柳河县19532884279: 设单片机晶振频率是12MHz,试用中断技术,利用定时器控制一发光二极管LED闪烁,闪烁周期为1S,要求亮0.5S -
鱼屠人免: main () {TMOD = 0x01;//使能T0定时器工作于16位定时/计数方式TH0 = 0x3C;//T0定时器50mS定时初值,此值按照12MHz频率计算出来的(假定是51单片机)TL0 = 0xC0;ET0 = 1;//允许定时器T0中断EA = 1;//开中断TR0 = 1;//定时器T0开...

柳河县19532884279: 要求在p0.0输出周期为100ms的方波,已知晶振频率为12MHZ,试设计程序. -
鱼屠人免: 不知道你用的是那款单片机!如果是430,430单片机内部可以对晶振频率进行1分频 2分频 3分频,再对定时器A或B的寄存器进行适当的设置,430的晶振一般选择8M,对8M晶振进行3分频得到1M的频率作为定时器的工作频率.再对CCR0设置一初值,CCR0=1表示1uS;要50ms就是CCR0=50000.要100ms就是CCR0=100000.

柳河县19532884279: 试写一个延时时间为515μs的延时用子程序(设晶振为12MHz),使用51单片机 -
鱼屠人免: 真正你以后用在实际工作中,这些靠运行指命延时的方法只会大量的浪费机器的有效工作时间,降低了机器效率,在很多要求高精快反应地你就只有选用更高档的芯片了,只是这种延迟方法在教学上直观易懂,真的好程序员是会用机器中所要用的最小所需的时间单位用中断来完成,再根据各个所需延迟地的延迟时间的不同分别再用软计数器分别完成,那才可有效的提高机器效率.只是这样的程序编起来难度可要大的多了.

柳河县19532884279: 单片机用内部定时方式产生频率为100MHz等宽矩形波,设单片机的晶振为12MHz,请编程实现. -
鱼屠人免: 这是不可能实现的,12M晶振不会产生>=12M的频率的波形的.

柳河县19532884279: 单片机,试编写延时1min的子程序,设晶振频率为12MHz -
鱼屠人免: /* 这样可以是可以,但还真没见过这样用的.下面你参考一下*/void delay60s(void) //误差 0us {unsigned char a,b,c,d,n;for(d=239;d>0;d--)for(c=157;c>0;c--)for(b=228;b>0;b--)for(a=2;a>0;a--);for(n=1;n>0;n--); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网