问答

汇集网友智慧,解决技术难题

45613513

TA的家园币:40  

  • 家人们,PIC串口通信的程序出问题了

    刚学习PIC单片机的小白,用的dsPIC30f4011,程序是买板子送的,/*********************************************************************//*文件说明:uart发送接收*//*硬件配置:MCU:DSPIC30F4011,OSC:使用片外部4M16倍频64MHz振荡器..*//*版本:v1.0*//*使用说明:P7短路帽连接AN0,P6短路帽连接为AVDDAVSS提供标准电源*//*修改记录:*//********************************************************************/#include"p30f4011.h"#include"oled.h"_FOSC(0XC307);//FCKSM=11;时钟切换禁止0111=带有16倍频PLL的XT??16倍频PLL使能的XT晶振模式(晶振频率为4MHz到10MHz_FWDT(0X0000);//关狗_FBORPOR(0X3A3);//MCLREN禁止欠压2.7V上电延时64MS_FGS(0X03);//voidUART_Init(void);voidUART1_TX(unsignedcharc);unsignedcharUART1_RX(void);//接收数据unsignedcharData;voidSystem_Init(void)//系统初始化{OSCCON=0x33e0;//主振荡器新振荡器主振荡器4MHz64分频PLL锁定(使能)TRISB=0x0000;}voidUART_Init(void){U1MODE=0x0000;//8位数据无奇偶校验1停止位U1MODEbits.UARTEN=1;//使能UARTU1STA=0x0000;//状态和控制寄存器U1BRG=((64000000/4/16)/9600)-1;//64MHz波特率9600(按照计算公式)IEC0bits.U1TXIE=1;//发送中断允许IPC2bits.U1TXIP=7;//发送中断优先级7U1STAbits.UTXEN=1;//使能发送IEC0bits.U1RXIE=1;//接收中断允许IPC2bits.U1RXIP=6;//接收中断优先级6}voidUART1_TX(unsignedcharTXData)//发送数据{while(U1STAbits.UTXBF);U1TXREG=TXData;}unsignedcharUART1_RX(void)//接收数据{unsignedcharRXData;while(!U1STAbits.URXDA);RXData=U1RXREG;returnRXData;}voidDelay_1ms(unsignedintt)//t=1000大概1s{unsignedinti,j;for(i=0;i<t;i++)for(j=0;j<100;j++);}intmain(){System_Init();OLED_Init();//初始化OLEDOLED_Clear();UART_Init();disn(4,0,55);disn(5,0,69);disn(6,0,76);disn(7,0,67);disn(8,0,79);disn(9,0