PIF18F6723 10Mhz晶振 设置波特率为57600
时间: 2024-05-01 12:21:12 浏览: 9
在使用 PIF18F6723 控制器时,要设置正确的晶振频率和波特率才能正常通信。要设置波特率为 57600,可以使用以下代码:
```c
// 定义晶振频率
#define _XTAL_FREQ 10000000
// 设置波特率为 57600
#define BAUDRATE 57600
#define BRGVAL ((_XTAL_FREQ/BAUDRATE)/16)-1
// 初始化串口
void init_serial() {
SPBRG = BRGVAL; // 设置波特率
TXSTAbits.BRGH = 0; // 低速波特率模式
BAUDCONbits.BRG16 = 0; // 8位波特率发生器
TXSTAbits.SYNC = 0; // 异步模式
RCSTAbits.SPEN = 1; // 打开串口
TXSTAbits.TXEN = 1; // 打开发送
RCSTAbits.CREN = 1; // 打开接收
}
// 发送一个字符
void send_char(char c) {
while(!TXIF); // 等待发送缓冲区为空
TXREG = c; // 发送字符
}
// 发送一个字符串
void send_string(char* str) {
while(*str) {
send_char(*str++);
}
}
// 主函数
void main() {
init_serial(); // 初始化串口
send_string("Hello, world!"); // 发送字符串
while(1); // 主循环
}
```
在上面的代码中,`_XTAL_FREQ` 定义晶振频率,`BAUDRATE` 定义波特率,`BRGVAL` 为计算后的波特率发生器值。`init_serial()` 函数为串口初始化函数,设置波特率和其他参数。`send_char()` 和 `send_string()` 函数为发送字符和字符串的函数,使用 `TXREG` 寄存器发送数据。在主函数中,初始化串口并发送字符串,然后进入主循环。