基础知识

MCS-51单片机(8位数据线16位地址线)包括:

  1. CPU,控制器+运算器
  2. RAM数据存储单元
  3. ROM程序存储单元
  4. SFR
  5. 8位并行IO口
  6. 串行IO口 连接P3
  7. 16位定时器/计数器 连接P3
  8. 中断系统 连接P3

P0口没有上拉电阻,P2~P3都有,因此P0口作IO口时需要外部上拉,才能保证电平稳定

最小系统

  1. CPU
    运算器: ALU 、 A寄存器 B寄存器 标志寄存器PSW
    控制器:指令寄存器和指令译码器、PC指向下条指令地址(16位,寻址64KB)、SP堆栈指针(07H为复位地址)、DPTR数据指针寄存器

  2. 电源电路

  3. 晶振电路

  4. 复位电路

数码管遇到的问题

数码管

中断

中断请求、中断相应、中断服务、(中断返回)

中断源5个

外部中断0(0003H、INT0非)、定时器0(000BH)、外部中断1(0013H、INT1非)、定时器1(001B)、串口(0023H)

TCON寄存器

D7D5(TF,定时器1和0的溢出位,响应后自动清0)
D6D4(TR , T/C的运行1和停止位0,可软件置数)
D3D1(IE,外部请求标志)
D2D0(IT,外部中断是跳沿or电平)

SCON串行口控制寄存器

R1接受完数据自动置1,需要手动清0
TI发送完数据后自动置1,需要手动清0

IE中断允许寄存器

D0~D4对应5个中断源
D7总开关

IP中断优先级寄存器

默认从外部0最高到串行口最低
手动可以设置IP的D0到D4对应5个中断源.

TMOD T/C工作方式寄存器

D0D3控制T0 , D4D7控制T1
赋值GATE、C/T、M1、M0这4位

SCON 串行口寄存器

SM0、SM1设置方式: 0同步、1可变波特8位异步、2九位异步、3可变波特9位异步
SM2 : 方式0时置0 ,方式1且SM2=1时收到有效停止位时触发RI置1,方式2和3且SM2=1,收到第九位RB8=1时触发RI置1且数据送入缓冲,SM2=0,八位数据到了直接触发且送入缓冲.
REN: 串行口允许接收
TB8、RB8,发送和接收的第九位数据
TI、RI : 一帧数据发送、接收结束标志,需要软件清0

串行口通信的帧格式

0: 8位数据
1: 起始位、8位数据、停止位
2、3: 起始位、8位数据、校验位、停止位

PCON特殊功能寄存器

方式一: 2^SMOD/32*定时器T1溢出率=波特率

中断设置步骤

  1. 初始化(设置IE、IP、如果是外部中断需要设置TCON的IT,如果是T/C需要设置TCON的TR,TMOD和初值.
  2. 中断服务子程序

在设置中断时,需要查看响应芯片中断系统结构类似以下图片:

编程方式主要有两种

  • 查询:通过查询寄存器的中断标志位,可以利用标志位的周期变化来编程
  • 中断函数: 通过指定interrupt using来将中断绑定一个函数,在函数内部进行编程

T/C01中断(两种工作模式)

定时器对内部脉冲的12分频计数,计数器对T0T1两个引脚的外部脉冲计数(至少两个机器周期)
四种工作方式

  • 0和1 , 寄存器一直累加,加满后产生进位.
  • 2 , 寄存器一直累加,加满后产生进位,且自动清零TF进位,自动重设初值.
  • 3 , 略(还未学)
1
2
3
4
5
6
7
8
//编写中断函数,interrupt指定中断入口地址

//主函数
//设置TMOD中对应入口地址的M1M2
//设置计数初值
//设置IE中对应入口的允许中断位为1
//设置TCON对应启动位为1,启动中断
//设置IE中的EA为1(中断允许总开关)