大家好, 以下是我的一个小测试程序,我在程序中先写了数据,然后再把数据读出来利用uart串口发送到串口调试器中,但是我发现写的数据与读到的数据不一样,请大家指点一下。
#include <pic.h>
#define uint unsigned int
#define uchar unsigned char
void uart_send(uchar n)//串口发送数据函数
{
TXIF=0;
TXREG=n; /*发出一个字符*/
while(TRMT==0); /*等待写入完成*/
}
void uart_init(void)//串口初始化
{
TRISC6=0; //设置PC6方向为输出
TRISC7=1;
SPBRG=0X26; //设置波特率为19200BPS,12M
TXSTA=0X24; //使能串口发送,选择高速波特率
RCSTA=0X90; //使能串口工作,连续接收
}
void main(void)
{
uart_init();//串口初始化
TRISE=0x00;//E端口设为输出
PORTE=0XFF;//E端口设为高电平
while(1)
{
RE0=1;//1
RE1=0;//0
RE2=1;//1
TRISE=0XFF;////E端口设为输入
uart_send(0xaa);//发送0xaa
uart_send(RE0);//发送RE0的数据
uart_send(RE1);//发送RE1的数据
uart_send(RE2);//发送RE2的数据
uart_send(0x55);//发送0xaa
while(1);
}
}
以下是在串口中看到的数据:
(原文件名:未命名.JPG)
RE口设置为输入,读取的结果是引脚外接电平。
RE0=1;//1
RE1=0;//0
RE2=1;//1
这几行代码基本没有用的!
你这个结果有可能是对的哦!
re口设置为输入,读取的结果是引脚外接电平。
re0=1;//1
re1=0;//0
re2=1;//1
这几行代码基本没有用的!
-----------------------------------------------------------------------
大哥!为什么会这样!我明明写了数据,为什么你说没有用呢!那如果我要写数据到RE0~2那要怎么写啊!
传的是e0 e1 e2引脚的电平状态
-----------------------------------------------------------------------
回复【1楼】stepby 蓝莲花
re0=1;//1
re1=0;//0
re2=1;//1
trise=0xff;////e端口设为输入
-----------------------------------------------------------------------
大哥!我写的是
“re0=1;//1
re1=0;//0
re2=1;//1
”
为什么说传的是0啊!请指点!谢谢
一周热门 更多>