导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→高手帮忙看看这个单片机串口收发程序

* 101187: 高手帮忙看看这个单片机串口收发程序

   fish6379 
fish6379发表的帖子 

 高手帮忙看看这个单片机串口收发程序
这个程序我烧进去试了下数据不能收发 请大家帮忙看下哪些地方有问题帮我改一下 
C语言我刚入门,所以详细点我更容易看懂  谢了
#include   <reg51.h>  
#include   <string.h>  

unsigned char inbuf[];
unsigned int count=0;
unsigned int flag;

void init_serialcomm()
{
 SCON=0x50;   //serial mode 1,8-bit UART,enable ucvr
 TMOD=0X20;   //timer 1,mode 2,8-bit reload
 PCON=0x80;   //SMOD=1
 TH1=0xF4;   //Baud:4800  fosc=11.0592M
 IE=0x90;   //Enable Serial Interrupt
 TR1=1;               // timer 1 run 
}

//向串口发送一个字符
void send_char_com(unsigned char ch)
{
 SBUF=ch;
 while(TI==0);
  TI=0;
}

//向串口发送一个字符串,strlen为该字符串长度
void send_string_com(unsigned char *str,unsigned int strlen)
{
 unsigned int k=0;
 do
 {
  send_char_com(*(str+k));
  k++;
 }
 while(k  <strlen);
}

//串口接收中断函数
void serial () interrupt 4 using 3
{
 if(RI)
 { unsigned char ch;
  RI=0;
  ch=SBUF;
  switch(ch)
   {
    case''$'' :
     flag=1;  
     break;  //接受到数据包起始字符
    case''*'':
     flag=2;  //接受到数据包最后一个字节
     break;
    default:
     if(flag==1)  
      {
       inbuf[count]=ch;
       count++;
      }
   }
 }
 
}

main()
{
 init_serialcomm();  //初始化串口
 while(1)
  {
   if(flag==2)
    {   
     flag=0;
     send_string_com(inbuf,count);  //将读到的数从串口发出
    }
    
  }
}




发表时间:2006年12月29日14:47:10

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:关于mc9s08gt60单片机的bdm口烧写各位大虾:   小弟最近制作
[下一篇帖子]:SPI收发是同时的。SPI收发是同时的。 /P P 有些器件共用寄存器,对读写数据有要求。认真看