发布网友 发布时间:2022-04-20 10:07
共2个回答
热心网友 时间:2023-07-11 20:05
这个问题我似乎答过:可以借鉴输出PWM波的一般方法,要用到两个定时器,第一个用来确定整个波的周期,例如你这里的2ms,第二个用来确定高电平的时间,例如你这里的1/3ms, 过程大概是这样的:启动第一个定时器,把电平拉高,紧接着启动第二个定时器,当第二个计数满了之后,把电平拉低,关闭第二个定时器,这时就出来了一个周期的波,你重复这个过程就出来连续波了, 关于定时器初值和中断向量那些你再去找找资料吧,一言两语说不清楚
热心网友 时间:2023-07-11 20:05
利用某个I/O口输出矩形波,定时一段时间后,端口状态取反
#include<reg52.h>
sbit output=P1^0;//定义输出端口
void main()
{
TMOD=0X01;//定时0方式1
TH0=XH;//定时时间的初值
TL0=XL;
EA=1;
ET0=1;//关闭定时器中断
TF0=0;
output=0;
TR0=1;//打开定时器
while(1);
}
void isr_timer0 interrupt 1
{
TR0=0;//关闭定时器
output=~output;///波形取反
TH0=XH;//重新载入定时时间的初值
TL0=XL;
TR0=1;//重新打开定时器
}