定时器T0模拟串口程序设计

来源:本站
导读:目前正在解读《定时器T0模拟串口程序设计》的相关信息,《定时器T0模拟串口程序设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《定时器T0模拟串口程序设计》的详细说明。
简介:实现功能:定时器T0模拟串口
使用芯片:STC15F104E
晶振:内部晶振 11.0592MHZ
编译环境:Keil

/********************************************************************实现功能:定时器T0模拟串口使用芯片:STC15F104E晶振:内部晶振 11.0592MHZ编译环境:Keil   *********************************************************************/#include "reg52.h" #include <intrins.H>#define uchar unsigned char //宏定义字符型变量#define uint  unsigned int  //宏定义整型变量/********************************************************************                            波特率设定*********************************************************************///#define BAUD 0XF400  //1200bps@ 11.0592MHZ//#define BAUD 0XFA00  //2400bps@ 11.0592MHZ//#define BAUD 0XFD00  //4800bps@ 11.0592MHZ#define BAUD 0XFE80  //9600bps@ 11.0592MHZ//#define BAUD 0XFF40  //19200bps@ 11.0592MHZ//#define BAUD 0XFFA0  //38400bps@ 11.0592MHZsbit  P33=P3^3;          //定义继电器控制输出脚/********************************************************************                            定义特殊寄存器*********************************************************************/sfr AUXR  =  0x8E;   //辅助寄存器sbit RXB=P3^0;sbit TXB=P3^1;/********************************************************************                           定义数据类型*********************************************************************/uchar TBUF,RBUF;uchar TDAT,RDAT;uchar TCNT,RCNT;uchar TBIT,RBIT;uint TING,RING;uint TEND,REND;void UART_INIT(); //声明函数uchar t,r;        //定义数据类型uchar but[16];    //数据存储数组/********************************************************************                            主函数*********************************************************************/void main(){TMOD=0X00;     //定时器T0设定AUXR=0X80;     //辅助寄存器TL0=BAUD;      //十六位寄存器TH0=BAUD>>8;   //十六位寄存器TR0=1;         //开定时器ET0=1;PT0=1;EA=1;          //开总中断UART_INIT();   //串口初始化while(1)       //无线循环{if(REND)  {   REND=0;   but[r++&0x0f]=RBUF;   }   if(TEND)   {   if(t!=r)     {     TEND=0;     TBUF=but[t++&0x0f];     TING=1;     }   }}}/********************************************************************                            定时器T0*********************************************************************/void tm0()interrupt 1 using 1{ if(RING)  {   if(--RCNT==0)    {     RCNT=3;     if(--RBIT==0)        {         RBUF=RDAT;         RING=0;         REND=1;        }        else        {         RDAT>>=1;         if(RXB)RDAT|=0X80;        }    }  }    else if(!RXB)    {     RING=1;     RCNT=4;     RBIT=9;    }    if(--TCNT==0)    {    TCNT=3;    if(TING)    {      if(TBIT==0)      {      TXB=0;      TDAT=TBUF;      TBIT=9;      }      else      {      TDAT>>=1;      if(--TBIT==0)      {       TXB=1;       TING=0;       TEND=1;      }      else      {      TXB=CY;      }      }    }    }}/********************************************************************              功能:串口初始化,波特率9600,方式1*********************************************************************/void UART_INIT(){TING=0;RING=0;TEND=1;REND=0;TCNT=0;RCNT=0;}/********************************************************************                            结束*********************************************************************/

提醒:《定时器T0模拟串口程序设计》最后刷新时间 2024-03-14 01:02:36,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《定时器T0模拟串口程序设计》该内容的真实性请自行鉴别。