单片机期末复习

单片机复习

单片机结构与工作原理

1.内部结构
51单片机由CPU系统(CPU,时钟以及复位系统,总线控制逻辑),CPU外围单元(RAM,ROM,IO口,SFR),基本功能单元(定时/计数器,中断系统,串行接口)与外部扩展单元组成。
内部采用TTL电平协议,+5V表示1,0V表示0

1. 8位CPU
2. ROM只读 4KB
3. RAM 256B,高128B分给21个SFR,低128B中0x00 - 0x1F四组工作寄存器,0x20 - 0x2f为可位寻址区,仅0x30 - 0x7F为用户区
4. 5个中断源,2个中断优先级
5. 外部最多可拓展64KB的ROM和RAM

2.引脚定义

image

  1. CPU时钟与复位
1.节拍(P):晶振的震荡周期(1/f)
2.状态(S):1S = 2P
3.机器周期:1机器周期 = 6S = 12P
4.指令周期:一条指令占用的全部时间
5.4周期指令只有MUL和DIV(乘法除法)
6.复位后除了SP(堆栈指针寄存器)以及P0-P3之外的所有寄存器都置0。
其中SP = 07H,P0-P3 = FFH

4.存储器

1.存储器分为ROM(只读)和RAM(随机存取),分别为4KB和256B,外部最多可拓展64KB
2.对于RAM,汇编访问内部RAM使用MOV,访问外部RAM使用MOVX
3.引脚EA接高电平仅访问外部ROM,接低电平访问内部ROM。无外部拓展接低电平(GND)

RAM分类

51片内256B的RAM

  • 低128位分给特殊功能寄存器
  • 高128位分给用户,其中0x00-0x1F为四组工作寄存器,0x20-0x2F为位寻址区,0x30-0x7F才为用户可自定义的RAM区

21个SFR及其作用
image

1.寄存器A(Acc):常作为中间寄存器
2.寄存器B :与Acc结合,常用于乘除法,如

MUL  AB //高八位放在B中,低八位放在>A中
DIV  AB  //商放在A中,余数放在B中

3.PC :程序计数器,永远指向存放下一条指令所在的地址
4.PSW:状态字寄存器
5.IP:中断优先级控制寄存器
6.P3:P3口
7.IE:中断使能寄存器,控制各个中断的开启与工作
8.P2:P2口
9.SBUF:串行数据缓冲寄存器,存储接收和发送的串行数据
10.SCON:串口控制寄存器,控制串口的工作模式
11.P1:P1口
12-13:TH1,TL1:定时器1初值设定
14-15:TH0,TL0:定时器0初值设定
16:TMOD:定时器模式控制寄存器,其中的
17:TCON:定时器控制寄存器(包含外部中断控制)
18:PCON:电源控制寄存器
19-20:DPH,DPL:16位数据指针寄存器DPTR的高八位和低八位。只可以间接寻址
21:SP:堆栈指针寄存器(PUSH,POP)
22:P0:P0口

P3口的第二功能
P3.0,P3.1 :RXD,TXD,穿行通讯相关
P3.2,P3.3:外部中断0,1输入
P3.4,P3.5:定时器0,1外部震荡输入
P3.6,P3.7:WR,RD分别为拓展存储器的写使能以及读使能

汇编相关

常用指令

ORG / END : 指定代码存放位置 / 指定程序结束位置
MOV : 传送指令,RAM内存进行操作
MOVC : 对ROM内内存进行操作
DJNZ : DJNZ	Rx,符号,每次对Rx减1并判断是否为0,为0跳转到符号处
AJMP : AJMP 符号,跳转到符号处执行下面的语句
INC/DEC : 增1减1
ACALL/RET : 函数调用/返回

寻址方式

立即寻址: 操作数为#加立即数,MOV R0,#120
直接寻址: 操作数为RAM地址,MOV A,30H
寄存器寻址: 寄存器传递数据 MOV A,R0,如高128B的SFR仅可使用寄存器寻址来找
寄存器间接寻址 : 将RAM地址保存在寄存器中,间接访问,使用@
MOV A,@R0
MOV @R0,A
MOV A,@DPTR
MOV @DPTR,A
注意可间接寻址的寄存器仅有R0,R1和DPTR,且仅有寄存器A可参与
变址寻址:类似于数组采用的地址偏移
MOV A,#02H
MOV DPTR,#MYTAB ;将表头地址加入,可视为数组名
MOVC A,@A+DPTR ;访问ROM中的固定数据
·····
·····
MYTAB : DB 01 20 ~~~
位寻址:位寻址必须有寄存器C参与。C存储一位数据

summary
image
ps:程序存储器也就是存储代码的地方,即ROM

数据交换指令

XCH A,Rn/direct/@R1/@R0 ;交换数据
XCHD A,@R0/@R1 ;交换低四位高四位不变
SWAP A ;低四位与高四位交换

