楼主这个程序错误太多根本玩不转。给你一个经验证过的参考程序试试。
#include<reg51.h>
sbit PWM=P1^1; //PWM输出端口
unsigned char i,j;//全局变量
void main()
{
SCON=0x50; //8位UART波特率可变
TMOD=0x22; //定时器0、1方式2(8位重载)晶振11.0592MHz
TH0=0xA4; //设置定时重载值100us
TL0=0xA4; //设置定时初值
TH1=0xfd; //波特率9600
TL1=0xfd; //波特率9600
TR0=1; //开定时器0
TR1=1; //开定时器1
REN=1; //允许串行接收
EA=1; //开总中断
ET0=1; //开T0中断
ES=1; //开串口中断
while(1);
}
void T0Interrupt(void) interrupt 1
{
if(j>i)PWM=1;//周期10ms,占空比0~100
else PWM=0;
if(++i>=100)i=0;
}
void serial() interrupt 4
{
RI=0;
j=SBUF;//j值范围0~100
}
|