单片机汇总.docx
- 文档编号:11109197
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:24
- 大小:25.31KB
单片机汇总.docx
《单片机汇总.docx》由会员分享,可在线阅读,更多相关《单片机汇总.docx(24页珍藏版)》请在冰豆网上搜索。
单片机汇总
单片机汇总
第一章绪论
1.1 什么是单片机
CPU
RAM
ROM
I/O
RTC时钟电路
串行口
微型机系统
+inonechip=单片机
单片机单个芯片上的微机
•为了控制应用,增加了特殊功能; 嵌入式微控制器; 分为4位、8位、16位、32位,64位.
1.2单片机的发展
•多功能; 高性能;低电压、低功耗; 低价格
1.351系列单片机简介
•MCS-48:
真正的单片机,与通用CPU分开,形成面向控制的应用特点。
•8051、8052于80年代初形成,扩大了片内、片外存储容量和寻址能力,增强了并行口、增设了双串口,增强了定时计数器,增强了中断系统,有较强的寻址运算能力,增设了布尔处理系统
第三代51系列单片机:
采用chmos工艺,功耗更低、速度更快,增设了软件可选的低功耗模式,增加了大量片内EEPROM,增设了其他串行总线,有利于功能扩展,增加了如A/D、模拟比较器、PWM、WDT、等部件,所有这些特点,是51单片机成为主流。
1.4单片机的应用领域和应用模式
应用领域:
家用电器,办公自动化,商业营销领域,工业自动化,智能仪表、智能传感器;汽车电子
应用模式:
总线方式,非总线方式
现代单片机系统的设计理念是:
紧凑、小巧,低功耗,绿色产品,高可靠等。
所以,对系统的扩展、外围电路、电源等要妥善处理。
-
•中央处理器,存储器,程序存储器(ROM),片内只读存储器,片内掩模ROM,片内可编程ROM,OTP和MTP,片外只读存储器,程序自动升级,数据存储器,并行I/O口,串行I/O口,定时器/计数器,定时电路和元件
2.2单片机的引脚功能和结构
-
•电源和晶振Vcc、Vss、XTAL1、XTAL2
•I/O口
–P0P1P2P3
–串行口P3.0-Rx P3.1-Tx
–中断P3.2-INT0 P3.3-INT1
–定时器P3.4-T0 P3.5-T1
–数据存储器选通P3.6-WR P3.7-RD
•控制线
•输入
RST、EA/Vpp
•输入、输出
ALE/PROG
•输出
PSEN
2.2.280C51的内部结构框图和组成:
80C51内部包括:
算术逻辑部件ALU,累加器ACC、ROM、RAM、指令寄存器IR、程序地址寄存器、程序计数器、地址指针DPTR、定时计数器、并行口、程序状态寄存器PSW、定时控制电路等
2.380C51单片机的结构和特点:
2.3.1中央控制器
•程序计数器PC和数据指针DPTR
PC工作方式:
–PC自动加1
–转移指令,实际上是给PC新值
–调用指令或响应中断时
•下一条指令地址入栈
•程序指针装入新值,当有RET或RETI指令时,从堆栈中取回原地址,继续执行
数据指针DPTR工作方式:
•
•
2.3.2运算器
4.程序状态字
CY
AC
F0
RS1
RS0
OV
-
P
1) PSW.0-P,奇偶校验
2) PSW.2-OV溢出标志
3) PSW.6-AC辅助进位
4) PSW.7-CY进位标志
5) PSW.5-F0供用户使用
•
•
•
•2.4.1程序存储器
•片内、片外选择
•特殊地址
–复位 0000H
–INT0 0003H
–T0INT000BH
–INT1 0013H
–T1INT001BH
–SCOM 0023H
–T2INT002BH
2.5布尔处理器
•累加器CY,位寻址RAM,位寻址寄存器,位寻址并行I/O口,位寻址指令系统
2.680C51单片机的工作方式
•复位方式;程序执行方式,低功耗方式,编程方式
第三章80C51单片机的指令系统
一、概述
•指令分类
Ø数据传送类指令(28条)
Ø算术运算类指令(24条)
Ø逻辑运算类指令(25条)
Ø控制转移类指令(17条)
Ø布尔操作类指令(17条)
2.指令格式:
单字节指令:
指令只有一个字节,操作数和操作码都在同一个字节中。
双字节指令:
指令包括两个字节,其中一个字节是操作数,另一个字节为操作码。
3字节指令:
操作码占一个字节,操作数占两个字节。
3.符号的约定
•Rn当前寄存器组的8个通用寄存器,n=0-7
•Ri R0、R1只能用做间址寄存器,i=0,1
•direct表示8为地址
•#data 表示8位立即数
•bit 片内ram直接寻址位
如:
mova,#3ah
movdptr,#0a2b3h
2.直接寻址:
如:
mova,3ah
应用范围:
低128单元,特殊功能寄存器,
直接寻址是寻址特殊功能寄存器的唯一方法。
4.寄存器间接寻址
•片内RAM低128单元,只能用R0、R1作间址寄存器;如:
mova,@r0
•片外RAM64k字节,只能用DPTR做间址寄存器;如:
movxa,@dptr
•片外RAM低256字节,除了用DPTR做间址寄存器外,也能用Ri:
movxa,@r1
•堆栈操作
5.相对寻址
相对转移指令中,给出的地址为相对当前地址的偏移量。
偏移量为有符号数。
8位有符号数的范围是-128-127。
如:
jcrel
6.变址寻址:
只有三条指令:
movca,@a+dptr
movca,@a+pc
jmp@a+dptr
7.位寻址:
片内位寻址RAM,片内特殊功能寄存器
指令中的表示方法:
直接使用地址,单元地址加位,特殊功能寄存器符号加位,位名称
三、指令系统
•数据传送类指令
Ø可以进行直接地址到直接地址传送
Ø可以用R0、R1和DPTR访问片外RAM
Ø累加器A功能丰富、强大
Ø能访问程序存储器
1.一般传送指令
•以累加器A为目的操作数。
mova,Rn
mova,direct
mova,@Ri
mova,#datai
•以Rn为目的操作数。
movRn,a
movRn,direct
movRn,#data
-以直接地址为目的操作数
movdirect,a
movdirect,Rn
movdirect,direct
movdirect,@Ri
movdirect,#data
•以间接寻址@Ri为目的操作数
mov@Ri,a
mov@Ri,direct
mov@Ri,#data
2.目的地址传送指令
只有一条:
movdptr,#data16
如:
movdptr,#1234
dph=12
dpl=34
3.累加器传送指令
•字节交换指令
xcha,Rn
xcha,direct
xcha,@Ri
•半字节交换指令
xchda,@Ri
•A与片外存储器的传送指令
movxa,@Ri
movxa,@dptr
movx@dptr,a
movx@Ri,a
-A与程序存储器传送指令
movca,@a+pc
movca,@a+dptr
–堆栈操作
pushdirect
popdirect
2.算术运算类指令
•加法指令
•加法指令
adda,Rn ;a+Rn->a
adda,direct
adda,@Ri
adda,#data
这四个指令影响标志位AC、CY、OV、P
加法指令
–2.带进位加法指令
addca,Rn ;a+Rn+CY->a
addca,direct
addca,@Ri
addca,#data
这四个指令影响标志位AC、CY、OV、P
R6+R7:
mova,r6
Adda,r7
movr6,a
mova,#0
addca,#0
movr7,a
加法指令
3.加1指令
incRn
incdirect
inc@Ri
inca
incdptr
这些指令不影响标志位
加法指令
–4.二-十进制调整指令
daa
设a=56h,r3=67h,CY=1看成压缩的BCD码相加:
addca,r3 ;a=0beh
daa ;a=0be+6=0c4ha=0c4h+60h=124h
结果:
a=24hcy=1
减法指令
•带借位减法
subba,Rn
subba,direct
subba,@Ri
subba,#data
没有不带借位的减法,可以先对CY清零:
clrc
减法指令
•减1指令
decRn
decdirect
dec@Ri
deca
无对dptr的减一操作
举例:
由于无对dptr的减一操作,可用软件实现:
mova,dpl
deca
movdpl,a
cjnea,#0ffh,over
mova,dph
deca
movdph,a
over:
乘法指令
•mulab
将A,B中两数相乘,积的低8位放在A中,高8位放在B中.
A=50HB=0A0H
MULAB
乘积为3200H,A=00HB=32HOV=1CY=0
除法指令
•DIVAB
A等于A/B的商,B等于A/B的余数.如果B=0结果不定,这时OV=1.CY总是0.
3.逻辑运算指令
a.单操作数逻辑运算指令
–clra
–cpla
–rra
–rrca
–rla
–rlca
–swapa
举例
swap指令的作用,下面的程序很容易将A中的数转化为BCD码:
movb,#10
divab
swapa
adda,b
b.双操作数逻辑指令
•按位“与”运算
anla,Rn
anla,direct
anla,@Ri
anla,#data
anldirect,a
anldirect,#data
b.双操作数逻辑指令
•按位“或”运算
orla,Rn
orla,direct
orla,@Ri
orla,#data
orldirect,a
orldirect,#data
b.双操作数逻辑指令
•按位“异或”运算
xrla,Rn
xrla,direct
xrla,@Ri
xrla,#data
xrldirect,a
xrldirect,#data
举例:
由于逻辑操作可以不用累加器,故常用下面指令取反:
xrlp1,#0ffh
–anl、orl、xrl经常用来对位操作:
anla,11111110b ;a=xxxxxxx0b
orla,00000010b ;a=xxxxxx10b
xrla,00000011b ;a=xxxxxx01b
4.控制转移类指令
•无条件转移指令
sjmprel
相对偏移跳转,相对范围-128---+127
ajmpaddr11
目标地址高5位不变,低11位由指令给出。
只能跳转2k范围。
指令2字节。
ljmpaddr16
指令长度3字节,可给出全部地址范围。
jmp@a+dptr支持情况转移
举例:
利用情况转移,用如下代码:
movdptr,#jmp_table
mova,index
rla
jmp@a+dptr
jmp_table:
ajmpcase_0
ajmpcase_1
ajmpcase_2
ajmpcase_3
ajmpcase_4
2)调用和返回指令
•acalladdr11
•lcalladdr16
•ret
•reti
3)条件转移指令
•jzrel
•jnzrel
•cjnea,direct,rel
•cjnea,#data,rel
•cjneRn,#data,rel
•cjneRi,#data,rel
以上都是相对转移。
举例:
cjne指令同时修改标志位c.分三种情况比大小:
cjnea,data,equ
jcless
great:
;ifgreat
less:
;ifless
equ:
4)循环转移指令
•djnzRn,rel
•djnzdirect,rel
先把Rn或direct减1,如果结果不为0,转移到rel继续执行循环,否则,退出循环。
举例:
djnz常用作循环控制:
movcounter,#10
loop:
;loopbody
djnzcounter,loop
jz,jnz,cjne都可以用来进行循环控制。
而且执行时间都是2个指令周期。
5)空操作
nop
空操作,单字节、单周期,常用于延时等操作。
例:
movr7,#10
delay:
nop
djnzr7,delay
举例:
位操作指令中没有异或操作可用软件实现:
求c=bit1.xrl.bit2
movc,bit1
jnbbit2,over
cplc
over:
;continueto
第四章80C51单片机的功能单元
一、并行I/O接口
80C51共有四个8位的并行双向口。
每位均有锁存器、输出驱动器和输入缓冲器组成。
它们在结构和功能上均有差异,下面逐一介绍之。
1.P1口
P1口是一个8位口,可以字节访问也可以位访问。
其字节地址为90H,位地址为90H——97H。
P1口特点:
输出锁存,输出高电平能力弱,低电平能力强,特殊的读、修改、写指令,只读锁存器的输出。
当目的操作数是断口时,下列指令读锁存器而不是管脚。
ANL、ORL、XRL、JBC、CPL、INC
DEC、DJNZ、MOVPX.Y,C、CLR、SETB
2.P3口:
P3口是一个多功能8位口,可以字节访问也可以位访问。
其字节地址为B0H,位地址为B0H—B7H。
P3口第二功能
•P3.0—RXD,串行口输入
•P3.1—TXD,串行口输出
•P3.2—INT0,外部中断0
•P3.3—INT1,外部中断1
•P3.4—T0,定时/计数器0
•P3.5—T1,定时/计数器1
•P3.6—WR,外部存储器写选通
•P3.7—RD,外部存储器读选通
3.P2口:
P2口是一个多功能8位口,可以字节访问也可以位访问。
其字节地址为A0H,位地址为A0H—A7H。
其第二功能是作为外部存储器的高地址输出。
P2口的功能特点:
不输出地址时,作为双向I/O口使用,可以作为高地址输出,能驱动4个TTL门
4.P0口:
P0口是一个多功能8位口,可以字节访问也可以位访问。
其字节地址为80H,位地址为80H—87H。
其第二功能是作为外部存储器的低地址输出和数据输入输出。
P0口的特点:
P0口作为总线时是地址、数据复用。
作为I/O口使用时是漏极开路应用。
P0口能驱动8个TTL门。
二、定时/计数器
1、定时/计数器概述
80C51系列单片机中总是包含T0,T1两个定时/计数器,有的型号还有定时/计数器T2,定时计数器的核心是一个加一计数器,其基本功能是加一操作。
–如果对外部信号加一,就是计数器。
–如果对时钟信号加一,就是定时器。
2、定时/计数器T0、T1
内部结构
16位计数器TH0、TL0和TH1、TL1
•特殊功能寄存器TMOD、TCON
•时钟分频器
•输入引脚T0、T1、INT0、INT1
定时/计数器T2:
在51系列单片机中,8052子系列除了有定时/计数器T0、T1外,还具有功能更强的定时/计数器T2。
除了两个8位计数器TL2、TH2和控制寄存器T2CON及T2MOD之外,还有捕获寄存器RCAP2L和RCAP2H。
输入引脚T2(P1.0)是外部计数脉冲输入端。
输入引脚T2EX(P1.1)是外部控制信号输入端。
定时器、计数器定时常数计算
由于计数器是加1计数的,所以定时常数应该求补码。
t=Tc×(2L-TC)=12/f(2L-TC)
t:
定时时间;Tc :
机器周期;f:
震荡器频率;L:
计数器字长;
定时/计数器编程
•写TMOD,只能用字节寻址(M0,M1,C/T,GATE)。
•将时间常数或计数常数写入计数器寄存器。
•设置中断开放或禁止。
•启动计数器。
•例1使用T0在P1.0脚产生周期为2ms方波,震荡器频率为6MHz。
设计思路是每1ms产生一个中断,中断程序中除了重新初始化计数器外,使P1.0电平反转。
•选用模式1作为T0的工作模式。
即TMOD=01H
•由于震荡器频率为6MHz,即2微妙计数器计数一次。
计数500次就是1ms。
定时常数为65536-500=0FE0CH,即TH=0FEH,TL=0CH。
•主程序先初始化定时计数器,然后开启计数器
•
例2:
T0用方式3,这时TL0、TH0分别可作为两个8位计数器,产生两个方波。
定时常数为:
256-100*(12/11.0592)=147
256-150*(12/11.0592)=93
•T1用方式2,自动重装载,定时常数0F9H。
例3:
T0采用方式1,中断程序中通过判断p1.0是高电平还是低电平来重新设置计数器初始值。
•计数器初始值从变量中得出,该变量的值同时由主程序动态给出,这样,PWM波的占空比等参数就由主程序决定了。
•
3.串行接口:
51系列单片机中有一个全双工异步串行接口,可以用来和其它串行设备通讯。
全双工意味着它可以同时接收和发送。
UART串行口结构:
接收寄存器和发送寄存器。
控制逻辑,串行口控制寄存器,串行数据输入输出引脚
串行口工作方式:
多机通讯
模式0-同步移位寄存器方式
•数据输入时,数据由RXD引脚输入,同时TXD引脚给出同步时钟。
数据的输入由REN=1和RI=0启动。
•数据输出时,数据有TXD引脚输出,同时TXD引脚给出同步时钟。
输出由对SBUF的写操作触发。
•同步脉冲的频率是FCLK/12。
方式1:
8个数据位通讯方式:
当SM0=0、SM1=1时,串行口选择方式1。
其波特率由定时计数器T1或T2的溢出速率决定。
它是全双工模式,输入由Rx引脚,输出由Tx引脚。
它的一帧数据由一个起始位
(1)、8个数据位和一个停止位(0)组成。
方式2、3,9位数据方式:
当SM0=1、SM1=0时,串行口选择方式2。
当SM0=1、SM1=1时,串行口选择方式3。
发送和接收一帧信息为11位:
一个起始位
(1)、9个数据位和一个停止位(0)组成。
数据除了8位要发送数据外,还包含第九位,发送由TB8组成,接收由RB8组成。
考虑SM2=0的情况,这时第九位常用来作奇偶校验位。
在SM2=0时,接受到完整字符包括第九位时置位Ri,产生中断。
发送完成时,置位Ti产生中断。
方式2和3的区别在于方式2的波特率是固定的,为f/32或f/16。
而方式3的波特率由定时器的溢出速率决定
多机通讯的设置:
单片机设有多机通讯位SM2(SCON.5)。
当串行口工作于方式2或3时,若设置SM2=1,只有接收到的第九位(RB8)为1,才置位RI,触发中断,否则,数据将会丢失。
利用这个特点可以实现多机通讯。
每次通讯从主机对从机点名开始。
各从机先设定SM2=1,通讯时主机先发送某从机的机号,并使第九位为1。
这时所有从机接收并产生中断。
从机把接收到的机号和自己的机号比较,如果是自己,就接着进行下面的通讯过程。
否则结束通讯,并继续保持SM2=1。
接下来主机和被点名的从机继续通讯,但这时都设置SM2=0,并且发送的数据第九位0,这时不会打扰其它从机。
多机通讯:
这样能够使主机发送数据或命令时,只有发送机号的字节使所有从机中断,发送其它字节时并不干扰不通讯的从机。
还可以定义广播方式,比如假设机号0是广播地址,当收到机号0时,所有从机接受数据
波特率发生器和计算:
方式2的波特率是固定的,为:
波特率=(f×2SMOD)/64,方式1、3的波特率用T1产生:
波特率=(定时器T1的溢出率×2SMOD)/32,用定时器T2产生波特率:
波特率=(定时器T1的溢出率)/16
波特率计算举例:
设震荡器频率为f=11.0592MHz,方式1、3,用T1方式2产生波特率9600,计算T1溢出率、定时器初始值。
定时器T1溢出率=9600×32=307200, 11059200/307200=36, 初始值=256-36=220=0DCH
例1 把片内RAM内容从50h开始16字节发送出去。
接收方接收16字节后存储于50h开始的内部RAM中。
使用方式1。
中断系统:
突发事件的处理机制,中断源-触发中断的事件,中断优先级-两级中断优先级
中断源
•INT0,外部中断0
•INT1,外部中断1
•TF0,定时计数器0
•TF1,定时计数器1
•RX、TX,串行口中断
中断请求的撤除
•单片机内部自动复位。
T0、T1中断或跳变触发的外部中断,CPU响应后自动清除中断标志。
•软件清除。
主要指RI、TI。
•用电平触发的外部中断,应采取相应措施保证中断返回时回到高电平。
中断响应过程
•在每个机器周期S5P2期间采样中断源,在下一个周期的S6阶段按优先级响应中断。
•响应中断后,先把PC内容入栈保护。
•转向中断程序入口地址,处理中断。
•遇到RETI指令,中断返回。
•从堆栈中恢复PC。
中断程序地址:
中断源
中断程序地址
外部中断0
3h
定时计数器0
0bh
外部中断1
13h
定时计数器1
1bh
串行口
23h
第五章单片机程序设计
使用汇编语言和C语言
概述:
计算机语言
•机器语言,汇编语言,高级语言
汇编语言:
指令语句,伪指令语句,汇编语言程序的一般结构,常用程序举例
指令语句:
8051的汇编语言指令前面已经学习过。
如:
mova,#0
mova,0
注意一些特殊的地方:
• 立即数和地址
• 特定指令对操作数的要求
比如,没有xchr1,r2指令。
• 利用特定的指令提高程序质量。
如:
mova,#0;单周期,双字节
和 xrla,a ;单周期,单字节
• 一般指令,不分大小写
伪指令语句:
常数定义伪指令,数据说明伪指令,程序计数伪指令,汇编结束伪指令
一般程序结构:
单片机程序的总体构成,顺序程序,分之程序,循环程序,子程序,中断服务程序,
顺序程序:
数据传送和运算,简单运算,查表
分支程序设计:
二分支程序。
一般用简单的判断跳转指令:
jz,jb,jnb,jc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 汇总