求单片机串口C语言程序,要求可以发送一个数据到PC机,可以接受PC机的字符

知道的师傅啊,教教我
我说的是要把AD转换好的数据,传给单片机,但是要单片机发送指令才上传,我AD已经好了

不知道你是不是用的51单片机,给你一个程序参考一下吧。
/**************************************
函数功能:
在#MCU2的数码管上显示收到的学号后3位
若与自己的相符合,则发送Right!否则发送Wrong!
默认学号为123
***************************************/
#include<reg52.h>
#include<absacc.h>
/*******************************
总线地址定义区
********************************/
#define LED_DIG XBYTE[0xD000] //定义数码管的段选总线地址
#define LED_COM XBYTE[0xC000] //定义数码管的位选总线地址
/*******************************
全局变量定义区
********************************/
unsigned char code DisCode[] = {0x0C0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0xFF,0xe1,0x89};

//共阳极数码管码表,定位在ROM中
bit Flag = 0; //一个标志位,防止MCU重复发送
unsigned char RR = 0; //收数指针
unsigned char TT = 0; //发数指针
unsigned char *SDat;
unsigned char Disbuf[] = {0,0,0,0x0a}; //存放欲显示的数据
unsigned char Hello[] = {'H','e','l','l','o','!','\n'};
unsigned char Right[] = {'R','i','g','h','t','!','\n'};
unsigned char Wrong[] = {'W','r','o','n','g','!','\n'};

/********************************
显示延时
*********************************/
void Delay()
{
unsigned char i = 10;
while(i--);
}
/********************************
带参数传递的显示程序循环方式
*********************************/
void Display(unsigned char Dat[4])
{
unsigned char COM = 0X01; //数码管位选
unsigned char i;
for(i=0;i<4;i++)
{
LED_DIG = DisCode[Dat[i]]; //送段选
LED_COM = COM; //选通一个数码管
Delay();
LED_COM = 0; //消隐
COM<<=1; //移位,准备选通下一个数码管
}
}

/********************************
主函数
*********************************/
void main(void)
{
//初始化

TMOD = 0x20;
TH1 = TL1 = -11059200/12/32/9600;
SCON = 0x50;
TR1 = 1;
ES= 1;
EA= 1;
//主循环
SDat = Hello;
TI = 1;
while(1)
{
Display(Disbuf); //功能子函数调用
}
}/********************************
中断函数
*********************************/
void SER_SR() interrupt 4 using 2
{
if(RI)
{
RI = 0;
Disbuf[RR++] = SBUF;
if(RR==3)
{
RR = 0;
if((Disbuf[0]==0x01)&&(Disbuf[1]==0x02)&&(Disbuf[2]==0x03))
{
Disbuf[3] = 0x0b;
SDat = Right;
}
else
{
Disbuf[3] = 0x0c;
SDat = Wrong;
}
TI = 1;
}
}
else
{
TI = 0;
if(TT<7)
{
SBUF = *(SDat+TT);
TT++;
}
else
TT = 0;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-18
您说您

是不会用你的那款单片机啊?

还是不会C语言?

如果2者你都不会。那您要了也没用!

另外:您以为单片机是普通家用PC啊?家用PC还得分您装的是什么显卡,什么CPU才能选择软件呢。您也不说说你用的是那款单片机。就是神仙也帮不了您。

不指望您给我加分,谢谢
第2个回答  2009-12-18
呵呵,楼上的老兄怎么这样教育人呢,也怪楼主没说清,但是还有一点,那就是如果用模拟的SCI那就不用管什么单片机了,不过这个速度还真要用定时器去做了。有点麻烦,也好像绝大部分单片机内部都集成的有SCI,楼主不防把用的单片机型号发上来,如果要指点的话,那个单片机应该有SCI的寄存器,看看怎么设置,然后研究一下SCI的时序也就差不多了,程序也就几条语句的事,我这都用的Freesclae HCS08,程序估计你也用不上。
第3个回答  2009-12-18
你可以用串口测试软件来发送字符,有空给你编一个吧!不过最近忙
相似回答