保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

PIC18FXX8单片机通用同步异步收发器的编程应用


char SciReceiveFlag; /* =1,接收到8个数据 */
unsigned char Send_Mode=0;  /* 不为0,中断方式发送;=0,非中断方式发送 */

void sciinitial()           /* 串行通讯初始化子程序 */
{
 TXSTA=0x04;    /* 选择异步高速方式传输8位数据 */
 RCSTA=0x80;    /* 允许串行口工作使能 */
 TRISC=TRISC|0X80;  /* :将RC7(RX)设置为输入方式 */
 TRISC=TRISC&0Xbf;  /* RC6(TX)设置为输出 */
 SPBRG=25;    /* 4M晶振且波特率为9600时,SPBRG设置值为25 */
 PIR1=0x00;    /* 清中断标志 */
 PIE1=PIE1|0x20;   /* 允许串行通讯接口接收中断使能 */
 RCIP=0;     /* 设置SCI接收中断为低优先级中断  */
 CREN=1;     /* 允许串口连续接收数据 */
 if(0==Send_Mode) TXEN=1; /* Send_Mode=0,非中断方式发送,串口发送数据使能 */
 else      /* Send_Mode=1,中断方式发送 */
 {
  PIE1=PIE1|0x10;  /* 允许中断发送 */
  TXIP=0;    /* 发送低优先级中断 */
 }
}

void interrupt low_priority LOW_ISR()  /* 低优先级中断子程序 */
{
 if(RCIF==1)       /* RS232接收中断 */
 {
  RCIF=0;       /* 清中断标志 */
  receive232[receive_count]=RCREG; /* 接收数据并存储 */
  send232[receive_count]=RCREG;      /* 接收数据存放到发送缓冲数组 */
  receive_count++;     /* 接收计数器加1 */
  if(receive_count>7)     /* 如果已经接收到8个数据 */
  {
   receive_count=0;    /* 接收计数器清0 */
   SciReceiveFlag=1;    /* 置接收到8个数据标志 */
  }
 }
 else if((0!=Send_Mode)&&(TXIF==1))  /* 中断发送数据方式且为发送中断 */ 
 {
  if(send_count>7)     /* 已经发送完8个数 */
  {
   TXEN=0;      /* 发送不使能 */
   return;
  }
  else
  {
   send_count++;     /* 发送计数器加1 */
   TXREG=*pointer++;   /* 发送当前应发送数据,发送指针加1 */
  }
 }
}

main()    &nbs

《PIC18FXX8单片机通用同步异步收发器的编程应用(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/158319.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。