1 我用的是30281f6芯片,64脚的,16M晶振,UART0口外接485芯片MAX1487(已将写使能脚置高电平),数据始终发不出去,程序在下面
2 我最初想用p6_0脚作为发送使能接到1487上,但用程序(crd_u0c0 = 1 ; pd6_0 = 1 ; p6_0 = 1; )无法使该脚变为高电平,而同样方法可以设置p10口,那里出的问题?
#include "sfr28.h"
void main(void)
{
volatile unsigned int temp = 1;
unsigned char u0c1_1;
unsigned char u0c0_1;
unsigned char u0mr_1;
unsigned char u0brg_1;
unsigned int u0tb_1;
prc2 = 1;
pacr = 2;
u0c0 = 0x01;
u0c0_1 = u0c0;
u0mr = 0x65;//8位数据,内部时钟,一个停止位,偶校验,允许校验,无反转。
u0mr_1 = u0mr;
u0c1 = 0x05;//发送控制
u0c1_1 = u0c1;
u0brg = 0x67;//16M晶振
u0brg_1 = u0brg;
while( 1 ){
if( txept_u0c0 == 1 ){
u0tb = temp;
u0tb_1 = u0tb;
temp++;
}
while( txept_u0c0 == 0 ){
asm("nop");
}
}
}
波特率寄存器的值不变化,我设的波特率变量的值也不变化,是不是波特率没有设定啊,每次单片机复位后,PC上的串口精灵能收到一次数据'FE',以后什么也收不到了,程序有什么问题呢?
u0brg_1 H'00 '.' { 0x0007d3 } (unsigned char),
起初以为uotb没写进去,因为寄存器窗口一直显示 uotb 0181,而且u0tb_1一直随别的变量值变化,但停止时,u0tb_1的值是正确的,我估计u0tb的值是写进去了,
我是新手,找不到问题原因,请高手们给看看那里有问题?
要是方便给一个30281下C语言的串口收发代码,学习下,先谢谢了!