程序问题求解
要实现功能如下:边沿中断一下,串口传送数据1次.现在状况如下:
1.串口设置存在时,无中断产生(灯不闪动)
2.只有屏蔽掉串口设置时,中断产生(灯闪动)
3.IT0设置存在时,串口就无法传送
????????
以上通过串口调试软件及指示灯验证了
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar flag1=0;
sbit deng=P3^4;
void delay1ms(uint count) //延时
{
uint i,a;
for(i=0;i<count;i++)
for(a=0;a<120;a++);
}
void senddata(uchar b) //发送
{
SBUF=b;
while(TI==0);
TI=0;
}
uchar receibedata()//接收
{
uchar danpianji;
while(RI!=1);
danpianji=SBUF;
RI=0;
return(danpianji);
}
main()
{
EA=1;//中断设置
EX0=1;
IT0=1;
/////////////////////////////
TMOD=0x20; //串口设置
TH1=0xFD;
TL1=0xFD;
TR1=1;
REN=1;
SM0=0;
SM1=1;
ES=1;
///////////////////////
while(1)
{
if(flag1==1)
{
ES=0;
senddata(0x11);
ES=1;
flag1=0;
}
}
}
void int0(void)interrupt 0
{
flag1=1;
deng=1; //给灯高电平使其亮
delay1ms(200);
deng=0;//给灯高电平使其灭
delay1ms(200);
}
页:
[1]