首页 > 其他分享 >单片机笔记

单片机笔记

时间:2022-10-24 12:13:06浏览次数:55  
标签:定时器 中断 串口 笔记 T1 单片机 寄存器 RI

数码管静态显示

使用定时器的方法

  1. 设置特殊功能寄存器TMOD,配置好工作模式
  2. 设置计数寄存器TH0和TL0的初值
  3. 设置TCON,通过TR0置1来让定时器开始计数
  4. 第四判断TCON寄存器的TF0位,检测定时器溢出情况

TCON——定时器控制寄存器的位分配(地址0x88, 可位寻址)

7 6 5 4 3 2 1 0
符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
复位值 0 0 0 0 0 0 0 0

TCON——定时器控制寄存器的位描述

符号 描述
7 TF1 定时器1溢出的标志, 一旦定时器1发生溢出时硬件置一, 清零有两种方式:软件清零,或者进入定时器中断时硬件清零
6 TR1 定时器1运行控制位, 软件置位/清零来启动/停止定时器
5 TF0 定时器0溢出标志, 一旦定时器0发生溢出时硬件置1, 清零有两种方式:软件清零, 或者进入定时器中断时硬件清零
4 TR0 定时器0运行控制位, 软件置位清零来启动/停止定时(1启动 0停止)器
3 IE1
2 IT1
1 IE0
0 IT0

TMOD——定时器模式寄存器的位分配(地址0x89, 不可位寻址)

7 6 5 4 3 2 1 0
符号 GATE(T1) C/T(T1) M1(T1) M0(T1) GATE(T0) C/T(T0) M1(T0) M0(T0)
复位值 0 0 0 0 0 0 0 0

TMOD——定时器模式寄存器的位描述

符号 描述
T1/T0 标T1的表示控制定时器1的位, 标T0表示控制定时器0的位
GATE 该位置1时为门控位, 仅当'INT0'脚为高并且TR0控制位被置1时使能定时器0, 定时器开始计时, 当该位被清零时, 只要TR0被置1, 定时器0就使能开始计时, 不受单片机引脚INT0外部信号的干扰, 常用测量外部信号脉冲宽度, 这是定时器一个额外功能
C/T 定时器或计数器选择位, 该位被清零时用作定时器功能(内部系统时钟), 被置1作用计数器功能

计算TH0的秒数方法:

  • (a x 12) / 11059200 = 计算的秒数
  • 然后再减 b = 65536 - a, b转16进制就是TH0和TL0的值

IE———中断使能寄存器的位分配(地址0xA8, 可位寻址)

7 6 5 4 3 2 1 0
符号 EA —— ET2 ES ET1 EX1 ET0 EX0
复位值 0 —— 0 0 0 0 0 0

IE——中断使能寄存器的位描述

符号 描述
7 EA 总中断使能位,相当于总开关
6 —— ————————————————
5 ET2 定时器2中断使能
4 ES 串口中断使能
3 ET1 定时器1中断使能
2 EX1 外部中断1使能
1 ET0 定时器0中断使能
0 EX0 外部中断0使能

中断查询序列

中断函数编号 中断名称 中断标志位 中断使能位 中断向量地址 默认优先级
0 外部中断 IE0 EX0 0x0003 1(最高)
1 T0 TF0 ET0 0x000B 2
2 外部中断 IE1 EX1 0x0013 3
3 T1 TF1 ET1 0x001B 4
4 UART TI/RI ES 0x0023 5
5 T2 TF2/EXF2 ET2 0x002B 6

x * 8 + 3 = 中断向量地址转10进制

IP——中断优先级寄存器的位分配(地址0xB8, 可位寻址)

7 6 5 4 3 2 1 0
符号 —— —— PT2 PS PT1 PX1 PT0 PX0
复位值 —— —— 0 0 0 0 0 0

IP——中断优先级寄存器的位描述

符号 描述
7 —— 保留
6 —— 保留
5 PT2 定时器2中断优先级控制位
4 PS 串口中断优先级控制位
3 PT1 定时器1中断优先级控制位
2 PX1 外部中断1中断优先级控制位
1 PT0 定时器0中断优先级控制位
0 PX0 外部中断0中断优先级控制位

CPU 时序有关知识

  1. 振荡周期
    • 有12MHz 和11.0592MHz

    • 以12MHz为例:振荡周期为: 1/2 us

  2. 状态周期
    • S = 1/6 us

  3. 机器周期
    • I = 1 us = 12 x T , 也就是一个机器周期等于12个振荡周期, 或者6个状态周期

  4. 指令周期
    • 指定周期为1~4 us

单片机串口介绍

串口相关寄存器

串口控制寄存器SCON

7 6 5 4 3 2 1 0
字节地址:98H SM0 SM1 SM2 REN TB8 RB8 TI RI SCON
SM0 SM1 方式 说明 波特率
0 0 0 移位寄存器 fosc/12
0 1 1 10位异步收发器(8位数据) 可变
1 0 2 11位异步收发器(8位数据) fosc/64或fosc/32
1 1 3 11位异步收发器(9位数据) 可变

SM2 是用来多机通信的控制位

