zoukankan      html  css  js  c++  java
  • 串口中断程序步骤及代码

    串口中断程序步骤:
    串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:
    ●确定串行口控制(编程SCON寄存器确定串口工作方式SM0,SM1,允许串口接受REN);
    ●确定T1(定时器)的工作方式(编程TMOD寄存器);
    ●计算T1的初值,装载TH1、TL1;
    ●串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。中断源的中断允许   打开总中断CPU开中断
          ——打开允许中断,依次打开串口允许中断位ES,总中断允许位EA(=1,允许)
    ●启动T1(编程TCON中的TR1位);
    ●当串口有中断请求时(串口有数据传输时)即中断源发生响应,开始进入中断程序

     

    对应代码:蓝色是外加条件,红色任何中断的必要条件,任何中断条件所必须设置的

    SCON=0X50; //设置为工作方式1
    TMOD=0X20; //设置计数器工作方式2
    PCON=0X80; //波特率加倍
    TH1=0XF3; //计数器初始值设置,注意波特率是4800的
    TL1=0XF3;
    ES=1; //打开接收中断
    EA=1; //打开总中断
    TR1=1; //打开计数器

     1 void UsartInit()
     2 {
     3 SCON=0X50; //设置为工作方式1
     4 TMOD=0X20; //设置计数器工作方式2
     5 PCON=0X80; //波特率加倍
     6 TH1=0XF3; //计数器初始值设置,注意波特率是4800的
     7 TL1=0XF3;
     8 ES=1; //打开接收中断
     9 EA=1; //打开总中断
    10 TR1=1; //打开计数器
    11 }
    12 
    13 void Usart() interrupt 4
    14 {
    15 u8 receiveData;
    16 
    17 receiveData=SBUF;//出去接收到的数据
    18 RI = 0;//清除接收中断标志位
    19 SBUF=receiveData;//将接收到的数据放入到发送寄存器
    20 while(!TI); //等待发送数据完成
    21 TI=0; //清除发送完成标志位
    22 }
  • 相关阅读:
    is 和 == 区别@编码
    python字典
    python的简介
    初始python3
    初始python2
    初始python1
    Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) B2. TV Subscriptions (Hard Version)
    Codeforces Round #596 (Div. 2, based on Technocup 2020 Elimination Round 2) A. Forgetting Things
    2019ICPC区域赛(银川)总结
    Educational Codeforces Round 74 (Rated for Div. 2) D. AB-string
  • 原文地址:https://www.cnblogs.com/zhj868/p/12591994.html
Copyright © 2011-2022 走看看