专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

STC12串口1(独立波特率发生器)使用

作者:佚名   来源:本站原创   点击数:  更新时间:2014年04月10日   【字体:



串口1独立.c
//******************************(STC12串口1独立波特率发生器的应用)*****************************************
// 马梓熔
//***************************************************************************************
#include "STC12C5A.h"
#define uchar unsigned char
#define uint unsigned int
#define Buf_Max 40
uchar i;
uchar  Rec_Buf[]={"hello! mazirong\n"};
//********************延时函数
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,允许独立波特率发生器运行;[bit0]SIBRS=1,独立波特率作为串口1的波特率发生器,此时定时器1释放
 BRT=0XFD;   //独特波特率发生器定时器(产生波特率9600)
 EA=1;
 ES=1;
}
//*******************发送一个字符
void Send_Char(uchar a)
{
 ES=0;
 SBUF=a;
 delay(200);
 while(!TI);  //等待TI变为1
 TI=0;   //TI清0
 ES=1;
}
//*******************发送一个字符串
void Send_String(uchar *tab)
{
 ES=0;
 while(*tab!='\0')
  {
   Send_Char(*tab++);
  }
 ES=1;
}
//********************主函数
void main()
{
 while(1)
 {
  Serial_Iint();
  delay(1000);
  Send_String(Rec_Buf);
  delay(1000);
 }
}
//********************串口1中断函数
void Serial_Int() interrupt 4
{
 ES=0;         //关串口中断,防止中断的嵌套
 if(TI)        //如果是串口1发送中断(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.51hei.com/mcu/3282.html

 

关闭窗口