某单片机的时钟频率是6mhz,试利用t0定时在p1.2引脚输出100hz的方波,在p1.1输出频率为10hz的方波

作者&投稿:庞音 (若有异议请与网页底部的电邮联系)
在8051单片机的时钟频率为12MHz,用T0定时,试编程使P1.0和P1.1分别输出周期为2ms和500ms的方波~

有很多方法的,第一种是用模拟PWM,设置好占空比为1/2,根据周期设定好频率就可以了,你这个不需要变动的话,不用PWM也可以,可以这样写:
#define
T0_delay
1000
sbit
P10=P1^0;
sbit
P11=P1^1;
unsigned
int
Pwm_Count=0;
void
Timer0_init();
void
main()
{
Timer0_init();
while(1);//空循环
}
void
Timer0_init()
{
TMOD
|=0x01;
//采用16位定时器
TH0
=
(65536-T0_delay)/256;
//定时器装初值1000
TL0
=
(65536-T0_delay)%256;
EA=1;
ET0=1;
TR0=1;
}
void
timer0()
interrupt
1
{
TH0
=
(65536-T0_delay)/256;
//装初值1000,1ms中断一次
TL0
=
(65536-T0_delay)%256;
P10=~P10;//取反,1ms后电平变换,输出周期为2ms的方波
Pwm_Count++;//计数
if(Pwm_Count==250)
{
Pwm_Count=0;//归零,下次重新从零开始累加计数
P11=~P11;//取反,250ms电平转换一次,输出方波
}
}
要采用模拟PWM函数的话,可以这样写:
定时器装1ms的初值(同上)
#define
LED_ON
1
#define
LED_OFF
0
主要代码如下:
P10=~P10;
//---------------------------------------------------------------------
Pwm_Count_500
++;
if(Pwm_Count>500)
{
Pwm_Count_500
=0;
}
(Pwm_Count
_500<
250)?(P11=
LED_ON):(P11=
LED_OFF);//问号语句来代替if语句,更为
简洁一点,实效上测试两者耗时相同,多路时耗时比if更短,代码占有空间在多路PWM时问号语句明显可以占更少空间。这些方面也许是标准C库函数在实现比较两个数大小时采用问号语句的原因之一。

#include
sbit pluse=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-500);
TL0=(65536-500);
pluse=~pluse;
}
main()
{
TMOD=0x01;
TH0=(65536-500);
TL0=(65536-500);
TR0=1;
ET0=1;
while(1);
}


#include
sbit pluse=P1^0;
bit flag=0;
void t0isr() interrupt 1
{
flag=~flag;
if(!flag)pluse=~pluse;

}
main()
{
TMOD=0x02;
TH0=6;
TL0=6;
TR0=1;
ET0=1;
while(1);

}

嘿嘿 俺来帮你解决吧
1 你可以利用定时计数器0 定时5毫秒 工作在方式1 允许中断
2 再设计一个软件计数器(用R5作吧,初始值=10)
3 每当定时器的定式时间到5毫秒 则对P1.2求反,会形成100hz的方波。
同时对软件计数器R5的内容减1,当减到0时,表示50毫秒到,可以对P1.1求反,
同理可以形成频率为10hz的方波。同时要给软件计数器R5赋初值10,为定时下一个50毫秒做准备。

呵呵 俺只提供一个算法 程序还是自己丰衣足食吧

满意 就选满意回答

中断和计数器结合很容易的


单片机频率计算公式是什么?
这得看是什么单片机了:对于精简指令集性能的单片机的工作频率(1\/机器周期)=时钟频率(1\/时钟周期).普通的51单片机来说:频率是1MHZ,时钟周期是1\/12us(1除以12M),机器周期是12倍的时钟周期--1us.周期是频率的倒数 或者频率是周期的倒数 1秒:相当于频率是1HZ ,也就是1\/1S =1HZ 那么1\/1ms ...

