请教串口中断

[复制链接]
2185|5
 楼主| chenke1988 发表于 2010-10-13 20:20 | 显示全部楼层 |阅读模式
下面这段程序用串口调试助手为什么整个屏幕一直显示Come On! 我并没有用while循环啊 应该只收到一个Come On!先谢谢啦!
#include<reg51.h>
#define uchar unsigned  char
#define uint  unsigned int
uchar code table[]={"Come On!\r\n"};
void delay(uint x) //延时X毫秒
{
uint y,z;
for(z=x;z>0;z--)
  for(y=110;y>0;y--);
}
void UART_Init(void)
{
TMOD=0x20;
   TH1=0xfd;
   TL1=0xfd;
   SCON=0x40;
   PCON=0x00;
   TR1=1;
}
//串口发送一个字节
void Uart_SendChar(unsigned char dat)
{
  SBUF = dat;    //待发送的数据写入缓冲区
  while(!TI);        //等待发送完成
  TI = 0;             //清零发送标志位
}
/*-------------------------------------------------------------*/
//串口发送一个字符串
void Uart_SendString(unsigned char *dat)
{
  while(*dat!='\0')
  {
   Uart_SendChar(*dat); //发送当前数据
   dat++;                         //指向下一个要发送的数据
  }
}
void main()
{
   UART_Init();
   delay(10);
   Uart_SendString(table);
}
原野之狼 发表于 2010-10-13 23:15 | 显示全部楼层
程序没有刹车 跑飞了
zjswuyunbo 发表于 2010-10-14 11:19 | 显示全部楼层
本帖最后由 zjswuyunbo 于 2010-10-14 11:21 编辑

void main()
{
   UART_Init();
   delay(10);
   Uart_SendString(table);
    while(1);
}
这样再试试,我就不信了。
 楼主| chenke1988 发表于 2010-10-14 12:37 | 显示全部楼层
这个我也试过,如果加上while(1);串口调试助手上就收不到任何数据了 不知道为啥 3# zjswuyunbo
 楼主| chenke1988 发表于 2010-10-14 12:38 | 显示全部楼层
那请教一下 应该怎么改了! 2# 原野之狼
原野之狼 发表于 2010-10-14 21:31 | 显示全部楼层
把延时再改长一些 或许外部设备还没有正常工作 然后你就从串口发送数据了 拿个示波器看一下就明白了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

58

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部