单片机与计算机串口通信问题,请高手帮忙
我用的是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);
}
发表时间:2006年2月20日13:29:01