- 参考内容:《单片机原理与应用》(第三版) 张毅刚 ; hfut单片机原理课程ppt
- 博文只做笔记备份,不时更新
- 一些图片来自文中ppt截图,侵删道歉
- 每章的笔记分为文本版和思维导图版。思维导图由文本版的笔记导出。有些章节有整理练习的内容。你可以浏览目录,了解哪些章节有练习
:
- 题目比较基础,基础知识点调查比较多
- 选择、填空、判断、改错题基本都是对基础知识点的调查,对存储器的调查基本都在这部分
- 编程题没有检查串行口,编程题也很基础。一个是将数据从片内移动到片外;一个是输出波形,是对中断和定时器的调查
- 然后我想说:相信我的第一直觉,第一直觉选择了正确的答案,卷时,我把它放在那里分析了很长时间,重选了错误的答案。我真的很感激
文章目录
- MCS-51硬件结构
-
- 笔记思维导图
- 笔记文字部分
- MCS-51指令系统
-
- 指令表
- 指示系统练习
- MCS-51的中断系统
-
- 笔记思维导图
- 笔记文字部分
- MCS-51定时器/计数器
-
- 笔记思维导图
- 笔记文字部分
- 定时器/计数器练习
- MCS-51的串行口
-
- 笔记思维导图
- 笔记文字部分
- 补充
- 更新文档
MCS-51硬件结构
笔记思维导图
笔记文字部分
-
MCS-51硬件结构
- CPU
- 运算器
- ALU
- 操作数
- 通过临存器2输入累加器A
- 输入临时存器1
- 运算结果的状态发送PSW
- 操作数
- ACC
- A进位标志是 C y C_y Cy
- B
- 常用于乘除操作
- 乘法: A × B → B A A\times B \rightarrow BA A×B→BA
- 除法: A ÷ B → A ? ? ? ? ? ? B A\div B\rightarrow A······ B A÷B→A⋅⋅⋅⋅⋅⋅B
- 作为通用寄存器或RAM的一个单元使用
- 常用于乘除操作
- 暂存器
- PSW——8位专用寄存器,
- C y ( P S W . 7 ) C_y(PSW.7) Cy(PSW.7):最高位进位/借位
- A c ( P S W . 6 ) A_c(PSW.6) Ac(PSW.6):半进位,低四位向高四位的进位
- F 0 ( P S W . 5 ) F_0(PSW.5) F0(PSW.5):用户标志位
- R S 1 R S 0 ( P S W . 4 P S W . 3 ) RS1\ RS0(PSW.4\ PSW.3) RS1 RS0(PSW.4 PSW.3):工作寄存器组指针,用以选择CPU当前工作的寄存器组
- O V ( P S W . 2 ) OV(PSW.2) OV(PSW.2)
- F 1 ( P S W . 1 ) F1(PSW.1) F1(PSW.1):用户标志位
- P ( P S W . 0 ) P(PSW.0) P(PSW.0):奇偶标志位
- ALU
- 控制器
- PC
- 可对的程序存储器直接寻址(PC16位)
- 对用户透明
- 程序地址寄存器
- IR
- 指令译码器ID
- 时序控制电路
- PC
- 运算器
- 存储器
-
数据存储器RAM
- 内部数据存储器
- 8031有128byte,地址空间 00 H ∼ 7 F H 00H\sim 7FH 00H∼7FH
- 8032有256byte,地址空间 00 H ∼ 7 F H 00H\sim 7FH 00H∼7FH和 80 H ∼ 0 F F H 80H\sim 0FFH 80H∼0FFH(与SFR地址重叠)
- 寻址:对片内高区128B( 80 H ∼ 0 F F H 80H\sim 0FFH 80H∼0FFH),对特殊功能寄存器区
- 外部数据存储器
- 片外可扩展64byte的RAM
- 内部数据存储器
-
程序存储器 ROM/EPROM
- 可寻址范围64KB,片内外程序存储器统一编址
- 片内
- E A ‾ = 1 \overline{EA}=1 EA=1时,PC在0~ 0 F F F H 0FFFH 0FFFH范围内执行片内中的程序,超出片内程序存储器容量后
- 片外
- E A ‾ = 0 \overline{EA}=0 EA=0时,PC在0~ 0 F F F F H 0FFFFH 0FFFFH范围内执行片外的程序
- 7个特殊的地址单元
- 0000H:复位后PC=0000H,即程序从0000H处开始执行指令
- 0003H:外部中断0入口地址
- 000BH:定时器0溢出中断入口地址
- 0013H:外部中断1入口地址
- 001BH:定时器1溢出中断入口地址
- 0023H:串行口中断入口地址
- 002BH:定时器2溢出中断入口地址(针对8032)
-
特殊功能寄存器 SFR
- 说明
- 在 80 H ∼ 0 F F H 80H\sim 0FFH 80H∼0FFH共128个字节单元中,SFR只离散的占用了部分字节
- 部分SFR可进行位寻址,可位寻址的SFR的字节地址末位只能是X0H或X8H
- SP
- 在调用子程序或进入中断服务程序时,断点地址的入栈和出栈是由硬件自动实现的
- DPTR (DPH和DPL)
- 主要存放16位地址
- 某些情况下,DPH和DPL可单独使用
- 对64KB外部数据存储器空间寻址时,作为间址寄存器使用;在访问程序存储器时,作为基址寄存器使用
- I/O端口 P 0 ∼ P 3 P_0\sim P_3 P0∼P3
- 寄存器B
- 主要是为乘除运算
- 不执行乘除运算时可作为普通寄存器使用
- 串行数据缓冲器SUBF
- 由发送缓冲器和接收缓冲器组成(共用一个地址99H)
- 串行控制寄存器SCON
- 主要用来选择串行通信的工作方式、接收或发送控制、设置状态标志
- 说明
-
位地址空间
- 四个8位并行I/O端口
- P 0 P_0 P0
- 由一个输出锁存器、2个三态输入缓冲器、1个输出驱动电路、1个输出控制电路(1个与门、1个反相器、1个MUX)组成
- 多路开关MUX的位置
- 当 P 0 P_0 P0口做地址/数据总线时,CPU发出1信号,MUX将非门输出端和T2的栅极接通
- 当 P 0 P_0 P0做I/O端口时,CPU发出0信号,MUX将输出锁存器 Q ‾ \overline{Q} Q与T2的栅极接通
- P 1 P_1 P1
- P 2 P_2 P2
- P 3 P_3 P3
- P 0 P_0 P0
- 一个串行口
- 两个16位定时器(8032有3个)
- 中断系统
MCS-51指令系统
指令表
此图来自课本
- CPU
指令系统习题
- 已知执行下列指令前,(A)=01H, (SP)=6AH, (69H)=50H, (6AH)=80H,执行后它们各自是多少?
POP DPH ;((SP))->DPH, (SP)-1->SP
;(6AH)=80H->DPH, (SP)-1=6AH-1=69H->SP
POP DPL ;((SP))->DPL, (SP)-1->SP
;(69H)=50H->DPL, (SP)-1=69H-1=68H->SP
MOV DPTR, #3000H;30H->DPH, 00H->DPL
RL A ;(A)=02H
MOV B,A ;(B)=02H
MOVC A, @A+DPTR ;(A)=33H
PUSH ACC ;(SP)+1->SP, (A)->(SP)
;68H+1=69H->SP, 33H->(69H)
MOV A, B ;02H->(A)
RL A ;(A)=04H
MOVC A, @A+DPTR ;(A)=55H
PUSH ACC ;(SP)+1->SP, (A)->(SP)
;69H+1=6AH->SP, 55H->(6AH)
RET ;((SP))->PCH,(SP)-1->SP
;((SP))->PCL,(SP)-1->SP
;(6AH)=55H->PCH, 6AH-1=69H->SP
;(69H)=33H->PCL, 69H-1=68H->SP
ORG 3000H
DB 11H, 22H, 33H, 44H, 55H, 66H
因此执行后,(A)=55H, (SP)=68H, (69H)=33H, (6AH)=55H, (PC)=5533H
- 假设(A)=57H, (R0)=63H, (63H)=0A1H,则执行后(A)=?
ANL A, #63H ;(A)=43H
ORL 63H, A ;(63H)=E3H
XRL A, @R0 ;(A)=A0H
CPL A ;(A)=5FH
执行后(A)=5FH
编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据,若有,则将51H单元置01H,否则,将51H单元置00H
ORG 0000H
MOV R0, #30H ;内部单元起始地址
MOV R2, #21H ;查找次数
LOOP: MOV A, @R0
CJNE A, #0AAH, NOT
MOV 51H, #01H
SJMP DEND
NOT: INC R0
DJNZ R2, LOOP
MOV 51H, #00H
DEND: SJMP DEND
MCS-51的中断系统
笔记思维导图
笔记文字部分
- MCS-51的中断系统
- 中断源
- I N T 0 ‾ \overline{INT0} INT0,外部中断0请求,由P3.2输入。
- I N T 1 ‾ \overline{INT1} INT1,外部中断1请求,由P3.3输入
- 片内定时器T0溢出中断请求
- 片内定时器T1溢出中断请求
- 片内串行口发送/接收中断请求
- 片内定时器T2溢出中断请求(8032)
- 特殊功能寄存器TCON(专用寄存器)
-
作用:锁存外部的中断请求标志,以及T0、T1的溢出中断请求标志
-
IT0:选择 I N T 0 ‾ \overline{INT0} INT0触发方式控制位。IT0=0, I N T 0 ‾ \overline{INT0} INT0低电平触发中断;IT0=1, I N T 0 ‾ \overline{INT0} INT0负跳沿触发中断
-
IE0: I N T 0 ‾ \overline{INT0} INT0请求标志位。IE0=1,外部中断0向CPU申请中断
-
IT1、IE1功能同上
-
TF0:片内定时器T0溢出中断请求标志。T0启动后从初始值开始进行加1计数,当最高位产生溢出时,置TF0=1,向CPU申请中断
-
TF1功能同TF0
-
- 特殊功能寄存器T2CON(专用寄存器)
-
TF2:当T2的计数器(TH2、TL2)计数溢出回0时,由内部硬件置位TF2,向CPU发出中断请求。但当RCLK或TCLK为1时将不予置位。
-
EXF2:当由引脚T2EX上的负跳变引起“捕捉”或“重新装载”且EXEN2=1时,则置位EXF2标志位(T2CON.6),向CPU发出中断请求
-
上述2种中断请求,CPU响应时会转向同一个中断矢量地址进行处理,因此需在T2的中断服务程序中对TF2和EXF2进行查询判别
- 特殊功能寄存器SCON(串行口控制寄存器)
-
RI(SCON.0):串行口接收中断请求标志位。当允许串行口接收数据时,每接收完一个串行帧数据,,请求中断。()
-
TI(SCON.1):串行口发送中断请求标志位。CPU每将一个字节写入发送缓冲器SBUF,启动发送完一个串行帧数据时,,请求中断。()
- 中断控制
- 中断源