导图社区 单片机原理与应用
单片机原理和应用 “《单片机原理和应用》是2010年9月由电子工业出版社出版的图书,本书系统全面地介绍了80C51单片机的基本原理、硬件结构、指令系统,并从应用的角度介绍了汇编语言程序设计、单片机外部电路的扩展,以及与键盘、LED显示、LCD显示、打印机等多种硬件接口的设计方法,详细介绍了串行、并行接口的A/D、D/A转换器功能特点和典型应用,增加了单片机应用系统设计、Proteus仿真、实验和课程设计等内容。内容简介书中应用实例翔实、实验内容丰富,具有
编辑于2022-10-31 09:12:46单片机原理与应用
第一章 基础知识概述
预备知识
数制转换
补0
小数点前
小数点后
三个数制相互转化几个例题
二与十
二与十六
十与十六
第二章 51单片机的基本结构
引脚
储存器组织
结构形式
普林斯顿结构
ROM和RAM安排在同一地址空间,不能有相同地址
哈佛结构
ROM 和RAM 安排在不同地址空间,可以有相同地址
地址空间
程序储存器(ROM)
内部数据储存器(内部RAM)
片内数据储存空间
工作寄存器
四组,每组八个储存单元
R0~R7
位寻址区
可以直接对每一位操作,每一位都有位地址
用户RAM区
80个储存单元
🉑设置堆栈区和储存中间数据
特殊功能寄存器(SFR)
A(*)
A累加器
八位
DPTR
DPH
高八位
DPL
低八位
16位指针数,辅助只有八位的SFR
外部数据储存器(外部RAM )
时序单位
一个晶振频率
倒数为一个晶振周期
=一个时钟周期
=0.5个状态周期
1个机器周期=6个状态周期=12个时钟周期=1-4个指令周期
=1/12个机器周期
第三章 指令系统
基本概念
汇编语言格式
常用符号
Rn
Ri
#date
寻址方式
51指令系统
数据的传送与交换
MOV
累加器A
Rn
直接地址direct
间接地址@Ri
堆栈操作指令
PUSH:进栈
POP:退栈
“先进后出”,注意顺序
MOVX
访问外部数据储存器,片外RAM
访问16位要用DPTR中转
只有四条,A和DPTR和Ri三者之间
MOVC
访问程序储存器ROM
用A+DPTR寻址(一般把A先搞成# 00H)
XCH
字节交换
必须通过A来中转交换
XCHD
半字节交换
交换低四位
算数运算指令
加法指令ADD
可操作源四个
影响
7位有进位
CY置1
3 位有进位
AC 置1
6,7 位只有一位有进位
溢出标志OV 置1
A中1为奇数
P=1
位数从0-7共八个
带进位加法指令ADDC
同上
加1指令INC
可操作源五个
不影响任何标志位
即使有进位也不会影响进位标志CY
十进制调整指令 DA A
保留各位,有进位CY置1
减法指令SUBB
可操作源四个
影响
把ADD中的进位改为借位
默认-CY
减1指令DEC
可操作源四个
即使借位不影响CY
乘法指令MUL AB
低八位放A,高八位放B
影响
乘积>255
OV=1
CY总是清零
除法指令DIV AB
A÷B,商放在A,余数放B
逻辑运算与位移指令
简单逻辑操作指令
CLR A
累加器清零
CPL A
累加器求反
循环指令
左循环RL A
带进位左循环
RLC A
循环右移
RR A
循环循环右移
RRC A
逻辑与指令
ANL
A和四个
direct和两个
有0即0,全1为1
逻辑或指令
ORL
逻辑异或指令
XRL
相同为0,不同为1
取反
控制转移指令
跳转指令
AJMP
跳转11位范围
LJMP
跳转16 位范围
SJMP
256B
JMP
@A+DPTR
条件转移指令(判跳指令)
累加器判0转移
JZ
JNZ
比较转移
CJNE
=
顺序执行,CY置0
>
转移,CY置0
<
转移,CY置1
-1条件转移
DJNZ
子程序调用及返回
ACALL
短调用指令
可以在11位内跳转
LCALL
短调用指令
可以在16 位内跳转
RET
子程序返回
RETI
中断返回
空操作指令
NOP
位操作指令
位传送指令
MOV C,bit
MOV bit ,C
位与位传送,通过CY来中转
位置位指令
置1
SETB bit
SETB C
清零
CLR bit
CLR C
位逻辑指令
与
ANL
或
ORL
非
CPL
位条件转移指令
以CY内容为条件的双字节双周期转移指令
JC LOOP
若CY=1,跳转
JNC LOOP
若CY≠1,跳转
以位地址内容为条件的三字节双周期转移指令
JB bit,LOOP
若bit =1 ,跳转
JNB bit, LOOP
≠ 1
JBC bit,LOOP
若bit=1,跳转,bit置0
第四章 汇编语言程序设计
格式及伪指令
格式
伪指令
ORG
程序起始地址伪指令
END
结束汇编伪指令
DB
定义字节伪指令
DW
定义字伪指令
EQU
等值伪指令
BIT
位地址赋值伪指令
基本程序设计方法
顺序程序
子主题
分支程序
单分支
多分支
CJNE
散转
循环
查表
子程序
I/O接口及简单应用
I/O口的入出特性
基本组成
四个八位口
P0~4
低8→P0,高8→P2
P1口
结构
子主题
子主题
工作方式
输出方式
MOV P1,#date
读引脚方式
MOV A,P1
读锁存器方式
第六章 中断系统
概念
简单来说
类型
非屏蔽中断
不能用软件禁止
可屏蔽中断
中断开放
中断屏蔽
组成
中断源
电话铃声
中断响应
中断优先
其他突发情况的排序
保护断点
书签
中断服务
接电话
中断返回
接完电话继续看书
结构
五个中断源
外部中断0
INT0(P3.2脚)低电平有效
外部中断1
INT1 低电平有效
定时器T0中断
T0溢出时
定时器T1 中断
T1 溢出时
串行中断请求
中断控制系统
中断请求标志寄存器(TCON、SCON)
TCON
字节地址为88H
TF1
TR1
TF0
定时器0溢出标志位,溢出时置1
TR0
IE1
IT1
外部中断1 触发方式选择位
IE0
外部中断0中断申请标志位
IT0
外部中断0触发方式选择位
IT0=0,低电平有效,置位IE引起中断 IT0=1,当P3.2从1→0时,使IE0置1,申请中断
SCON
字节地址为98H
TI
串行发送中断标准
发送完一行置位
RI
串行接收中断标准
接收完一行置位
不会自动清零,只能靠软件清零
中断允许寄存器(IE)
作用
用于控制CPU对中断源的开放或者屏蔽
字节地址为A8H
EA
总中断允许控制位
置1全开放
SETB EA再加对应中断允许
子主题
子主题
ES
串行口中断允许
ET1
定时器1中断允许
EX1
外部中断1中断允许
ET0
EX0
中断优先级寄存器(IP)
作用
锁存各中断源优先级控制位
1为高优先级
字节地址为B8H
子主题
子主题
子主题
PS
串行口中断优先控制位
PT1
定时器1中断优先
PX1
外部中断1中断优先
PT0
PX0
自然顺序
外0>定0>外1>定1>串行口
只有高级中断可以打断低级中断
当出现高级打断低级是→中断嵌套(51可两级嵌套)
中断处理过程
中断响应条件
中断采集
三个条件
中断响应过程
优先级查询
保护断点,PC压入堆栈
硬件清除中断请求标志位
把中断入口送人PC
中断入口地址之间只隔了8个字节
可以写一个跳转指令,在其他地方写中断服务程序
执行完RETI后,返回原程序
RETI是中断服务程序结束标记
执行完,优先级顺序清零,堆栈中的字节地址返还给PC
RET,不会使优先级顺序清零,会导致后续同级中断不触发
中断的撤销
定时器中断
CPU响应中断后自动撤销
串行口中断
软件撤销清零
外部中断
跳变触发
CPU 响应中断后自动撤销
电平触发
标志位不会自动撤销,响应后应该立即撤销P3.2的低电平
硬件➕软件
外部中断响应时间
时间
从中断请求标志位到中断服务程序第一条指令
外部中断响应时间
最短
三个机器周期
低电平触发要维持一个机器周期
硬件长调用指令转入中断入口要两个机器周期
等待时间
在没有嵌套单级中断下,最长为五个机器周期
外部中断触发方式
电平触发
CPU会采集连个中断引脚的电平信息,若为低电平,就置位IE
跳变触发
当引脚产生负跳变,IE置1
程序设计
中断入口之间的空间小,用无条件转移指令转移
中断开关
第七章 定时器/计数器
结构及工作原理
实质
累计脉冲的下降沿,到达一定数后,溢出,中断
分类
定时器
脉冲来自于内部晶振
计数器
脉冲来自于外部
几个概念
计数器容量
量程用二进制位表示,八位就是2的8次方256
计数器溢出
到达量程后再来一个脉冲就会回到0
溢出标记
类似于进位标记,溢出标记会导致中断
计数初值
要记记多少个数,从最大值倒回去就OK
16位,65535,要计数100,设定初值为65436
控制
方式控制寄存器(TMOD)
字节地址为89H
GATE
门控位
置0是Tx启动与外部中断无关
C/T(-)
计数,定时功能选择位
置1为计数
置0为定时
M1
M0
工作方式定义位
四个工作方式
00 方式0
13位
01 方式1
16位
10 方式2
8位自动重装
11 方式3
T0分为两个独立的八位,T1停止使用
低四位为定时器0,高四位为定时器1
不能位寻址,只能用字节指令设定
控制寄存器(TCON)
字节地址为88H
TF1
T1定时器溢出中断标志,溢出时,硬件置位,中断响应,自动清零
TR1
运行控制位,置1时启动对应T0/T1,由软件设置
TF0
T0定时器溢出中断标志,溢出时,硬件置位,中断响应,自动清零
TR0
运行控制位,置1 时启动对应T0/T1 ,由软件设置
IE1
IT1
IE0
IT0
工作方式
方式0
13位
方式1
THx和TLx组成16位加法计数器
最大计数脉冲为65536
GATE置1时,计数器的开关与外部中断有关
非门控制
GATE=0,TRx=1,启动;反之
门控制
GATE=1,TRx=1,INTx=1,计数启动
方式2
16位
TLx的八位来计数
THx的八位来储存初始值
计数完一次,H就导入一次
方式3
计数器与脉冲频率
外部最高频率为振荡周期的1/24
晶振12MHz→250kHz
编程步骤
步骤
对TMOD赋值,确定工作方式
计算好初值,并写入THx,TLx
中断,ETx和EA
置位TRx启动
初值计算
计数器
存储单元
位(bit)
1
字节(Byte)
8
字(Word)
16
单片机原理与应用
第一章 基础知识概述
预备知识
数制转换
补0
小数点前
小数点后
三个数制相互转化几个例题
二与十
二与十六
十与十六
第二章 51单片机的基本结构
引脚
储存器组织
结构形式
普林斯顿结构
ROM和RAM安排在同一地址空间,不能有相同地址
哈佛结构
ROM 和RAM 安排在不同地址空间,可以有相同地址
地址空间
程序储存器(ROM)
内部数据储存器(内部RAM)
片内数据储存空间
工作寄存器
四组,每组八个储存单元
R0~R7
位寻址区
可以直接对每一位操作,每一位都有位地址
用户RAM区
80个储存单元
🉑设置堆栈区和储存中间数据
特殊功能寄存器(SFR)
A(*)
A累加器
八位
DPTR
DPH
高八位
DPL
低八位
16位指针数,辅助只有八位的SFR
外部数据储存器(外部RAM )
时序单位
一个晶振频率
倒数为一个晶振周期
=一个时钟周期
=0.5个状态周期
1个机器周期=6个状态周期=12个时钟周期=1-4个指令周期
=1/12个机器周期
第三章 指令系统
基本概念
汇编语言格式
常用符号
Rn
Ri
#date
寻址方式
51指令系统
数据的传送与交换
MOV
累加器A
Rn
直接地址direct
间接地址@Ri
堆栈操作指令
PUSH:进栈
POP:退栈
“先进后出”,注意顺序
MOVX
访问外部数据储存器,片外RAM
访问16位要用DPTR中转
只有四条,A和DPTR和Ri三者之间
MOVC
访问程序储存器ROM
用A+DPTR寻址(一般把A先搞成# 00H)
XCH
字节交换
必须通过A来中转交换
XCHD
半字节交换
交换低四位
算数运算指令
加法指令ADD
可操作源四个
影响
7位有进位
CY置1
3 位有进位
AC 置1
6,7 位只有一位有进位
溢出标志OV 置1
A中1为奇数
P=1
位数从0-7共八个
带进位加法指令ADDC
同上
加1指令INC
可操作源五个
不影响任何标志位
即使有进位也不会影响进位标志CY
十进制调整指令 DA A
保留各位,有进位CY置1
减法指令SUBB
可操作源四个
影响
把ADD中的进位改为借位
默认-CY
减1指令DEC
可操作源四个
即使借位不影响CY
乘法指令MUL AB
低八位放A,高八位放B
影响
乘积>255
OV=1
CY总是清零
除法指令DIV AB
A÷B,商放在A,余数放B
逻辑运算与位移指令
简单逻辑操作指令
CLR A
累加器清零
CPL A
累加器求反
循环指令
左循环RL A
带进位左循环
RLC A
循环右移
RR A
循环循环右移
RRC A
逻辑与指令
ANL
A和四个
direct和两个
有0即0,全1为1
逻辑或指令
ORL
逻辑异或指令
XRL
相同为0,不同为1
取反
控制转移指令
跳转指令
AJMP
跳转11位范围
LJMP
跳转16 位范围
SJMP
256B
JMP
@A+DPTR
条件转移指令(判跳指令)
累加器判0转移
JZ
JNZ
比较转移
CJNE
=
顺序执行,CY置0
>
转移,CY置0
<
转移,CY置1
-1条件转移
DJNZ
子程序调用及返回
ACALL
短调用指令
可以在11位内跳转
LCALL
短调用指令
可以在16 位内跳转
RET
子程序返回
RETI
中断返回
空操作指令
NOP
位操作指令
位传送指令
MOV C,bit
MOV bit ,C
位与位传送,通过CY来中转
位置位指令
置1
SETB bit
SETB C
清零
CLR bit
CLR C
位逻辑指令
与
ANL
或
ORL
非
CPL
位条件转移指令
以CY内容为条件的双字节双周期转移指令
JC LOOP
若CY=1,跳转
JNC LOOP
若CY≠1,跳转
以位地址内容为条件的三字节双周期转移指令
JB bit,LOOP
若bit =1 ,跳转
JNB bit, LOOP
≠ 1
JBC bit,LOOP
若bit=1,跳转,bit置0
第四章 汇编语言程序设计
格式及伪指令
格式
伪指令
ORG
程序起始地址伪指令
END
结束汇编伪指令
DB
定义字节伪指令
DW
定义字伪指令
EQU
等值伪指令
BIT
位地址赋值伪指令
基本程序设计方法
顺序程序
子主题
分支程序
单分支
多分支
CJNE
散转
循环
查表
子程序
I/O接口及简单应用
I/O口的入出特性
基本组成
四个八位口
P0~4
低8→P0,高8→P2
P1口
结构
子主题
子主题
工作方式
输出方式
MOV P1,#date
读引脚方式
MOV A,P1
读锁存器方式
第六章 中断系统
概念
简单来说
类型
非屏蔽中断
不能用软件禁止
可屏蔽中断
中断开放
中断屏蔽
组成
中断源
电话铃声
中断响应
中断优先
其他突发情况的排序
保护断点
书签
中断服务
接电话
中断返回
接完电话继续看书
结构
五个中断源
外部中断0
INT0(P3.2脚)低电平有效
外部中断1
INT1 低电平有效
定时器T0中断
T0溢出时
定时器T1 中断
T1 溢出时
串行中断请求
中断控制系统
中断请求标志寄存器(TCON、SCON)
TCON
字节地址为88H
TF1
TR1
TF0
定时器0溢出标志位,溢出时置1
TR0
IE1
IT1
外部中断1 触发方式选择位
IE0
外部中断0中断申请标志位
IT0
外部中断0触发方式选择位
IT0=0,低电平有效,置位IE引起中断 IT0=1,当P3.2从1→0时,使IE0置1,申请中断
SCON
字节地址为98H
TI
串行发送中断标准
发送完一行置位
RI
串行接收中断标准
接收完一行置位
不会自动清零,只能靠软件清零
中断允许寄存器(IE)
作用
用于控制CPU对中断源的开放或者屏蔽
字节地址为A8H
EA
总中断允许控制位
置1全开放
SETB EA再加对应中断允许
子主题
子主题
ES
串行口中断允许
ET1
定时器1中断允许
EX1
外部中断1中断允许
ET0
EX0
中断优先级寄存器(IP)
作用
锁存各中断源优先级控制位
1为高优先级
字节地址为B8H
子主题
子主题
子主题
PS
串行口中断优先控制位
PT1
定时器1中断优先
PX1
外部中断1中断优先
PT0
PX0
自然顺序
外0>定0>外1>定1>串行口
只有高级中断可以打断低级中断
当出现高级打断低级是→中断嵌套(51可两级嵌套)
中断处理过程
中断响应条件
中断采集
三个条件
中断响应过程
优先级查询
保护断点,PC压入堆栈
硬件清除中断请求标志位
把中断入口送人PC
中断入口地址之间只隔了8个字节
可以写一个跳转指令,在其他地方写中断服务程序
执行完RETI后,返回原程序
RETI是中断服务程序结束标记
执行完,优先级顺序清零,堆栈中的字节地址返还给PC
RET,不会使优先级顺序清零,会导致后续同级中断不触发
中断的撤销
定时器中断
CPU响应中断后自动撤销
串行口中断
软件撤销清零
外部中断
跳变触发
CPU 响应中断后自动撤销
电平触发
标志位不会自动撤销,响应后应该立即撤销P3.2的低电平
硬件➕软件
外部中断响应时间
时间
从中断请求标志位到中断服务程序第一条指令
外部中断响应时间
最短
三个机器周期
低电平触发要维持一个机器周期
硬件长调用指令转入中断入口要两个机器周期
等待时间
在没有嵌套单级中断下,最长为五个机器周期
外部中断触发方式
电平触发
CPU会采集连个中断引脚的电平信息,若为低电平,就置位IE
跳变触发
当引脚产生负跳变,IE置1
程序设计
中断入口之间的空间小,用无条件转移指令转移
中断开关
第七章 定时器/计数器
结构及工作原理
实质
累计脉冲的下降沿,到达一定数后,溢出,中断
分类
定时器
脉冲来自于内部晶振
计数器
脉冲来自于外部
几个概念
计数器容量
量程用二进制位表示,八位就是2的8次方256
计数器溢出
到达量程后再来一个脉冲就会回到0
溢出标记
类似于进位标记,溢出标记会导致中断
计数初值
要记记多少个数,从最大值倒回去就OK
16位,65535,要计数100,设定初值为65436
控制
方式控制寄存器(TMOD)
字节地址为89H
GATE
门控位
置0是Tx启动与外部中断无关
C/T(-)
计数,定时功能选择位
置1为计数
置0为定时
M1
M0
工作方式定义位
四个工作方式
00 方式0
13位
01 方式1
16位
10 方式2
8位自动重装
11 方式3
T0分为两个独立的八位,T1停止使用
低四位为定时器0,高四位为定时器1
不能位寻址,只能用字节指令设定
控制寄存器(TCON)
字节地址为88H
TF1
T1定时器溢出中断标志,溢出时,硬件置位,中断响应,自动清零
TR1
运行控制位,置1时启动对应T0/T1,由软件设置
TF0
T0定时器溢出中断标志,溢出时,硬件置位,中断响应,自动清零
TR0
运行控制位,置1 时启动对应T0/T1 ,由软件设置
IE1
IT1
IE0
IT0
工作方式
方式0
13位
方式1
THx和TLx组成16位加法计数器
最大计数脉冲为65536
GATE置1时,计数器的开关与外部中断有关
非门控制
GATE=0,TRx=1,启动;反之
门控制
GATE=1,TRx=1,INTx=1,计数启动
方式2
16位
TLx的八位来计数
THx的八位来储存初始值
计数完一次,H就导入一次
方式3
计数器与脉冲频率
外部最高频率为振荡周期的1/24
晶振12MHz→250kHz
编程步骤
步骤
对TMOD赋值,确定工作方式
计算好初值,并写入THx,TLx
中断,ETx和EA
置位TRx启动
初值计算
计数器
存储单元
位(bit)
1
字节(Byte)
8
字(Word)
16