專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

STC12串口1(獨立波特率發(fā)生器)使用

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年04月10日   【字體:



串口1獨立.c
//******************************(STC12串口1獨立波特率發(fā)生器的應用)*****************************************
// 馬梓熔
//***************************************************************************************
#include "STC12C5A.h"
#define uchar unsigned char
#define uint unsigned int
#define Buf_Max 40
uchar i;
uchar  Rec_Buf[]={"hello! mazirong\n"};
//********************延時函數(shù)
void delay(uint z)
{
 uint i,j;
 for(i=z;i>0;i--)
  for(j=110;j>0;j--);
}
//********************串口1初始化
void Serial_Iint()
{
 SCON=0x50; //[bit6:5]SM1 SM2 = 1 0;[bit4]REN=1
 AUXR=0x11; //[bit4]BRTR=1,允許獨立波特率發(fā)生器運行;[bit0]SIBRS=1,獨立波特率作為串口1的波特率發(fā)生器,此時定時器1釋放
 BRT=0XFD;   //獨特波特率發(fā)生器定時器(產(chǎn)生波特率9600)
 EA=1;
 ES=1;
}
//*******************發(fā)送一個字符
void Send_Char(uchar a)
{
 ES=0;
 SBUF=a;
 delay(200);
 while(!TI);  //等待TI變?yōu)?
 TI=0;   //TI清0
 ES=1;
}
//*******************發(fā)送一個字符串
void Send_String(uchar *tab)
{
 ES=0;
 while(*tab!='\0')
  {
   Send_Char(*tab++);
  }
 ES=1;
}
//********************主函數(shù)
void main()
{
 while(1)
 {
  Serial_Iint();
  delay(1000);
  Send_String(Rec_Buf);
  delay(1000);
 }
}
//********************串口1中斷函數(shù)
void Serial_Int() interrupt 4
{
 ES=0;         //關(guān)串口中斷,防止中斷的嵌套
 if(TI)        //如果是串口1發(fā)送中斷(TI)不進行處理
  {
   TI=0;  //TI清0
  }
 if(RI)   
  {
   RI=0;  //RI清0
   Rec_Buf[i]=SBUF;
   i++;
   if(i>Buf_Max)
    {
     i=0;
    }
  }
 ES=1;         //開啟串口中斷
}
stc12c5a.h 這個頭文件的下載地址:http://www.torrancerestoration.com/mcu/3282.html

 

關(guān)閉窗口