樓主這個程序錯誤太多根本玩不轉。給你一個經驗證過的參考程序試試。
#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
}
|