导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→单片机与计算机串口通信问题,请高手帮忙[fly01422]

 *第37809篇: 单片机与计算机串口通信问题,请高手帮忙

  
楼 主:fly01422 2006年2月20日13:29
 单片机与计算机串口通信问题,请高手帮忙
我用的是atmega16单片机,双龙的实验板.想要实现单片机与计算机,做异步串行通讯.

计算机用串口调试助手来接收和发送数据,PB口是给数码管送数值,PD口是点亮数码管.

可是我试了几次都不能在串口调试助手上面看到单片机发送的字符,实验板上面的数码管,显示的也不是从串口调试助手发过来的数据.

请高手帮帮忙,看下程序有什么问题.
  如果要实现计算机与单片机的通信我应该怎么做啊!!两者只传0~9这几个数应该怎么做啊!!


程序如下:
#include   <io8535v.h>  
#include   <slavr.h>  
#include   <macros.h>  
#include   <stdio.h>  
#define uchar unsigned char
#define uint  unsigned int

uchar Table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar Send_Data[]={'a','b','c','d'};
uchar Receive_Data[]={0,0,0,0};
             
void DelayMs(uint i)
{uint j;
for(;i!=0;i--)
   {for(j=2000;j!=0;j--) {;}}
}

void Display(uchar *p)         //动态显示函数,参数p为待显示的数组名
{uchar i,sel=0xc3;           
for(i=0;i  <4;i++)
  {PORTD=sel;                  //选通最右边的数码管
   PORTB=Table[p[i]];     //送字型码
   DelayMs(1);                 //显示延时    
   sel=sel  <  <1;                 //移位以显示前一位
  }
}

void main(void)
{uchar temp,i;
DDRB=0xff;
DDRD=0xff;
PORTB=0xff;
PORTD=0x00;
DelayMs(20);
PORTD=0xff;
UBRR=51;                                 //9600bps,8.000M,
UCR=0x18;                                  //RXD.TXD使能;
for(i=0;i  <4;i++)
   {while(!(USR&0x80)) 
      {Display(Receive_Data);}            //等待接收完成
    Receive_Data[i]=UDR-48;}              //接收数据
for(i=0;i  <4;i++)
   {while(!(USR&0x20)) 
      {Display(Receive_Data); }           //等待移位寄存器空;
    UDR=Send_Data[i];} 
while(1)
   Display(Receive_Data);   
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:我这里有一个参考网站!

[下一篇主题]:关于I2C总线器件CAT1161的读写(24CX适用)-chzadm的单片机源程序-作者:陈红志[原