单片机时钟频率为6MHZ,机器周期为多少
■(1)振荡周期:也称时钟周期,是指为单片机提供时钟信号的振荡源的周期,一般实验板上为11.0592MHZ,12MHZ和24MHZ用的也比较多。■(2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的。■(3)机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个时钟周期。在一个机器...

相同时钟频率的单片机,速度差别有多大?
可以有很大的区别!比如说,同样是12MHz的晶振,51单片机的内部系统时钟为1MHz,而AVR单片机的内部系统时钟为12MHz。若指令系统相同,后者的速度是前者的12倍。实际上,AVR单片机大部分指令为单周期指令,而51有许多指令是多周期指令,实际速度,AVR单片机大约是51单片机的20倍。

当外部的震荡频率是8mhz时,mcs51单片机的时钟周期是多少
振荡频率,也就是时钟频率。时钟周期,是时钟频率的倒数。即 1\/8 us。单片机中常用的是:机器周期。机器周期=12 * 时钟周期=1.5 us。

在内部时钟方式下,___的频率决定了单片机系统的时钟频率。
晶体振荡器的振荡频率决定单片机的时钟频率。

单片机系统时钟与实时时钟有什么区别?为什么有的系统时钟晶振使用12M,而...
这个频率一般为几MHz。速度比较快,其目的无非是让单片机快点干活。那为啥不是GHz数量呢,这个是集成电路工艺决定的。根据工艺反推出某款单片机的理想工作频率,往往也是最佳工作频率了。系统在这个频率下工作又快(已达最佳极限)又稳定。最好地体现了计算机的高速运算能力。2、实时时钟,是单片机计时的时钟...

已知单片机系统晶振频率为6mhz,若要求定时值为10ms时,定时器T0工作方...
单片机系统晶振频率为6mhz,系统时钟频率 (也是计时脉冲频率)为500KHZ,一个脉冲周期2us ,10ms是5000个脉冲,因此 TMOD=0X01;TH0=(65536-5000)\/256;TL0=(65536-5000)%256;

某单片机的时钟频率是6mhz,试利用t0定时在p1.2引脚输出100hz的方波...
2 再设计一个软件计数器(用R5作吧,初始值=10)3 每当定时器的定式时间到5毫秒 则对P1.2求反,会形成100hz的方波。同时对软件计数器R5的内容减1,当减到0时,表示50毫秒到,可以对P1.1求反,同理可以形成频率为10hz的方波。同时要给软件计数器R5赋初值10,为定时下一个50毫秒做...

设单片机8051的时钟频率为MHZ,试编写Ms的软件延时程序。
为了延长延时时间,一般要采用多重循环,即由外循环内部又含有内循环。延时时间=(内循环时间)×外循环次数。例如:设计一个延时1ms的延时子程序ys1ms,设单片机8051的时钟频率为12MHZ。则单片机8051一个机器周期=12T=12\/f=12\/12MHZ=1微秒 程序和延时时间计算如下:ys1ms: MOV R7,#4 ; 单...

单片机stc12的sysclk系统工作时钟频率是什么来的?
单片机stc12的sysclk系统工作时钟频率由外部时钟或内部RC振荡时钟频率结合分频控制寄存器共同确定。外部时钟由于用户选择余地更大,可获得更好的准确度和稳定性。内部RC振荡时钟频率由制造时确定,离散性很大,稳定性也差。

微山县19683335006: 某单片机的时钟频率是6mhz,试利用t0定时在p1.2引脚输出100hz的方波,在p1.1输出频率为10hz的方波
斗肥银翘: 嘿嘿 俺来帮你解决吧 1 你可以利用定时计数器0 定时5毫秒 工作在方式1 允许中断 2 再设计一个软件计数器(用R5作吧,初始值=10) 3 每当定时器的定式时间到5毫秒 则对P1.2求反,会形成100hz的方波. 同时对软件计数器R5的内容减1,当减到0时,表示50毫秒到,可以对P1.1求反, 同理可以形成频率为10hz的方波.同时要给软件计数器R5赋初值10,为定时下一个50毫秒做准备. 呵呵 俺只提供一个算法 程序还是自己丰衣足食吧 满意 就选满意回答

微山县19683335006: 已知8051单片机系统的时钟频率为6mhz 试利用定时器T0和P1口输出矩形脉冲 波形为一周前高电平40u低电平350u -
斗肥银翘: 看下行不: #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit p=P1^0; uchar i=0; void main() { //p=1; TMOD=0X01; TH0=(65536-5)/256; TL0=(65536-5)%256; TR0=1; ET0=1; EA=1; while(1) { if(i==4) { p=0; } if(i==39) { i=...

微山县19683335006: 1、已知80C51单片机系统时钟频率为6MHZ,请编程利用定时器T0(方式2)在P1.0 -
斗肥银翘: #include sbit pluse=p1^0; void t0isr() interrupt 1 { pluse=~pluse; } main() { tmod=0x02; th0=156; tl0=156; tr0=1; et0=1; ea=1; while(1); }

微山县19683335006: 8051单片机时钟频率为6MHZ,由T1定时,试编程从P1.0输出周期为40ms的方波. -
斗肥银翘: ;晶振频率为6MHz,使用定时器1以方式0产生周期为40ms的等宽正方波连续脉冲,并由P1.0输出. ORG 0000HSETB TR1 LOOP:CPL P1.0MOV R2, #5 REPEAT:MOV TL1, #(8192 - 2000) MOD 32MOV TH1, #(8192 - 2000) / 32JNB TF1, $CLR TF1DJNZ R2, REPEATSJMP LOOPEND

微山县19683335006: 单片机时钟频率为6MHZ,机器周期为多少是51单片机 -
斗肥银翘:[答案] ■\x09(1)振荡周期:也称时钟周期,是指为单片机提供时钟信号的振荡源的周期,一般实验板上为11.0592MHZ,12MHZ和24MHZ用的也比较多.■\x09(2)状态周期:每个状态周期为时钟周期的2倍,是振荡周期经二分频后得到的.■\...

微山县19683335006: 已知单片机的晶振频率6MHZ,试利用定时器T1产生的中断,使P1.2引脚输出周期为2S -
斗肥银翘: 基本思路为50ms*40=2s定时#include sbit out=P1^2; void main { TOMD = 0X10; //配置定时器1工作于方式一 TH1 = (65536-50000)/256; //高八位装入初值 TL1 = (65536-50000)%256; //低八位装入初值 ET1 = 1; //开定时器0中断 EA = 1; //开...

微山县19683335006: 若MSC - 51单片机的晶振频率为6MHz,利用定时器0定时中断的方法,使P1.0输出占空 -
斗肥银翘: 占空比1:3,那么高电平0.25ms,低电平0.75ms,计算定时器0对应记数值

微山县19683335006: 单片机的时钟频率采用6MHZ,利用T0采用定时器方式2 -
斗肥银翘: 输出 200us 的方波,只需定时 100us. 每当到了 100us,对 P1.2 端取反,即输出为 200us 的方波.时钟频率采用6MHz,机器周期则是 2us. 定时 50 个机器周期,即达到了 100us.可以使用定时方式2,能够自动装入初始值. 初始值=256 - 50 = 206.全部程序如下: ORG 0000HSJMP STARTORG 000BHCPL P1.2RETI START:MOV TMOD, #02HMOV TH0, #206MOV TL0, #206MOV IE, #82HSETB TR0SJMP $END

微山县19683335006: 已知8051单片机的时钟频率为6MHz,利用T0作定时器,在P1,0输出方波,周期 -
斗肥银翘: unsigned char n;sbit Gate1=P1^0;sbit Gate2=P1^1;main(){n=0;TH1=0xff;TL1=0x05; //定时器250us产生一次中断MOD = 0x10; //定时器1工作于模式1,(用工作于模式2也可以,而且更 简便)TR1=1; //使能定时器1ET0=1; //开中断EA=1; ...

微山县19683335006: 时钟频率为6MHZ,试用定时期编写程序,使P1.0输出一个占空比为40us和120us的连续矩形脉冲波 -
斗肥银翘: 查找你所使用的单片机型号,看看定时器设置那部分,其实就是设置寄存器使其达到你所需要的时间间隔,然后在中断或者查询循环里使能或反转某信号

你可能想看的相关专题

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