【发布时间】:2016-04-08 05:08:33
【问题描述】:
我为 PIC16F877A 编写了 UART 代码。代码不工作,它显示一个错误,如 MP LAB IDE 所需的指针。我想向 PC 超级终端发送和接收字符。
#include<pic.h>
void pic_init(void)
{
TRISC7=1;
TRISC6=0;
}
void uart_init(void)
{
TXSTA=0x20;
RCSTA=0x90;
SPBRG=15;
}
void tx(unsigned char byte)
{
int i;
TXREG=byte;
while(!TXIF);
for(i=0;i<400;i++);
}
void string_uart(char *q)
{
while(*q)
{
*(*q++);
}
}
unsigned char rx()
{
while(!RCIF);
return RCREG;
}
void main()
{
char *q;
pic_init();
uart_init();
tx('N');
rx();
string_uart("test program");
}
【问题讨论】:
-
看看this guide。至少你必须设置波特率来做你想做的事。一个小提示。尝试短接 TX 和 RX 引脚并开始使其工作。要将其连接到 PC,您至少还需要一根 USB 转 TTL UART (5V) 电缆。
-
如果您的编译器发出诊断消息,您应该在问题中包含确切的消息,并准确指出该消息是在哪一行发出的。
-
@LPs:具有传统串行端口的 PC 仍然可用。尽管随后将需要 232 线驱动器。如果他的电脑默认安装了超级终端,那它一定很老了,无论如何可能有 232 个端口。
-
@Clifford 我的意思是 OP 不能在不使用 MAX232 的情况下直接将 PIC 连接到 PC。我建议使用 USB 转 TTL 电缆直接连接到 TX 和 RX 引脚,可能在带有 PIC PDIP 封装的面包板测试电路上。
-
当我们设置 SPBRG 值为 15 时,buad rate 值为 9600,晶振频率为 10MhZ,根据数据表。请回复我先生。