Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631588
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 10:59:18

原文地址:PIC18f8772 串口通讯 作者:luozhiyong131


点击(此处)折叠或打开

  1. /***************************************************
  2. **
  3. ** MCU:PIC18f8772
  4. ** 功能:串口接收
  5. ** 说明:轮询方式
  6. ** 时间:2012-5-28     Lzy
  7. **
  8. *****************************************************/

  9. #include<p18cxxx.h>

  10. /* 串口初始化 */
  11. void UartInit(void)
  12. {
  13.     RCSTA1bits.SPEN = 1;    // 串口使能

  14.     TRISCbits.TRISC7 = 1;    // 异步串行接收数据输入
  15.     TRISCbits.TRISC6 = 0;// 异步和同步主模式,TRISC<6> 零(= 0)
  16.         
  17.     // TXSTA1:发送状态和控制寄存器
  18.     TXSTA1bits.SYNC = 0;    // 异步模式
  19.     TXSTA1bits.TX9 = 0;     // 选择8 位发送
  20.     TXSTA1bits.TXEN = 1;     // 禁止发送
  21.     TXSTA1bits.BRGH = 1;     // 高速
  22.     TXSTA1bits.TXEN = 1; // 使能发送

  23.     // RCSTA1:接收状态和控制寄存器
  24.     RCSTA1bits.RX9 = 0; // 选择8 位接收
  25.     RCSTA1bits.CREN = 1; // 使能接收器

  26.     // BAUDCON1:波特率控制寄存器
  27.     BAUDCON1bits.BRG16 = 0; // 8位波特率发生器——SPBRGHx 和SPBRGx
  28.     SPBRG1 = 25;

  29.     TRISF = 0;
  30. }

  31. void main()
  32. {
  33.     UartInit();
  34.     
  35.     if(PIR1bits.RC1IF)    // 已接收数据
  36.     {
  37.         PORTF = RCREG1; // 读取接收到的数据
  38.     }
  39. }

点击(此处)折叠或打开

  1. /***************************************************
  2. **
  3. ** MCU:PIC18f8772
  4. ** 功能:串口发送
  5. ** 说明:
  6. ** 时间:2012-5-28     Lzy
  7. **
  8. *****************************************************/

  9. #include<p18cxxx.h>

  10. /* 串口初始化 */
  11. void UartInit(void)
  12. {
  13.     RCSTA1bits.SPEN = 1;    // 串口使能

  14.     TRISCbits.TRISC7 = 1;    // 异步串行接收数据输入
  15.     TRISCbits.TRISC6 = 0;// 异步和同步主模式,TRISC<6> 零(= 0)
  16.         
  17.     // TXSTA1:发送状态和控制寄存器
  18.     TXSTA1bits.SYNC = 0;    // 异步模式
  19.     TXSTA1bits.TX9 = 0;     // 选择8 位发送
  20.     TXSTA1bits.TXEN = 1;     // 禁止发送
  21.     TXSTA1bits.BRGH = 1;     // 高速
  22.     TXSTA1bits.TXEN = 1; // 使能发送

  23.     // RCSTA1:接收状态和控制寄存器
  24.     RCSTA1bits.RX9 = 0; // 选择8 位接收
  25.     RCSTA1bits.CREN = 1; // 使能接收器

  26.     // BAUDCON1:波特率控制寄存器
  27.     BAUDCON1bits.BRG16 = 0; // 8位波特率发生器——SPBRGHx 和SPBRGx
  28.     SPBRG1 = 25;

  29.     TRISE = 0xff;
  30.     TRISA = 0;
  31. }

  32. void main()
  33. {
  34.     UartInit();

  35.     if(TXSTA1bits.TRMT)    // 发送完毕
  36.     {
  37.         TXREG1 = PORTE;    // 发送数据
  38.     }
  39. }

源码+仿真: PIC18f8722.rar   
阅读(257) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~