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语言的串口收发代码,学习下,先谢谢了!

 
					
				
 
			
			
			
						
			 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

