单片机利用定时器输出矩形波

已知89C51单片机的晶振频率为6MHz,请编程实现利用定时器T1和P1.2输出矩形波,矩形波高电平宽为50us,低电平宽为350us。

第1个回答  2011-11-24
我不会直接给程序给你,但可以用伪代码来告诉你怎么实现:
首先题目要求只用一个定时器,分别计时50us和250us, 这就会对应两个初值,在中断程序里要设个标志位,
定时器中断函数可以这么写:
{
关闭定时器;
翻转IO状态;
if(flag==0x00)装延时50us的初值;
if(flag==0xff)装延时350us的初值;
flag=~flag;
开定时器;
}
主函数
{
先设置一些定时器一的寄存器,工作模式那些,
然后先装延时50us的初值,
P1^2置高,
flag=0xff;
打开定时器,
之后就while(1){}; 死循环,
}

思路就告诉你了,授人以鱼不如授人以渔,一些具体的问题自己去找找资料本回答被网友采纳

用C51单片机和内部定时器来产生矩形波,要求频率为100HZ,占空比为2:1...
100HZ的矩形波,周期就是10ms,占空比2:1,就是高的部分占10ms的2\/3,低的部分占10ms的1\/3。理解了吗?

1单片机用内部定时方法产生频率100Hz等宽矩形波,假定单片机的晶振频率为...
1单片机用内部定时方法产生频率100Hz等宽矩形波,假定单片机的晶振频率为12MHZ,请编程实现:用定时器定10ms就可以,当定时器中断,则I\/O取反即可。

...利用定时计算器T1在P1.0引脚上输出矩形波,矩形波的低电平是2MS 高...
定时器设为一毫秒;然后给个标记变量;每进入一次定时器,flag++; 再将flag的判断值在主函数里写。if(flag <=2 ) P1.0=0;else P1.0=1; if(flag >=10) flag=0;

求单片机汇编程序:用定时器\/计数器在P1.0口线上产生周期为500微秒,占空...
;500us周期方波 ,占空比 2:5 。即高电平200us,低电平300us ORG 0000H AJMP START ORG 000BH AJMP T0INT ORG 0030H START: MOV SP,#60H SETB EA SETB ET0 MOV TMOD,#01 ;T0为工作方式1 CLR P1.0 ;先低电平 MOV TH0,#0FEH MOV TL0,#0D4H ;300us 定时 SETB TR0;启动...

...单片机的fosc=6MHZ,请利用T0和P1.0输出矩形波,矩形波高电平宽为5...
include<reg51.h>sbit WAVE = P1^0;void main(){ TMOD &= 0xF0; TMOD |= 0x02; \/\/定时器T0,工作在方式二,自动重载 TH0 = TL0 = 256-25; \/\/6MHz的晶振,一个机器周期2us IE |= 0x82; TR0 = 1; while(1);}void T0_INT() interrupt 1{ static...

如何运用单片机原理制作智能信号发生器,要求产生方波、矩形波、三角波...
sbitkey3 = P3^5;\/\/ 波形选择正弦、三角、矩形波,锯齿波 unsignedchar i,j;unsignedint counter,step,flag;typedefunsigned int uint;\/\/定时器0初始化 voidInit_Timer0(void){ TMOD = (TMOD & 0XF0) | 0X01;\/\/设置工作方式和定时初始值 TH0 = 0xff;TL0 = 0x00;TR0 =1; \/\/启动定时...

如何用单片机指令实现一定频率和占空比的矩形方波
产生25khz,占空比为25%的矩形波,即:输出高电平10us,输出低电平30us。时间太短,用定时器定时,并不方便。用 NOP 指令延时,程序如下:LOOP:SETB P1.0 NOP NOP NOP ;………总共8个NOP CLR P1.0 NOP NOP NOP ;………总共26个NOP JMP LOOP END ...

...80C51单片机的时钟频率为12MHz,利用定时器T1和P1.0输出矩形脉冲,其...
MOV TL1, #206 ;定时时间50us@12MHz MOV IE, #10001000B ;开放总中断和T1中断.SETB TR1 ;启动T1 MOV R2, #3 ;周期是3×50us SJMP $ ;等着吧.T1_INT:SETB P1.0 ;输出高.DJNZ R2, T1_END ;R2-1 CLR P1.0 ;减到0,就输出低电平.MOV ...

89C51怎样产生两个可调占空比的矩形波
1.7KHZ,占空比0.5,也即是588.2us一个周期,则294.1us产生一个高低电平状态变化。如果这个输出频率不是要求特别严格的话,以12MHz晶振为例,一个指令周期为1us,通过设计定时器,以16位模式,定时值为65536-294=65242=0xFEDA,在中断中,每次改变一下IO口状态,就OK了。但要注意,由于使用16位...

矩形波一个周期的时间是10ms.如何实现??? 写出程序。。。尽量详细 谢谢...
下面是用51单片机的定时器(晶振12MHz)实现的。是用C语言,如果要用汇编语言,加追问即可。程序中没有用中断,用的是定时器查询方式。include <AT89X55.H> sbit P10=P1^0;void Delay5ms();void main(){ while(1){ Delay5ms();P10=~P10;} } void Delay5ms(){ TMOD=0x01;TH0=(65536-...

相似回答