打印

PIC18F45K20单片机的串口不能发送数据-期待高手解决

[复制链接]
2834|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
仰望星期五|  楼主 | 2012-12-26 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <pic18f45k20.h>

#define uchar unsigned char
#define uint unsigned int

void serinit()
{
        IRCF2=1;
        IRCF1=1;
        IRCF0=0;    //内部晶振8Mhz
        BRG16=0;    //8位波特率发生器
        SPBRG=0x33;  //波特率9600  十进制51
        TXSTA=0x24; //异步模式、8位发送、使能发送、高速
        RCSTA=0x80; //使能串口、禁止接收
        TRISC6=1;        //RX,TX设置为输入
        TRISC7=1;
}
void fdata(uint data)
{
        TXREG=data;
        while(!TRMT);
}

void delay(uint t)
{
        uint i,j;
        for(i=t;i>0;i--)
                for(j=100;j>0;j--);
}

void main()
{
        serinit();        //串口初始化
        while(1)
        {
//                TXREG=0X11;
                fdata(0x11);
                delay(100);
                fdata(0x22);
                delay(100);
        }
}
while循环里边直接给TXREG赋值也不能用   PC的串口调试助手接收不到数据。。。望高手指点一二
沙发
3939| | 2012-12-26 14:37 | 只看该作者
硬件看下有没有问题,pc端波特率是否一致!

使用特权

评论回复
板凳
仰望星期五|  楼主 | 2012-12-26 15:43 | 只看该作者
3939 发表于 2012-12-26 14:37
硬件看下有没有问题,pc端波特率是否一致!

没有问题啊  快调试一天了  搞得一点信心都没有了..

使用特权

评论回复
地板
Vincent0816| | 2012-12-26 17:29 | 只看该作者
为什么TX对应的引脚要设为输入?

使用特权

评论回复
5
仰望星期五|  楼主 | 2012-12-26 18:03 | 只看该作者
Vincent0816 发表于 2012-12-26 17:29
为什么TX对应的引脚要设为输入?

数据手册上这样写的  而且RX也要设置为输入

使用特权

评论回复
6
仰望星期五|  楼主 | 2012-12-26 18:04 | 只看该作者
问题终于搞定了  有根线接错了   做硬件的真头疼   ..唉

使用特权

评论回复
7
仰望星期五|  楼主 | 2012-12-26 18:10 | 只看该作者
麻烦啊..

使用特权

评论回复
8
沧海之道| | 2012-12-26 18:26 | 只看该作者
建议楼主把 头文件换成#include<pic.h> 、把延时加长些 试下,没用过PIC18F45K20,除去设置8兆晶振把程序当作877来读没问题

使用特权

评论回复
9
diweo| | 2012-12-28 19:42 | 只看该作者
低级错误搞死人啊

使用特权

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

本版积分规则

9

主题

108

帖子

0

粉丝