用C语言编程:试利用定时器/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号。设晶振频率为6MHz
周期是1s,我写错了
不好意思,周期是1s,写错了
请问应该要怎么写才好呢?
追答先把 T0 设置为1mS(或者2、5、10)产生一次中断,然后在中断例程里面设置一个静态变量,如 cunt(或者在外面设置个全局变量),每中断一次就对该变量加1,当此变量cunt=1000时,就清零;
然后是操作P1.0引脚的输出状态,这一段代码可以放在中断例程里,也可以放在外面,
sbit Pulse=P1^0;//全局变量
if(cunt<20){Pulse=1;}else{Pulse=0;}
如果T0 设置为 5mS产生一次中断,则cunt=4时,就是20mS了,cunt=200时,就是1000mS了,就要给 cunt清零了;
你能不能帮忙写一下呢😁
他这个脉宽为20ms的正脉冲信号是什么意思呢?有什么要求吗?
🙏🙏请问这个脉宽20ms是有什么要求吗?
追答就是20mS的高电平,所以输出1,余下时间全是低电平,所以输出0。正脉冲就是说有脉冲来就是高电平,无脉冲来就是低电平。关于信号问题属于基础知识,你不能不掌握的
追问好的,麻烦你看一下我写的这个
T0 的配置,你就参考教材例程,定时值为 C;
在中断例程里:
cunt++;
if(cunt>N)cunt=0; // N=1000/C;
;///////////////////////////////
定义全局变量
sbit P1_0 = P1^0;
cunt=0;
main()
{
。。。。
while(1)
{
if(cunt<M){P1_0=1;}else{P1_0=0;} // M=20/C ;
}
}