youjingya 发表于 2010-12-15 23:19:15

程序问题求解

要实现功能如下:边沿中断一下,串口传送数据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]
查看完整版本: 程序问题求解