当使用SM2 工作模式就要处于方式2 和方式3

  • 当SM2 等于1时:
    可以利用收到的RB8来控制是否激活RI,RI是一个接收中断

    • 当RB8 等于0时:
      表示不激活RI, 收到信息就丢弃

    • 当RB8 等于1时:
      收到的信息就会进入SBUF 缓冲器当中并激活RI, 从而接收这个数据

  • 当SM2 等于0时:
    无论收到的RB8 等于0 还是等于1 均都可以让数据进入SBUF 缓冲器里

  • 当使用多机通信时需要用到RB8 所以需要9位数据

REN 是允许接收位 用软件置1

  • 当REN 设置为0 时禁止接收, 当REN设置为 1时可以接收

TB8 是工作在方式2 和方式3的时候是用来发射数据的第九位

RB8 是工作在方式2 和方式3的时候是用来接收数据的第九位

TI 是一个发射中断标志位

  • 当方式0 的时候当串型接收第八位结束的时候或者是其他位停止的时候由内部硬件置1,TI 置1 就会向CPU 发送中断请求, 在中断服务程序必须用软件来置0

RI 是接收中断标志位

  • 在方式0 的时候, 当串型接收第八位结束的时候或者是其他位停止的时候由内部硬件置1 然后向CPU 发送一个中断申请, 也必须在中断服务程序中置0

电源控制寄存器 PCON

7 6 5 4 3 2 1 0
字节地址:97H SMOD PCON

方式0

RXD:数据发送和接收

TXD:移位脉冲

方式1(主要使用)

TXD:发送(输出)引脚——输出

  • 输出数据的八位(低位到八位)加上起始位和停止位, 一共八位

  • 停止位结束后TI 硬件置1, 发送中断完成, 向CPU发送中断的请求, 中断服务函数时我们可以手动将TI置1

RXD:接收(输入)引脚——输入

  • 结束接收后RI置1, 需要把RI 置0

先将REN 这个中断使能位置1

  • 当RI等于0 时, 且SM2 等于0 ,这是将接收到的9位数据的前八位接收到我们的SBUF当中(单片机串口内部自动完成置1,不需要我们操作)

方式2 3

TXD:发送引脚

RXD:接收引脚

和方式1不同, 他是11位的有9位数据

计算波特率

  1. 方式0 的波特率 = fosc/12
  2. 方式2 的波特率 = (2SMOD/64) * fosc
  3. 方式1 的波特率 = (2SMOD/32) * (T1 的溢出率)
  4. 方式3 的波特率 = (2SMOD/32) * (T1 的溢出率)

其中 T1 溢出率 = fosc / {12 x [256 - (TH1)]}

标签:定时器,中断,串口,笔记,T1,单片机,寄存器,RI
From: https://www.cnblogs.com/xgc030920/p/16821048.html

相关文章

  • 麒麟系统开发笔记(八):在国产麒麟系统上使用linuxdeployqt发布qt程序
    前言  在ubuntu上发布qt程序相对还好,使用脚本,但是在麒麟上发布的时候,因为银河麒麟等不同版本,使用脚本就不太兼容,同时为了实现直接点击应用可以启动应用的效果,使用linuxde......
  • 机器人仿真笔记[3]-基于Webots的避障机器人
    搭建世界[https://www.guyuehome.com/26706]添加矩形区域,添加物体放置机器人使用预置的e-puck机器人e-puck是一款小型机器人,带有差速轮,10个LED和几个传感器,其中包括......
  • 【图论】长链剖分学习笔记
    参考文章1参考文章20x01:引入与重链剖分不同,长链剖分以子树深度最大的儿子作为重儿子,这里所述之深度是指子树内离它最远的叶子到它的距离。如图绿色部分就是长链。......
  • 6.824笔记3
    大规模存储分布式的底层运行着一个大型分布式存储系统,并有一套接口,评估指标包括并行性能,容错,复制,一致性数据分割并放到多个服务器上,并且需要一个自动化的容错系统,一种容......
  • 读史记笔记
    ......
  • Vue笔记 脚手架vue-cli
                  ......
  • 数据结构#1 笛卡尔树学习笔记
    笛卡尔树数据结构结构介绍笛卡尔树是一种树形的数据结构,它的每一个节点都有两个值key和weight,其中key满足二叉搜索树的性质,而weight满足堆的性质。在使用时,我们通常将ke......
  • Mysql学习笔记(十三)
    mysql常用数据类型:int,double,float,decimal,varchar,char,text,datetime;表的创建:createtable[schema数据库名或者表名].tablename;数据对象的命名规则:必须以字......
  • 20201302姬正坤第五章学习笔记
    LINUX第五章定时器及时钟服务硬件定时器定时器是由时钟源和可编程计数器组成的硬件设备。时钟源通常是一个晶体振荡器,会产生周期性电信号,以精确的频率驱动计数器。使用......
  • sql-学习笔记
    1、union与unionall的区别:union会对查询到的数据进行去重,unionall则会保存所有查询到的结果 2、groupby1,2表示:第一列、第二列属性 3、count(1)和count(date)......