打印

大家帮帮忙,看看这个串口通信程序

[复制链接]
1643|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
森森淼淼|  楼主 | 2012-4-30 20:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<pic.h>
#define uchar unsigned char
#define uint  unsigned int
__CONFIG(0X00F4);
void init();
void delayms(uint);
void main()
{
    init();
    TXREG='A';
    while(!TRMT);
    while(1);
}
void init()
{
    TRISC=0xFF;
    TXSTA=0x24;
    RCSTA=0x90;
    SPBRG=25;
    GIE=1;
    PEIE=1;
    RCIE=1;
}

void interrupt com()
{
    if(RCIF && RCIE)
    {
        TXREG=RCREG;
        while(!TRMT);
    }
}

用上位机调试,单片机可以给上位机发送字符‘A’,但是上位机给单片机发送任何数据,单片机都不返回,调试了两天了,请各位高手不吝赐教,感激不尽

相关帖子

沙发
ayb_ice| | 2012-5-2 16:18 | 只看该作者
多看手册,多用示波器看看波形

使用特权

评论回复
板凳
NE5532| | 2012-5-2 17:18 | 只看该作者
先看能不能进接收中断,别用发送来调,找个端口取反来看。

使用特权

评论回复
地板
chenczy| | 2012-5-2 17:34 | 只看该作者
void UartSendByte(unsigned char i)//单片机向主机发送数据
{
   TI=0;
   SBUF=i;
   while(TI==0);
   TI=0;
   ES=1;   
}

使用特权

评论回复
5
jony.z| | 2012-5-7 23:35 | 只看该作者
楼上的是51单片机的,楼主问的PIC单片机。
我最近也在搞串口通信,头疼的很。你把void interrupt com()
{
    if(RCIF && RCIE)
    {
        TXREG=RCREG;
        while(!TRMT);
    }
}

改为
void interrupt com(void)  //括号里要加void
{
        if(RCIF==1)
        {
                TXREG=RCREG;
        }
}
再检查一下波特率设置的对不对。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

0

粉丝