单片机复习总结
2026/6/12 14:50:58 网站建设 项目流程

文章目录

  • 1、寄存器
  • 1.1 常用SFR汇总表格
  • 1.2 TCON(定时器控制寄存器)
  • 1.3 TMOD(定时器方式控制寄存器)
  • 1.4. IE(中断允许寄存器)
  • 1.5. IP(中断优先级寄存器)
  • 2.中断总结
  • 2.1外部中断
  • 2.2定时器中断
  • 2.3 串口中断

1、寄存器

1.1 常用SFR汇总表格

SFR类别寄存器功能
定时器/计数器TCON定时器控制
定时器/计数器TMOD定时器模式
中断系统IE中断允许控制
中断系统IP中断优先级
串口通信SCON串口控制

1.2 TCON(定时器控制寄存器)

用于控制定时器启动或停止和外部中断的触发与响应,TCON是个8位寄存器。

位符号D7D6D5D4D3D2D1D0
位地址TF1TR1TF0TR0IE1IT1IE0IT0

位功能:TF1/TR1/TF0/TR0(溢出/启停),IE1/IT1/IE0/IT0(外部中断)
核心作用:控制定时器启停、标记溢出、配置外部中断触发方式

IT=Interrupt type
TR1表示启动
TR0表关闭

1.3 TMOD(定时器方式控制寄存器)

D7D6D5D4D3D2D1D0
TMODGATEC/TM1M0GATEC/TM1M0

前四位为T1方式字段,后四位为T0方式字段
双4位结构:高4位给T1,低4位给T0

模式选择:

模式0(13位计数)

模式1(16位计数)

模式2(8位自动重装)

模式3(T0分为两个8位)

1.4. IE(中断允许寄存器)

位序号D7D6D5D4D3D2D1D0
位符号EAET2ESET1EX1ET0EX0
位地址AFHADHACHABHAAHA9HA8H

总开关:EA(全局中断允许位)

EA=0时,禁止所有中断;

EA=1时,开放中断,但每个中断还受到各自的控制位控制。

各中断使能:ET2/ES/ET1/EX1/ET0/EX0

1.5. IP(中断优先级寄存器)

置1为高优先级:PS/PT1/PX1/PT0/PX0

规则:高优先级可打断低优先级;同级按自然顺序(INT0 > T0 > INT1 > T1 > 串口)
中断号为:从高到低 0,1,2,3,4

中断源中断名称中断矢量地址中断级别
IE0外部中断00003H最高级别
TF0定时器/计数器 0 溢出中断000BH
IE1外部中断10013H
TF1定时器/计数器 1 溢出中断001BH
R1、T1串行口中断0023H
TF2定时器/计数器 2 溢出中断002BH最低优先级

2.中断总结

2.1外部中断

触发源 单片机外部引脚信号(INT0/P3.2,INT1/P3.3)

触发方式 下降沿触发 / 低电平触发(IT0/IT1寄存器控制)

中断标志: IE0、IE1(硬件自动清零)

中断号 :INT0 → 0,INT1 → 2

配置步骤

  1. 设置触发方式(IT0=1下降沿/0低电平)
  2. 清零中断标志(IE0=0)
  3. 开启外部中断允许(EX0/EX1=1)
  4. 开启总中断(EA=1)

中断函数写法void ex_int0() interrupt 0 { }

2.2定时器中断

核心部件 定时器0(T0)、定时器1(T1)

工作模式 模式0(13位)、模式1(16位)、模式2(8位自动重装)、模式3(分裂)

相关寄存器 TMOD(模式设置)、TCON(启停控制)、THx/TLx(初值)

中断号 定时器0 → 1,定时器1 → 3
配置步骤

  1. 设置工作模式(TMOD)
  2. 计算并赋初值(THx/TLx)
  3. 清零中断标志(TF0=0)
  4. 开启定时器中断(ET0/ET1=1)
  5. 启动定时器(TR0/TR1=1)
  6. 开启总中断(EA=1)
    初值计算公式:初值 = 65536 - 定时时间 / 机器周期
    中断函数写法:void timer0() interrupt 1 { }

2.3 串口中断

核心部件 SBUF(发送/接收缓冲器,共用地址)

工作方式 方式0(同步移位)、方式1(8位UART可变波特率)、方式2/3(9位UART)

相关寄存器 SCON(模式/控制)、PCON(波特率加倍)

波特率设置 方式1:定时器1溢出率 / 32(或/16,SMOD=1时)

中断标志 TI(发送完成)、RI(接收完成),需软件清零

中断号 串口中断 → 4

配置步骤 :

  1. 设置工作方式(SCON)
  2. 设置波特率(定时器1)
  3. 清零中断标志(TI=0, RI=0)
  4. 开启串口中断(ES=1)
  5. 开启总中断(EA=1)
  6. 启动定时器1(TR1=1)

发送数据SBUF = 数据; while(!TI); TI=0;

接收数据while(!RI); 数据 = SBUF; RI=0;

中断函数写法 :void uart() interrupt 4 { if(RI){ RI=0; } if(TI){ TI=0; } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询