算数指令

ADD/ADDC 加法/带进位加法指令
etc,ADD A,#00H;/ADDC A,#00H。若有进位(结果大于256),会将C置1
SUBB 带借位减法指令
etc, SUBB A,#30H ;A-30H,若有借位(小于0),会将C置1,且由于是8位无符号寄存器,A会溢出存储。
MUL 乘法指令
etc, MUL AB,结果的高八位存在B寄存器,低八位存在A寄存器
DIV 除法指令
etc DIV AB,结果商存在A中,余数存在B中
INC/DEC 增1/减1指令
etc, INC/DEC A/30H/DPTR/Rn

逻辑指令

ANL 按位与
ORL 按位或
CPL 按位取反
XRL 按位异或
RL  左循环移位
RR  右循环移位
RLC 带C左循环移位
RRC 带C右循环移位
SWAP A 高四位与低四位交换
CLR C/bit 位操作置0
SETB C/bit 位操作置1

条件转移指令

JZ 标号(rel);寄存器A为0则跳转
JNZ 标号(rel);A!=0则跳转
CJNE A/Rn/@Ri,direct,rel ;A/Rn/@Ri != direct则跳转,若>,C=0,若小于C=1
DJNZ direct/Rn,rel 每次将direct/Rn中的数减1,并检测是否为0,为0则跳转
JC rel ;C=0跳转
JNC rel ; C=1跳转

C语言部分略

单片机资源及其中断

总结

中断相关寄存器
会用到
IE(中断使能寄存器)
image

TCON(定时器控制寄存器)
TF1/TF0(定时器溢出中断标志,机器置1置0,也可手动)
IE1/IE0(外部中断标志,机器置1置0,也可手动)
TR0/TR1(定时器0/1开始计数标志位)
IT0/IT1(外部中断触发方式选择,置0低电平除法,置1下降沿触发))
TMOD(定时器模式控制寄存器)
image
image

SCON(串口模式控制寄存器)
image
外部中断0/1(INT0/INT1)

中断控制寄存器IE(EX0/EX1,EA)
EA = 1 ;开启中断总开关
EX0/EX1 = 1 ;外部中断0/1开关使能
定时器控制寄存器TCON(IT0/IT1)
IT0/IT1 = 0/1(外部中断0/1为低电平/下降沿触发)

定时器中断0/1(T0/T1)

中断控制寄存器IE(ET0/ET1,EA)
EA = 1 ;开启中断总开关
ET0/ET1 = 1 ;定时器中断开关使能
工作方式控制寄存器TMOD(不可位寻址)
只考方式1/2,即16位定时器以及8位自动重装
TMOD = 0x01/0x10 //工作方式为16位定时器/八位自动重装定时器
定时器控制寄存器TCON(TR0/TR1)
TR0/TR1 = 1 //定时器0/1开始计数
定时器/计数器数值存储TH/TL
TH0/1以及TL0/1分别为8位寄存器
16位模式 TH存储高8位,TL存储低8位
8位自动重装 TH作为基准不变,当TL溢出时,TH会自动将自身的值赋给TL

串口中断

IE(EA,ES)
EA = 1;//全局中断开启
ES = 1;//串行通讯中断开启
SCON(SM0,SM1,REN,TI,RI)
SCON = 0x50;工作于方式1
PCON(最高位为SMOD)
PCON = 0x80/0x00 ,波特率加倍/不加倍
工作与模式1需要定时器1提供时钟
初始化T1为8位自动重装,且TH1,TL1初值由如下公式计算
波特率 = 1/32 * T1的溢出率 * 2^smod
T1的溢出率 = 12* 1/f * (256 - TH1)
带入计算反解即可计算出TH1/TL1初值
与前面的不同,中断标志位TI以及RI需要软件置0。
接收数据或者发送数据都使用SBUF

TH1/TL1初值计算公式

\[TL1 = TH1 = 256 - \frac{2^{SMOD}}{32}*\frac{f_{osc}}{12*波特率} \]

\[TL1 = TH1 = 256 - \frac{2^{SMOD}*f_{osc}}{384*波特率} \]

其中fosc为晶振的震荡频率
给出串行通讯发和收的两个函数

void Send_Byte(unsigned char data)
{
	SBUF = data;
	while(TI == 0);
	TI = 0;
}
unsigned char Recive_Byte()
{
	while(RI == 0);
	RI = 0;
	return SBUF
}
中断函数总结 中断关键词 中断源
外部中断0 interrupt 0 P3.2
定时器中断0 interrupt 1 定时器0溢出
外部中断1 interrupt 2 P3.3
定时器中断1 interrupt 3 定时器1溢出
串口中断 interrupt 4 接收/发送完毕RI/TI = 1,软件清零
posted @ 2024-01-02 15:50  凪风sama  阅读(33)  评论(1编辑  收藏  举报