计算机通过串口向单片机发送数据问题!
时间:10-02
整理:3721RD
点击:
串口发送一个数值,改变pwm,从而改变灯的亮度,请高手帮我看看程序,谢谢了
#include<reg52.h>
#define uchar unsigned char
uchar PWM=0,t=0;
uchar flag;
void main()
{
TMOD|=0x21;
TH0 = ( 65535 - 50 ) / 256;
TL0 = ( 65535 - 50 ) % 256;
TR0=1;
SCON|= 0x50;
TMOD|= 0x20;
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
TR1 = 1;
ES = 1;
PS=1;//串口中断优先级高,PWM优先级低 //
PT0=0;
EA=1;
P0=1;
while(1)
{ if(flag==1)
{ flag=0;
ES=0;
SBUF=PWM;
while(!TI)
{ TI=0; ES=1; }
} } }
void s() interrupt 4
{ RI=0; PWM=SBUF; flag=1; }
void time0_s()interrupt 1 using 1
{ t++;
TH0 = (65536 - 50) / 256;
TL0 = (65536 - 50)% 256;
if(PWM==t) { P0=1; }
if(t==255) { t=0;
if(PWM != 0 )
{
P0 = 0;
} }
}
#include<reg52.h>
#define uchar unsigned char
uchar PWM=0,t=0;
uchar flag;
void main()
{
TMOD|=0x21;
TH0 = ( 65535 - 50 ) / 256;
TL0 = ( 65535 - 50 ) % 256;
TR0=1;
SCON|= 0x50;
TMOD|= 0x20;
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
TR1 = 1;
ES = 1;
PS=1;//串口中断优先级高,PWM优先级低 //
PT0=0;
EA=1;
P0=1;
while(1)
{ if(flag==1)
{ flag=0;
ES=0;
SBUF=PWM;
while(!TI)
{ TI=0; ES=1; }
} } }
void s() interrupt 4
{ RI=0; PWM=SBUF; flag=1; }
void time0_s()interrupt 1 using 1
{ t++;
TH0 = (65536 - 50) / 256;
TL0 = (65536 - 50)% 256;
if(PWM==t) { P0=1; }
if(t==255) { t=0;
if(PWM != 0 )
{
P0 = 0;
} }
}
