各位帮忙看一下这个51的程序
时间:10-02
整理:3721RD
点击:
#include <reg52.h>
sbit l=P1^0;
uint16 counter=0;
uint16 j;
uint8 a=0;
uint16 num[]={1,2,3,4,5,6,7,8};
void timer0_init()
{
TMOD=0x01;
TH0=0xFE;
TL0=0x33;
EA=1;
ET0=1;
TR0=1;
}
main()
{
timer0_init();
l=1;
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=0xFE;
TL0=0x33;
counter++;
}
if(counter==num[a]){
l=0;
a++;
if(a==8){
a=0;}
}
if(counter==40){
counter=0;
l=1;}
}
}
这个程序本想实现输出一个占空比可以不断变化的PWM波,但用示波器观察波形是不变的,请各位帮帮忙,先谢谢了
这个
sbit l=P1^0;
uint16 counter=0;
uint16 j;
uint8 a=0;
uint16 num[]={1,2,3,4,5,6,7,8};
void timer0_init()
{
TMOD=0x01;
TH0=0xFE;
TL0=0x33;
EA=1;
ET0=1;
TR0=1;
}
main()
{
timer0_init();
l=1;
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=0xFE;
TL0=0x33;
counter++;
}
if(counter==num[a]){
l=0;
a++;
if(a==8){
a=0;}
}
if(counter==40){
counter=0;
l=1;}
}
}
这个程序本想实现输出一个占空比可以不断变化的PWM波,但用示波器观察波形是不变的,请各位帮帮忙,先谢谢了
这个
不怎么看得懂你的思路。
我只是觉得第一次中断的时候counter = 1;
然后就不听的执行 if(counter==num[a]),当counter = 2;又不停的执行这个。
嗯 谢谢了 已经找到问题了