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 }
  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/zhj868/p/12591994.html
Copyright © 2011-2022 走看看