Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

PICにおけるCCSとMPLABの相違点@USART編

PICでUART通信を行う際の注意点。引っ掛かったのでメモ書き。

まず、CCSというコンパイラを利用したコード

//CCS版
#use delay(CLOCK = 20000000)   // Clock Frequency : 20MHz
#use rs232(BAUD = 9600, XMIT = pin_c6, RCV = pic_n7, PARITY = N, BITS = 8)   // assign USART Tx:RP8 Rx:RP9

これをMPLABというコンパイラに移植しようとすると……

//MPLAB版
#include "usart.h"
TRISC = 0x80;

OpenUSART (USART_TX_INT_OFF & USART_RX_INT_ON &
           USART_ASYNCH_MODE & USART_EIGHT_BIT &
           USART_CONT_RX & USART_BRGH_HIGH 129)

といった感じになります。

このなかで、USART_BRGH_HIGHというものが少々特殊で、
 Y = ({\frac{freaq}{BoudRate}}\frac{1}{16}) - 1
という計算式で導出したものを用います。

参照元