打印

求助,关于串口中断的!

[复制链接]
1279|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
中航_夏工|  楼主 | 2009-9-2 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 中航_夏工 于 2009-9-2 10:34 编辑

/********************************************************
传送字符串函数
/********************************************************/
void send_str(unsigned char str[])
{
  unsigned char j = 0;

  while (str[j] != 'm')
  {
    SBUF = str[j++];
    while (!TI)
      ;
    //等待数据传送完毕
    TI = 0; //清中断标志
  }
}
/*********************************************************
主函数
*********************************************************/
void main(void)
{
  unsigned char buff,i,x,rxd1[4]={'1','2','3',';'};
  
  SCON = 0x50; //设定串口工作方式1,接收使能(允许接收)
  PCON = 0x00; //波特率不倍增
  TMOD = 0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
  EA = 1;
  TL1 = 0xfd;
  TH1 = 0xfd; //波特率9600
  TR1 = 1;
  
// delayms(100);
  
  send_str(str1); //发送英文字符串
  //delayms(1000);
  send_str(str2); //发送中文字符串
  //delayms(1000);
  txdata('O');
  txdata('K');
  txdata('\n'); //换行
  delayms(1000);
  
  ES=1;
  while (1)
  {P0 = 0x0;
   P2 = 0x0;
   delayms(1000);
   P0 = 0xff;
   P2 = 0xff;
   delayms(1000);
  }
}
/**********************************************************
串口中断函数
**********************************************************/
void   server_sio()   interrupt   4   using   3   
{   unsigned char i=0,buf;
       ES=0;
           buf=rxdata();
           while(buf!=';')
           {
            rxd=buf;
            i++;
            buf=rxdata();
            
            }
        send_str(str1);
       ES=1;
}

一旦被中断就停不下来,如果在中断里加了个延时100MS,就只能中断一次,仿真的时候进不了中断,小弟实在是没辙了,各位大虾帮帮忙!

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

23

帖子

0

粉丝