自己编写STC15F2K60S2函数之串口2通信初始化

 时间:2026-02-12 06:03:08

1、#include <STC15F2K60S2.H>

2、/*****

函数名:串行口2初始化

调用:Serial2Ini();

参数:无

备注:串行口2只有8位可变波特率和9位可变波特率2种方式,而且只能使用定时器2作为波特率发生器,而定时/计数器2只有一种工作方式——16位自动重装方式。

*****/

void Serial2Ini(){

    S2CON = 0x10;  //S2SM0 | 空 | S2SM2 | S2REN | S2TB8 | S2RB8 | S2TI | S2RI(方式0即8位可变波特率方式;允许接收)

    T2L = 0xE8;        //此时,波特率=定时器2的溢出率/4

    T2H = 0xFF;       //通过T2L和T2H的值设置波特率为9600

    AUXR &= 0xE3;  //先对需要设置的位进行清零 1110 0011

    AUXR |= 0x10;   //T0x12 | T1x12 | UART_M0x6 | T2R | T2_C/T(T上画) | T2x12 | EXTRAM | S1ST2 启动定时器2,即T2R=1;12T

    IE2 &= 0xFE;        //先对需要设置的位进行清零 1111 1110

    IE2 |= 0x01;          //-    -    -    -    -    -    - | ESPI | ES2 允许UART2中断

    EA = 1;                //允许总中断

}

3、void main(void)

{

    Serial2Ini();                    //运行串口2初始化函数

    while(1){

}                                //等待中断()

}

4、oid Uart2(void) interrupt 8 using 2

{

    unsigned char mydata;

    if(S2CON & 0x01)          //如果是接收中断

    {

        S2CON &= 0xFE;       //接收中断标志位清0  

        mydata = S2BUF;      //将接收缓冲区的数据保存到mydata变量中

        S2BUF = ~mydata;    //将接收到的数据按位取反后发回

    }

    if(S2CON & 0x02)          //如果是发送中断

    {

        S2CON &= 0xFD;       //发送中断标志清0  

    }

}

  • 如何使用AD9利用向导画PCB贴片封装
  • 如何关闭Altium Design的自动保存功能
  • Altium Designer 2016工程文件的建立与保存
  • altium designer如何设置关闭online DRC
  • Altium Designer怎么关闭保护锁定的对象
  • 热门搜索
    怎样预防感冒 筋膜炎怎么治 体育常识 取笑的近义词 男性性健康常识 密密麻麻的近义词 莫干山板材怎么样 传真机怎么用 qq怎么看别人删了我 扭伤怎么处理