⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 串口通信参考程序.h

📁 矩阵键盘检测,用于初学单片机的人了解学习
💻 H
字号:
#define T1MS_1200bps   0xD8;     /* (e8,-24,SMOD=0) @4800bps  pcon&=0x7f @11.0592MHz*/
#define T1MS_2400bps   0xEC;     /* (f4,-12,SMOD=0) @4800bps  pcon&=0x7f */
#define T1MS_4800bps   0xfa;     /* (fa, -6,SMOD=0) @4800bps  pcon&=0x7f */
#define T1MS_9600bps   0xFB;     /* (fd, -3,SMOD=0) @9600bps  pcon&=0x7f */
#define T1MS_19k2bps   0xfd;     /* (fd, -3,SMOD=1) @19.2kbps pcon|=0x80 */

unsigned char z;

/*********************************
函数名:sel_bps(select bps)
功能:设置串口波特率
sel为选择通讯速率:
  0=1200,1=2400,2=4800,3=9600,4=19.2k
作者:于振南
日期:06.02.25
*********************************/
void sel_bps(unsigned char sel)
{
     switch(sel)
     {
        case 0:PCON&=0x7f;
               TH1=T1MS_1200bps;   /* T1 use sio */
               TL1=T1MS_1200bps;
               break;
        case 1:PCON&=0x7f;
               TH1=T1MS_2400bps;   /* T1 use sio */
               TL1=T1MS_2400bps;
               break;
        case 2:PCON&=0x7f;
               TH1=T1MS_4800bps;   /* T1 use sio */
               TL1=T1MS_4800bps;
               break;
        case 3:PCON&=0x7f;
               TH1=T1MS_9600bps;   /* T1 use sio */
               TL1=T1MS_9600bps;
               break;
        case 4:PCON|=0x80;
               TH1=0xfd;   /* T1 use sio */
               TL1=0xfd;
               break;
     }

}

/*********************************
函数名:tran_init()(tranmit initialize)
功能:串口初始化
     通讯有关参数初始化
作者:于振南
日期:06.02.25
包含子函数:sel_bps
*********************************/
void tran_init()        /* 通讯有关参数初始化 */
{
    sel_bps(3); /* 选择通讯速率:0=1200,1=2400,2=4800,3=9600,4=19.2k */
    /* T1 use sio */
    TMOD=0x21;  /* T1=MODE2,sio; T0=MODE1,16bit,use time */
    PS=1;       /* SIO int high  优先级 */
    EA=1;
    ET1=0;

           SM0=0;
           SM1=1;      /* SM0=0 SM1=1,mode1,10bit          */
           SM2=0;      /* data int,无校验(TB8=bit_duble偶) */

    TR1=1;
    REN=1;
    RI=0;
    TI=0;
    ES=1;

}

/*********************************
函数名:sio_int(sio interrupt)
功能:中断方式接收串口数据   把收到的一个字节放在z中
通讯有关参数初始化
作者:于振南
日期:06.02.25
*********************************/
void  sio_int() interrupt 4 using 2
{
      ES=0;
      if(RI)        /* RI==1 */
      {  z=SBUF;
	 RI=0;
      }
      ES=1;
}

void trans(unsigned char dat)
{
 SBUF=dat;
 while(!TI);
 TI=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -