原创 PIC24F初始设置代码(Uart)

2009-7-10 15:44 3999 10 12 分类: MCU/ 嵌入式

#define FCY      16000000
#define BAUDRATE 115200              
#define BRGVAL   ((FCY/BAUDRATE)/16)-1


void Uart1_Init()
{
 U1BRG = BRGVAL; //Set Baudrate
 U1STA = 0;
 U1MODE = 0;
 
 U1MODEBITS.BRGH = 1;
 U1MODEBITS.STSEL = 0;   // 1-stop bit
 U1MODEBITS.PDSEL = 0;   // No Parity, 8-data bits
 U1MODEBITS.ABAUD = 0;   // Autobaud Disabled
 
 U1STABITS.UTXISEL0 = 0;   // Interrupt after one Tx character is transmitted
 U1STABITS.UTXISEL1 = 0;                              
 U1STABITS.URXISEL  = 0;   // Interrupt after one RX character is received
 
 U1MODEBITS.UARTEN = 1;//Enable Uart1
 U1STABITS.UTXEN = 1; //Enable Transmit
 
 IEC0BITS.U1TXIE = 1; //Enable Transmit Interrupt
 IEC0BITS.U1RXIE = 1; //Enable Receive Interrupt


 IPC3BITS.U1TXIP = 0x01;  //Setup Uart1 TX interrupt for desired priority level
 IPC2BITS.U1RXIP = 0x01;  //Setup Uart1 RX interrupt for desired priority level


 IFS0BITS.U1RXIF = 0;//Clear the Recieve Interrupt Flag
 IFS0BITS.U1TXIF = 0;//Clear the Transmit Interrupt Flag


 IEC4BITS.U1ERIE = 0;  //Uart1 Interrupt error
}


/********************************************************************
* Function:  void PutChar(BYTE Char)
*
* Precondition: UART Setup
*
* Input:   Char - Character to transmit
*
* Output:   None
*
* Side Effects: Puts character into destination pointed to by ptrChar.
*
* Overview:  Transmits a character on UART1.
*     Waits for an empty spot in TXREG FIFO.
*
* Note:    None
********************************************************************/
void PutChar(char txChar)
{
 while(U1STAbits.UTXBF); //wait for FIFO space
 U1TXREG = txChar; //put character onto UART FIFO to transmit
}//end PutChar(char txChar)



/********************************************************************
* Function:        void GetChar(BYTE * ptrChar)
*
* PreCondition:    UART Setup
*
* Input:  ptrChar - pointer to character received
*
* Output:  
*
* Side Effects: Puts character into destination pointed to by ptrChar.
*    Clear WDT
*
* Overview:  Receives a character from UART1. 
*
* Note:   None
********************************************************************/
void GetChar(char *ptrChar)
{
 //get the data
 while(U1STAbits.URXDA);
  * ptrChar = UxRXREG;  //get data from UART RX FIFO
}//end GetChar(char *ptrChar)

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

zhangtaibin209_962839323 2010-4-27 11:23

多谢 soicer指出错误

用户1290921 2009-7-18 18:16

这段代码不知道从哪里来的?是来自网络,还是博主自己写的? 代码中设置了BRGH = 1, 就是高速波特率模式,在这个模式下,波特率的计算((FCY/BAUDRATE)/16)-1 就不对了,应该是 ((FCY/BAUDRATE)/4)-1 ,不知道我说的对不对? 小弟刚学PIC,感谢博主提供此代码做参考
相关推荐阅读
zhangtaibin209_962839323 2017-06-02 16:09
VGL和VGH
VGL是TFT屏的负电源输入脚,VGH是TFT屏的正电源输入脚,对一个屏来说,这两个电压是恒定的,是没有“电时序”的。 VGH和VGL是给PANEL中的TFT当作ON OFF状态的需求电压,所以只要给...
zhangtaibin209_962839323 2017-05-27 10:08
区分J型与K型热电偶小方法
J型热电偶为,铁-康铜。K型热电偶为,镍铬-镍铬硅。铁和镍铬硅都有磁性。先用万用表区分正负极,温度电压来判断,然后拿一块吸铁石。K型的负极可以用吸铁石吸住,J型的正极可以用吸铁石吸住。 ...
zhangtaibin209_962839323 2017-04-12 11:23
偷锡焊盘
在PCB设计中,如果使用SOP、QFP、DIP、SIP、ZIP等系列封装的元件,则需要对其进行偷锡焊盘的处理。具体有以下三种处理方式: 一、增大边脚焊盘的方式: 此方式比较适用于QFP系列封装的元件,...
zhangtaibin209_962839323 2017-04-07 17:36
防范热电偶干扰的措施
抗串扰的措施:串模干扰电压通常不大的,但由于它是与被测信相串联的,其有害作用往往不大容易消除,尤其是在输入端产生的干扰电压,更无法消除。针对串模干扰产生的原因,可采取一些有效的措施以防止外界产生的干扰...
zhangtaibin209_962839323 2010-05-18 09:36
晶闸管
晶闸管知识问与答一、可控硅的概念与结构晶闸管又叫可控硅。它的主要成员有单向晶闸管、双向晶闸管、光控晶闸管、逆导晶闸管、可关断晶闸管、快速晶闸管等等。今天大家是单向晶闸管,也就是人们常说的普通晶闸管,它...
zhangtaibin209_962839323 2010-05-17 09:07
极性电容
      首先需要弄清楚极性电容和无极性电容的区别。       从使用角度来说,若能全部使用无极性电容,肯定可以简化设计,但由于生产工艺的限制,目前无极性电容还不能够制作大容量的电容。所以简单的说...
EE直播间
更多
我要评论
2
10
关闭 站长推荐上一条 /3 下一条