Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7563452
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2012-05-28 16:47:52


点击(此处)折叠或打开

  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   
阅读(3887) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~