资讯详情

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

串口1独立.c //******************************(C12串口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() { SC=0x50; //[bit6:5]SM1 SM2 = 1 0;[bit4]REN=1 AUXR=0x11; //[bit4]R=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变为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

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台