1.单片机组成概述
单片机是在一块半导体硅片上集成了控制器,运算器,存储器和各种输入/输出的芯片
单片机最小系统由哪些部分组成?
- 单片机本体mcu:通过控制和管理设备来提高性能
- 时钟电路:提供稳定的时间基准信号
- 复位电路:为单片机提供复位信号,它确保单片机在启动时能够从已知状态开始工作,通常通过一个电容和电阻组合成的简单电路实现。
- 电源:提供稳定的电源给单片机和外部电路。单片机通常工作在特定的电压范围内(如5V、3.3V),所以需要一个稳压电源。
2.单片机体系结构
RAM与FLASH作用于区别?
RAM FLASH
性质 易失性 非易失
用途 主存/内存 长期
速度 快 慢
PSW?
8051单片机的PSW寄存器是一个8位寄存器,具体结构如下:
位 | 名称 | 描述 |
---|---|---|
7 | CY(Carry) | 进位标志,反映加减运算结果的进位或借位情况 |
6 | AC(Auxiliary Carry) | 辅助进位标志,用于BCD(十进制)加法中的进位检测 |
5 | F0 | 用户定义标志位,一般未使用 |
4 | RS1 | 寄存器选择位,控制寄存器组的切换(与RS0共同使用) |
3 | RS0 | 寄存器选择位,控制寄存器组的切换(与RS1共同使用) |
2 | OV(Overflow) | 溢出标志,用于检测有符号数运算的溢出情况 |
1 | UD(User Defined) | 用户自定义的标志位 |
0 | P(Parity) | 校验标志,反映PSW寄存器中1的位数是否为偶数(偶校验) |
主要标志位功能说明:
CY(Carry Flag):
- 表示算术运算中的进位或借位。例如,在加法或减法运算中,如果有进位,则CY为1;如果没有进位,则CY为0。
AC(Auxiliary Carry Flag):
- 用于BCD(十进制)加法运算中,用来表示低四位加法时的进位。例如,当低四位加法发生进位时,AC为1。
OV(Overflow Flag):
- 用于有符号数运算时的溢出检测。如果执行加法或减法时,结果超出了有符号数的表示范围(例如,8位有符号数的范围是-128到127),则OV标志位为1。
RS1、RS0(Register Bank Select):
- 用于选择不同的寄存器组。8051提供了4组寄存器(R0-R7),通过RS1和RS0来选择当前使用的寄存器组。例如,RS1和RS0都为0时,使用第一个寄存器组(R0-R7);RS1为1,RS0为0时,使用第二个寄存器组(R0-R7),以此类推。
P(Parity Flag):
- 表示PSW寄存器中1的个数的奇偶性。若PSW寄存器中1的个数为偶数,则P为1;若为奇数,则P为0。通常用于简单的错误检测。
F0、UD(用户定义标志位):
- 这两个标志位是供用户自行定义使用的,通常不用于硬件操作,但可以在软件中作为程序状态的标志位。
其主要功能是什么?
PSW的主要功能是作为一个状态寄存器,它记录和反映处理器在执行程序时的各类状态信息,控制算术运算、程序流控制、中断管理以及寄存器组选择等。
RS0,RS1对应与四个工作寄存器区的对应关系表
RS1 | RS0 | 对应的工作寄存器组 |
---|---|---|
0 | 0 | 0区(用R0~R7表示,对应片内RAM地址00H~07H) |
0 | 1 | 1区(用R0~R7表示,对应片内RAM地址08H~0FH) |
1 | 0 | 2区(用R0~R7表示,对应片内RAM地址10H~17H) |
1 | 1 | 3区(用R0~R7表示,对应片内RAM地址180H~1FH) |
6种中断源的中断服务程序入口地址
中断源 | 入口地址 |
---|---|
INT0(外部中断0) | 0003H |
T0(定时器/计数器0) | 000BH |
INT1(外部中断1) | 0013H |
T1(定时器/计数器1) | 001BH |
串行口 | 0023H |
T2(定时器/计数器2) | 002BH |
堆栈指针的结构特点是什么?它在单片机运行过程中有哪些重要作用?请举例说明
占据一段内部数据单元,按照先进后出的工作方式,使用一个专用寄存器作为堆栈指针,指明当前堆栈的操作位置,堆栈指针总是指向栈顶。
作为堆栈,以便子程序调用,中断服务处理等场合保存CPU的运行现场。
字节寻址与位寻址的主要区别
一、作用不同:
字节寻址:直接将数据写入当前地址或将当前地址的内容读出,操作对象为8位字节数据。
位寻址:执行位操作命令,写入或读出的是单个位(bit)变量。
二、地址范围不同:
在字节寻址中,例如指令MOV A, 00H
,是将RAM中地址为00H的8位内容传递给累加器A。而在位寻址中,指令MOV C, 00H
,是将特定位寻址区(例如20H-2FH)中地址为00H的1位内容传递给寄存器C。这里提到的两个00H指的是不同的地址。
三、寻址方式指令不同:
地址本身是8位二进制数,但区分在于指令的前缀。若指令为字节寻址,则该地址指的是字节地址;相应地,若指令为位寻址,则该地址指的是位地址
P0口与其他并行I/O口的主要区别在哪里
1、P0口:真正的双向口,输出锁存,输入缓冲,输入前要先置1(KEIL包含的头文件已经有动作了,如果用汇编,要人工置1),输出为漏极开路,输出一般都要上拉电阻。输入为高阻态,能驱动8个TTL负载。当有片外存储器时,作数据线使用。
2、P1口:最简单的口,输入也要先置1,无高阻态,只能是输出或者输入。能驱动4个TTL负载。
3、P2口:I/O(输入/输出)与P1口一样,当有片外存储器时,作地址线使用,寻址64K片外数据存储器。能驱动4个TTL负载。
4、P3口:I/O(输入/输出)与P1口一样,但无论输入输出都要先置1。具有很多复用功能
CPU时序(计算)
$$ f_{osc}:外部晶振 $$
$$ 时钟周期:T_{osc}=1/f_{osc} $$
$$ 状态周期:T_{sy}=2*T_{osc} $$
$$ 机器周期:T_{cy}=6*T_{osc} $$
3.单片机的中断系统
中断概念
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
80C51单片机有几个中断源?分别是什么?
五个中断源
- Int0,外部中断0请求,标志为IE0
- Int1,外部中断1请求,标志为IE1
- T0,定时器/计数器溢出中断请求,标志为TF0
- T1,定时器/计数器溢出中断请求,标志为TF1
- 串行口,中断请求标志为TI或RI
中断申请
IT0=0 电平触发方式,出现低电平时申请中断
IT0=1 跳变触发方式,
出现从高到低的转变时申请
IE0=1,表示外部中断0正在申请中断
中断的控制
什么是中断请求标志?串口中断触发的中断请求标志需要通过什么方式置位?为什么?
中断请求标志(Interrupt Request Flag,IRQ Flag)是指在中断系统中,硬件或软件发生特定事件时,触发中断处理程序的标志。它指示某个特定的中断源发生了事件,需要处理器响应并执行相应的中断服务程序(Interrupt Service Routine,ISR)。
串口中断触发的中断请求标志
在串口通信中,串口接口通常会在数据接收、数据发送完成、错误发生等事件时生成中断请求信号。当串口接收到数据或发生其他特定事件时,会设置相应的中断请求标志,提示处理器执行中断服务。
中断请求标志如何置位
串口中断请求标志的置位方式通常有以下几种:
- 硬件自动置位: 在串口硬件模块中,当发生某种特定事件(如接收到数据、发送完成等)时,硬件会自动生成中断信号并设置中断请求标志。通常这些标志存储在特定的状态寄存器中。
- 通过中断控制寄存器设置: 许多微控制器和处理器会有专门的寄存器(如中断控制寄存器)用于控制中断的使能和禁用。当串口设备发生某些事件时,硬件会自动设置中断请求标志,而软件(通常是中断控制代码)会通过检查这些标志来决定是否需要触发中断。
中断响应条件
中断响应的条件有六个:
1、CPU开中断,即中断允许控制寄存器IE中的中断总允许位EA=1;
2、中断源的中断允许位=1,即该中断源没有被屏蔽;
3、中断源发出中断请求,即该中断源对应的中断请求标志为1;
4、CPU未处理同级或高优先级的中断;
5、当前正在处理的指令需要执行完毕;
6、正在执行的指令不是RETI或没有访问IE、IP寄存器的指令。
4.单片机定时器/计数器及其应用
书本p124
开始
5.单片机串行口及其应用
单工、半双工、全双工通信有什么区别?
单工:只能一个方向传输。
半双工:可以双向传输,但不能同时进行。
全双工:可以双向同时传输。
波特率计算公式
波特率是串口通信中每秒钟传输的比特数。为了产生特定的波特率,定时器必须以合适的频率生成中断,并调整时钟脉冲的频率。
在使用 定时器T1工作方式2 作为波特率发生器时,定时器的工作频率是由晶振频率和定时器的分频值(即定时器计数器的初值)共 同决定的。具体计算公式如下:
$$ \text{波特率} = \frac{晶振频率}{32 \times (256 - \text{定时器初值})} $$
其中,32是定时器定时器方式2中的分频系数,256是定时器计数器的最大值(8位计数器)。
6.AD转换器
AD转换的一般流程包括哪几个方面?
- 信号采样:从连续模拟信号中选取特定时间点的信号值。
- 保持:保持采样到的信号值,防止信号在转换过程中变化。
- 量化:将模拟信号的幅度值离散化为有限的离散级别。
- 编码:将量化后的离散值转换为二进制数字。
- 转换输出:输出最终的数字信号,供后续处理或存储。
A/D转换器的选择可以从哪些方面选择?
选择 A/D 转换器时需要综合考虑分辨率、采样率、功耗、输入范围、精度等多个因素。根据实际应用的不同需求,选择适合的 A/D 转换器能够有效提升系统的性能和稳定性。
一个8位的A/D转换器的分辨率是多少,如果其基准电压为5V,采样一个3.3的电压,其输出结果是多少?
问题分析:
- A/D转换器的分辨率:指的是A/D转换器可以表示的离散电压级数。对于一个 8位 的 A/D 转换器,分辨率就是 28=2562^8 = 25628=256 个不同的离散值。
- 基准电压(Reference Voltage):A/D转换器的基准电压是指它能够转换的模拟输入信号的最大电压。例如,如果基准电压为 5V,则输入信号的电压范围是从 0V 到 5V。
- 输入电压:题目中给定的输入电压是 3.3V。
- 分辨率的计算:
对于一个 8 位的 A/D 转换器,转换器将输入电压范围(0V 到 5V)分成 256 个等间隔的电压级别。因此,转换器每个数字值对应的电压间隔为:
$$ 每个分辨率对应的电压 = \frac{\text{基准电压}}{\text{分辨率数目}} = \frac{5V}{256} \approx 0.01953V $$
每个数字输出值的增加对应输入电压的增加量为 0.01953V。
- 计算 A/D 输出值:
A/D 转换器的输出值是输入电压在数字范围内的表示。对于输入电压 3.3V,A/D 转换器输出的数字值可以通过以下公式计算:
$$ \text{输出数字值} = \frac{\text{输入电压}}{\text{每个分辨率对应的电压}} = \frac{3.3V}{0.01953V} \approx 169 $$
所以,A/D 转换器的输出结果是 169,这对应于输入电压 3.3V。
总结:
- 分辨率:8位 A/D 转换器的分辨率是 256 个离散值。
- 输入电压 3.3V 时的输出结果:转换器的输出结果是 169。
评论0
暂时没有评论