嵌入式原理
嵌入式原理
xujiaojiao嵌入式原理
振荡周期、状态周期、机器周期、指令周期的关系
什么是嵌入式
关键字: 受限
受限的设备 资源受限 成本受限 性能受限
嵌入式系统有什么
CPU
运算器,控制器
内存
寄存器
1.累加器 A
也叫 ACC。用作累加(加减乘除都可以变化为加法)
2.寄存器 B
作为执行乘法和除法操作而设置的
3.特殊寄存器(如 P1.0,p0.1 等)
4.PSW(*)
- CY(PSW.7):进位标志位
- AC(PSW.6):辅助进位标志位,当低四位向高四位进位或借位时,AC 置为 1
- F0 (PSW.5): 标志位
- RS1、RS0:用于选择工作寄存区
- OV(PSW.2) : 溢出标志位,溢出则置 0
- PSW.1 位:该位是保留位
- P(PSW.0):奇偶标志位:奇偶标志位对串行口通讯中的数据传输有重要的意义,常用奇偶检验的方法来检验数据传输的可靠性
程序状态寄存器 PSW 的格式
注意:(ODO).5 =>D5 考试中遇到要能分辨
D7<—————————————————–D0
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
CY | AC | F0 | RS1 | RS0 | OV | -—— | P |
工作寄存区选择控制位 1 和位 0 的定义
RS1 | RS0 | 工作寄存区 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 2 |
1 | 1 | 3 |
5.程序存储器
用于存储下一条指令地址和中断地址
IO
P0口是三态双向口,称地址/数据总线口。
P0口用以输出外部存储器的低 8 位地址。
由于数据和地址是分时输出,故应在外部加锁存器将此地址数据锁存,地址锁存信号用ALE。
P0用于读/写外部存储器的数据(Data)。
当不需要读写外部存储器时,P0 口可用作普通的 I/O 输出端口,此时,需要上拉电阻
P0口可驱动 8 个 LSTTL 负载
P1 口有内部上拉单元,每根 I/O 线路可独立的用作输入或输出。用作输入时,端口的位锁存器必须为 1,以关闭输出驱动 FET。这时 P1 口由内部提拉元件拉为高电平,但可以由外部电源拉为低电平。
P2口在系统扩展时作高 8 位地址线。
如果没有系统扩展,例如使用8051/8751/8951 单片机不扩展外部存储器时,P2 口也可以作为用户 I/O 口线使用。
P2口是准双向口。
P2口可驱动 4 个标准 LSTTL 负载。
P3口可驱动 4 个标准 LSTTL 负载。P3 口在以下的情况下作为第二功能使用:串行通信使用,外部中断使用,定时器/计数器使用,扩展外部 RAM 时使用控制信号。除上述情况外,则可以当作 I/O 引脚用
单片机的引脚
8051 只有四个口
P0,P1,P2,P3
P0 是三态口!!!
P0、P1、P2、P3 都是双向口:既可以配置为输入也可以配置为输出
8051 引脚对应功能
引 脚 | 第二功能 |
---|---|
P1.0 | T2(定时器/计数器 2 外部输入) |
P1.1 | T2EX(定时器/计数器 2 俘获/重装触发器) |
P1.5 | MOSI(ISP Flash 串行编程时指令输入) |
P1.6 | MISO(ISP Flash 串行编程时数据输出) |
P1.7 | SCK(ISP Flash 串行编程时外部时钟信号) |
P3.0 | RXD(串行输入端口) |
P3.1 | TXD(串行输出端口) |
P3.2 | (外部中断 0) |
P3.3 | (外部中断 1) |
P3.4 | T0(定时器/计数器 0 的外部输入) |
P3.5 | T1(定时器/计数器 1 的外部输入) |
P3.6 | (外部数据存储器写选通) |
P3.7 | (外部数据存储器读选通) |
P1.0 是一个地址为 90h
P1.1 为 91h…以此类推
高电位/低电位:大概 4.5v 以上为高电位,4.5v 一下为低电位、中间为悬空态,如果想要解决悬空态要接上拉电阻和下拉电阻
给一个简答题或程序题解读程序在干什么:首先说明是怎么连接的线(不要漏这句话),然后说明这个按钮或者灯实现了什么功能
VCC: PIN 40—-电源正端, 为+5V。
VSS: PIN 20 —-电源地端。
RESET: PIN9—-复位引脚。当晶体振荡器运行时,只要在这个引脚出现两个机器周期的高电平, 就可以使单片机复位 。PIN9 引脚内部有下拉电阻,用户只要在 VCC 和该引脚之间接电容,就可实现上电复位。
指令系统
伪指令
.HEX 文件不支持伪指令
1.ORG:总是会出现在每段源程序或者数据块的开始,表示程序的起始地址
2.DB:定义字节
3.DW:定义字
实例:
将 54H,10H,30H,72H,‘TYUT’,从 200H 开始将字节存入内存连续单元中
1 | #指定起始地址因为要从200H开始存储所以起始地址设置为200H |
存储器地址 | 内容 |
---|---|
200H | 54H |
201H | 10H |
202H | 30H |
203H | 72H |
204H | 54H(‘T’的 ASCII 码)’A’56 ‘a’97 |
205H | 59H(‘Y’的 ASCII 码) |
206H | 55H(‘U’的 ASCII 码) |
207H | 54H(‘T’的 ASCII 码) |
如果改为字存储
1 | ORG 200H |
4.EQU:相当于’=’
5.END:汇编结束
注意:
1 | MOV ,@A #‘@’符号为取地址符 会有两道题让判断其中的值 |
寻址方式
1.寄存器寻址
2.直接寻址
3.立即寻址
4.寄存器间接寻址
4.基址加变址寄存器间接寻址
5.位寻址方式
6.相对寻址方式
运算指令
1.一般加法指令:ADD
2.带进位的加法指令:ADDC
以上两个指令均会影响 AC,CY,OV,P
3.增量指令:INC 增量指令不会影响标志位
5.减法指令:SUBB 会影响标志位 AC,CY,OV,P
6.乘法指令:MUL 会影响 OV 标志,当乘积大于 0FFH 时,OV 置 1,否则清 0;乘法指令总是使 CY 清 0
7.除法指令:DIV
程序设计
目前最常用的编码是 ASCII 码
十进制转化为 BCD 码
162=>BCD 将每一位十进制用四位 BCD 码表示即:0001 0110 0010
延时程序
如果使用 12MHz 晶振,一个机器周期就是 1 微秒
考试会考,变化数值要会计算
1 | DELAY: MOV R5, #100 |
中断
中断源 5 个
分 类 | 中断源名称 | 中断申请标志 | 触发方式 | 中断入口地址 |
---|---|---|---|---|
外部中断 | 外部中断 0 | IE0(TCON.1) | INT0(P3.2)引脚上的低电平/下降沿引起的中断 | 0003H |
内部中断 | 定时器/计数器 T0 中断 | IF0(TCON.5) | T0 定时器/计数器溢出后引起的中断 | 000BH |
外部中断 | 外部中断 1 | IE1(TCON.3) | INT1(P3.3)引脚上的低电平/下降沿引起的中断 | 0013H |
内部中断 | 定时器/计数器 T1 中断 | IF1(TCON.7) | T1 定时器/计数器溢出后引起的中断 | 001BH |
内部中断 | 串口中断 | RI (SCON.0) TI ( SCON.1) | 串行口接收完成或发送完一帧数据后引起的中断 | 0023H |
外/内 部中断 | 定时器 2 中断(仅 8052) | TF2(T2CON.7) EXF2(T2CON.6) | T2 定时器/计数器计数满后溢出,置标志位 TF2;或当外部输入 T2EX 发生从 1 到 0 的下降时置标志位 EXF2,引起中断 | 002BH |
外部中断源 由单片机的外围引脚 P3.2、P3.3 输入低电平或下降沿信号
中断源发出请求
中断响应(
•中断源有中断请求;
• 此中断源的中断允许位为 1;
• CPU 开中断(即 EA=1)。)IE 为寄存器包含 EA
中断服务(interrupt)
中断返回
与中断相关特殊功能寄存器 SFR
中断允许控制寄存器 IE
有定义的位地址:例:EA=0(禁止中断)反之开中断
EA:中断允许的总控制位
EX0:外部中断 0 允许控制位
EX1:外部中断 1 允许控制位
ET0:定时器 0 允许控制位
ET1:定时器 1 允许控制位
ES:串口中断允许位
注意:先开总中断 EA 再开分中断 ET0 或者 ET1
SETB EA EA = 1
SETB ET0 ET0 = 1
上述两种写法都是对的
定时器控制寄存器 TCON
与中断有关的控制位:
IE0:外部中断 0 请求标志位
IE1:外部中断 1 请求标志位
IT0:外部中断 0 请求方式控制位,为 0 时低电平有效
IT1:外部中断 1 请求方式控制位
TF0:计数器 0 溢出标志位,当发生溢出时置为 1,转到中断服务
TF1:计数器 1 溢出标志位
注意:中断子程序的两种写法
interrupt{}
if(IF0 == 1){}
中断优先级控制寄存器 IP
当 CPU 正在执行一个低优先级中断处理程序时,它能被高优先级中断源所中断,但不能被同级中断源所中断。
注意:只有 8052 有 T2 中断源,8051 没有,所以选择题看到 T2 直接排除
串行口控制寄存器 SCON
TI—串行口发送中断请求标志位。
RI—串行口接收中断请求标志位
定时器/计数器
TMOD
工作模式寄存器
四种工作模式
M1 | M0 | 工作模式 |
---|---|---|
0 | 0 | 模式 0:TH 高 8 位加上 TL 中的低 5 位构成 13 位定时器 |
0 | 1 | 模式 1:16 位定时器 |
1 | 0 | 模式 2:可自动重装初值的 8 位定时器 |
1 | 1 | 模式 3:对于 T0,被分为两个 8 为定时器,对于 T1 则停止计数 |
串口
单工,半双工,全双工的区别
单工:数据只能单向传输,发送方只能发送消息,接收方只能接收消息(广播电台)
半双工:数据可以在两个方向上进行传输,但不能同时进行,某一时刻只能单向传输(对讲机)
全双工:数据可以在两个方向上同事进行传输(电话)
系统扩展与接口技术
SPI:常被用作显示屏上
I2C:用于读取数据,适用于传感器
I2S:用于处理声音