导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:关于8051和pc通讯!

* 362: C51编程:关于8051和pc通讯!

   c51_girl 
c51_girl发表的帖子 

 C51编程:关于8051和pc通讯!
我编制了一8051向pc发送数据的通讯程序,8051串口与pc的com1通过rs232连接。8051程序
用keiluvision2编译,pc上用tubo c ,采用了函数bioscom。二者波特率均设为9600,采用
中断查询方式。两段程序均分别编译通过,并且在keil上可以看到serial#1上有正确地的输
出,但是8051向pc发送数据时,pc上没有显示,就是说pc并没有收到8051发来的数据。迷惑
不解,不知那里出了问题,请高人指点!
具体程序如下:
8051:
#include "reg52.h"
#include "string.h"
#include "highbios.h"

 
void init_rs232()
{
    SCON=0x50;
    TMOD=0x20;
    TH1=0xfb;
    TR1=1;
    TI=1;
}

tx_char(unsigned char c)
{
    while(1)
    {
        if(TI==1) break;
    }
    TI=0;
    SBUF=c;
}
    
main()
{
    while(1)
    {
    unsigned char *title0="I LOVE you!";
    init_rs232();
    do{tx_char(*title0++);}
        while(*title0!='\0');
    }
}


pc:
#include <bios.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

extern void clrscr();
extern int getch();

void receive();

main()
{
char c;
bioscom(0,0xe3,0);
clrscr();
puts("---------------------");
puts("com1 <9600 N 8 1>");
puts("---------------------");
c=getch();
receive();
}

void receive()
{
    int s;
     char c;
    while(1)
    {
        s=bioscom(3,0,0)&0x100;
        if(s)
        {
            c=bioscom(2,0,0);
            printf("%c",c);
        }
    }
}

void send(char *title)
{
    int s;
    do {
        bioscom(1,*title++,0);
        while(1)
        {
            s=bioscom(3,0,0)&0x100;
            if(s)
            {
                if(bioscom(2,0,0)==*title) break;
            }
        }
       }while(*title!='\0');
}


发表时间:2001年8月18日22:35:00

  
回复该帖

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

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

  363.[详细]你可以先用超级终端来看,先不要用自己的pc端的程序
摘要:......(无内容)
- [老古][2742次] 2001年8月19日

  913.[详细]很有问题的
摘要: C51的串行设置里:     TMOD=0x20;     TH1=0xfb;    &......(528字)
- [逍遥派掌门人][2385次] 2001年9月12日

  14320.[详细]给你一个现成的。
摘要:......(无内容)
- [zsq553][1537次] 2002年11月13日

[上一篇帖子]:你可以先用超级终端来看,先不要用自己的pc端的程序
[下一篇帖子]:哦,糟糕!就当我没说。