单片机1.docx
《单片机1.docx》由会员分享,可在线阅读,更多相关《单片机1.docx(15页珍藏版)》请在冰豆网上搜索。
单片机1
⏹1.1单片机基本概念
(1)CPU-单片机
中央处理器(CentralProcessingUnit)的缩写,即CPU,CPU是电脑中的核心配件,其功能主要是解释计算机指令以及处理计算机软件中的数据
(2)SCM,MCU,ECU
(3)单片机与通用微机主要区别(cpu、存储器、I/O)
微处理器(CPU)的区别:
通用微机的CPU主要面向数据处理,其发展主要围绕数据处理功能、计算速度和精度的进一步提高。
单片机主要面向控制,控制中的数据类型及数据处理相对简单,所以单片机的数据处理功能比通用微机相对要弱一些,计算速度和精度也相对要低一些。
存储器区别:
通用微机中存储器组织结构主要针对增大存储容量和CPU对数据的存取速度。
单片机中存储器的组织结构比较简单,存储器芯片直接挂接在单片机的总线上,CPU对存储器的读写按直接物理地址来寻址存储器单元,存储器的寻址空间一般都为64KB
I/O接口:
通用微机中I/O接口主要考虑标准外设,用户通过标准总线连接外设,能达到即插即用。
单片机应用系统的外设都是非标准的,且千差万别,种类很多。
(4)单片机与嵌入式系统
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
(5)单片机系统
单板机:
将微处理器(CPU)、存储器、I/O接口电路以及简单的输入/输出设备组装在一块印刷电路板上,称其为单板微型计算机,简称单板机。
单片机:
将微处理器(CPU)、存储器、I/O接口电路和相应实时控制器件集成在一块芯片上,称其为单片微型计算机,简称单片机。
微型计算机:
微处理器(CPU)、存储器、I/O接口电路由总线有机地连接在一起的整体,称为微型计算机。
微型计算机系统:
微型计算机与外围设备、电源、系统软件一起构成的系统,称为微型计算机系统。
⏹1.2单片机的发展
(1)数据位发展
4位-〉8位-〉16位-〉32位
(2)单片机技术的发展
体系结构(SCU-〉MCU-〉SOC)
速度
低功耗
OTP-〉MTP
⏹1.3单片机的特点及应用
特点:
存储器、指令系统和位处理、I/O、外部扩展
优点:
体积小、面向控制、抗干扰、分布式
⏹1.4单片机类型
MCS-51产品分类:
基本型、增强型、低功耗型
⏹2.2内部结构及引脚
ALE、PSEN、RST、EA、WR、RD
⏹2.3微处理器
CPU分为运算部件和控制部件
(1)运算部件
功能:
逻辑运算、算术运算、位操作、数据传输
组成:
ALU、A、B、暂存器等
PSW:
C、AC、RS1、RS0、OV
OV:
有符号数和无符号数
布尔机:
1位累加器:
借用进位标制位CY。
即作为数据源之一又是运算结果的存放处,位数据传送的中心。
2位寻址的RAM:
内部RAM位寻址区0~127位(20H~2FH)
3位寻址寄存器:
SFR中可位寻址的位。
4位寻址的I/O口:
并行I/O口中可以位寻址的位(如P1.0)
5位操作指令系统:
置位、清零、取反、位状态判跳、位逻辑运算、位输入/输出等。
(2)控制器
定时控制功能:
片内时钟和定时电路
片内时钟:
内部时钟和外部时钟
(3)时序
时序定义
节拍、状态周期、机器周期、指令周期
51单片机分单周期指令、双周期指令、四周期指令
⏹2.4存储器
2.4.1程序存储器
2.4.2数据存储器
2片内RAM
结构三个区块:
工作寄存器区(00~1FH)RS1和RS0
位寻址区(20H~2FH)
数据缓冲区(30H~FFH)
堆栈SP:
07H开始-〉30H
过程:
入栈先SP+1,再入栈
出栈先出栈,再SP-1
SFR:
(80H~FFH)功能专用寄存器
⏹2.5并行I/O口
P0、P2分别地址低8位和高8位
P3多功能口、P1用户口
(1)P0通用I/O和地址/数据复用
当作通用I/O口使用时输出“1”需要接上拉电阻
输入“1”需要先输出“1”
“准双向口”
读端口操作“读-修改-写”
(2)P1
无需上拉电阻
⏹2.9复位
(1)复位状态
改变:
SFR,PC(P0~P3口-〉FFH,SP=07H)
不改变:
片内RAM
(2)复位电路:
上电复位、按钮复位
⏹2.1051低功耗
HMOS,CMOS,CHMOS
CHMOS提供两种节电工作方式空闲和掉电
⏹3.1概述
指令:
能完成特定功能的命令。
指令描述的两种基本形式:
机器语言和汇编语言
指令系统:
计算机能够执行的全部操作所对应的指令集合。
编写程序实际上是从指令系统中挑选一个指令子集的过程
指令的属性指令一般有功能、时间和空间三种属性。
功能属性是指每条指令都对应一个特定的操作功能;
时间属性是指一条指令执行所用的时间,一般用机器周期来表示;
空间属性是指一条指令在程序存储器中存储所占用的字节数。
⏹3.2寻址方式
寻址方式定义CPU寻找操作数或操作数地址的方法。
寻址方式越多,计算机指令功能越强,灵活性越大
七种寻址方式
⏹3.3数据传送指令
1、片内数据存储器
mov目的操作数源操作数
Rn立即寻址
@RiRn
direct@Ri
Adirect
A
2片外RAM
MOVXA,@DPTR
MOVXA,@Ri
MOVX@DPTR,A
MOVX@Ri,A
3片外ROM
MOVCA,@A+DPTR
MOVCA,@A+PC
⏹3.4算术运算指令
ADD、ADDC、SUBB、INC、DEC
PSW:
OV、C、AC、P
MUL和DIV
⏹3.5逻辑运算及移位指令
ANL、ORL、XRL
RR、RL、RLC
⏹3.6控制转移指令
AJMP,SJMP
例:
判断AJMP目标的合法性
①0000HAJMP0111H
②07FEHAJMP0C10H
③0100HAJMP0B11H
JZ、CJNE(条件判断)
DJNZ(循环)
⏹3.7子程序调用和返回
LCALL、ACALL入栈
RET、RETI出栈
⏹3.8位操作指令
P953-19
⏹中断的定义
所谓中断是指CPU对系统中或系统外发生的某个事件的一种响应过程,即CPU暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序。
当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。
实现这种中断功能的硬件系统和软件系统统称为中断系统。
中断要解决的三个基本问题
51中断系统2、5、4
⏹中断源
可硬件撤销中断:
外部中断、T0、T1
软件撤销中断:
串行口
⏹中断控制
⏹中断优先级
外部中断0
定时器/计数器0中断
外部中断1
定时器/计数器1中断
串行口中断
定时器/计数器2中断
(1)三原则
正在进行的中断过程不能被新的同级或低优先级的中断请求所中断,一直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU才响应新的中断请求。
正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。
CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求。
(2)中断的自然序EX0、ET0、EX1、ET1、ES
⏹中断响应条件和响应过程
⏹响应时间
最长8T,最短3T
⏹5.1概述
定时的方法:
硬件、软件、可编程
定时与计数的关系:
T=N*Tcy
初值:
N=2^n-x
⏹5.2结构
16位T0、T1;加计数器
⏹5.3工作方式
⏹5.4定时计数器程序设计
设计定时器/计数器应用程序三步骤:
(1)根据定时或计数要求确定适当的定时/计数方式、计算初值,设定特殊功能寄存器TMOD、THx、TLx。
(2)根据对定时器/计数器的要求设置中断系统,即设置中断允许控制寄存器IE和中断优先级控制寄存器IP
(3)启动定时器/计数器,即置位TCON中的TRx位。
P85例33
⏹6.1基本概念
计算机通信、并行通信、串行通信
异步传输方式:
异步的含义、字符格式、波特率
同步传输方式
全双工、单工、半双工、UART
⏹6.2工作方式
MOVSBUF,A
MOVA,SBUF
⏹6.3波特率的计算
⏹6.4多机通信
P87例35
⏹7.1概述
最小系统,系统扩展的内容和基本方法
⏹7.2存储器的扩展
译码方式:
全译码和部分译码
程序存储器:
1)确定地址范围2)计算扩展片数3)确定译码方式4)地址线、数据线、控制线(PSEN、EA)
数据存储器:
1)确定地址范围2)计算扩展片数3)确定译码方式4)地址线、数据线、控制线(WR、RD)
⏹8.1概述
键输入流程
键盘接口和输入要解决的几个问题
1)消除键抖动(硬件、软件)
2)键盘码识别
3)键盘监测(中断、查询)
⏹行列键盘
流程图
⏹8.2显示及显示器接口
常用显示器包括:
LED、LCD、CRT
七段LED分共阴极和共阳极
显示方式:
静态显示和动态显示
动态显示原理及程序设计
⏹8.3A/D转换器
1、概述
量化间隔、量化误差
常用的转换逐次逼近和双重积分
2、ADC0809
结构:
8路模拟开关、地址锁存器、8位转换器、三态缓冲器
时序:
与51连接
程序设计
⏹8.4D/A转换器
1、概述
分辨率、建立时间
2、DAC0832
结构:
双缓冲
工作方式:
直通、单缓冲、双缓冲
时序
程序设计:
例1设内部RAM(30H)=40H,(40H)=10H,(10H)=00H(P1)=CAH,分析以下程序执行后各单元及寄存器、P2口的内容。
MOVR0,#30H;(R0)←30H
MOVA,@R0;(A)←((R0))
MOVR1,A;(R1)←(A)
MOVB,@R1;(B)←((R1))
MOV@R1,P1;((R1))←(P1)
MOVP2,P1;(P2)←(P1)
MOV10H,#20H;(10H)←20H
执行上述指令后的结果为:
(R0)=30H,(R1)=(A)=40H,(B)=10H,(40H)=(P1)=(P2)=CAH,(10H)=20H
例2若在外部程序存储器中2000H单元开始依次存放0~9的平方值,数据指针(DPTR)=3A00H,用查表指令取得2003H单元的数据后,要求保持DPTR中的内容不变。
完成上述功能的程序如下:
MOVA,#03H;(A)←03H
PUSHDPH;保护DPTR高8位入栈
PUSHDPL;保护DPTR低8位入栈
MOVDPTR,#2000H;(DPTR)←2000H
MOVCA,@A+DPTR;(A)←(2000H+03H)
POPDPL;弹出DPTR低8位
POPDPH;弹出DPTR高8位
执行结果:
(A)=09H,(DPTR)=3A00H
例3设(R0)=30H,30H=4AH,(A)=28H,则
执行XCHA,@R0后,结果为(A)=4AH,(30H)=28H。
执行XCHDA,@R0后,结果为(A)=2AH,(30H)=48H。
执行SWAPA后,结果为(A)=82H。
例4设外部RAM(0203H)=FFH,分析以下指令执行后的结果。
MOVDPTR,#0203H;(DPTR)←0203H
MOVXA,@DPTR;(A)←((DPTR))
MOV30H,A;(30H)←(A)
MOVA,#0FH;(A)←0FH
MOVX@DPTR,A;((DPTR))←(A)
执行结果为:
(DPTR)=0203H,(30H)=FFH,(0203H)=(A)=0FH
例5从片外程序存储器2000H单元开始存放0~9的平方值,以PC作为基址寄存器进行查表得9的平方值。
设MOVC指令所在地址(PC)=1FF0H,则偏移量=2000H-(1FF0H+1)=0FH。
相应的程序如下:
MOVA,#09H;(A)←09H
ADDA,#0FH;用加法指令进行地址调整
MOVCA,@A+PC;(A)←((A)+(PC)+1)
执行结果为:
(PC)=1FF1H,(A)=51H。
•试分析以下程序的执行结果。
(A)=________,(B)=________。
MOVSP,#3AH
MOVA,#20H
MOVB,#30H
PUSHA
PUSHB
POPA
POPB
例6设(A)=49H,(R0)=6BH,分析执行指令ADDA,R0后的结果。
结果为:
(A)=B4H,OV=1,CY=0,AC=1,P=0。
例7设(A)=C3H,数据指针低位(DPL)=ABH,CY=1,分析执行指令ADDCA,DPL后的结果。
结果为:
(A)=6FH,CY=1,AC=0,P=0。
例8设(A)=52H,(R0)=B4H,分析执行如下指令后的结果
CLRC;是位操作指令,是进位位清零
SUBBA,R0
结果为:
(A)=9EH,CY=1,AC=1,OV=1,P=1
例9设(R0)=7EH,(7EH)=FFH,(7FH)=38H,(DPTR)=10FEH,分析逐条执行下列指令后各单元的内容。
INC@R0;使7EH单元内容由FFH变为00H
INCR0;使R0的内容由7EH变为7FH
INC@R0;使7FH单元内容由38H变为39H
INCDPTR;使DPL为FFH,DPH不变
INCDPTR;使DPL为00H,DPH为11H
INCDPTR;使DPL为01H,DPH不变
例10对BCD码加法65+58→DBH,进行十进制调整。
参考程序如下:
MOVA,#65H;(A)←65
ADDA,#58H;(A)←(A)+58
DAA;十进制调整
例11设片内RAM30H,31H单元中分别存放着两位BCD码表示的被减数和减数,两数相减的差仍以BCD码的形式存放在32H单元中。
可用下面的程序实现:
CLRC
MOVA,#9AH
SUBBA,31H;求减数的十进制补码
ADDA,30H;作十进制补码加法
DAA;进行BCD调整
MOV32H,A;将BCD码的差送存32H单元
例12(P1)=C5H=11000101B,屏蔽P1口高4位而保留低4位。
执行指令:
ANLP1,#0FH
结果为:
(P1)=05H=00000101B。
逻辑“或”指令常用来使字节中某些位置“1”,其它位保持不变。
则欲置位的位用"1"与该位相或,保留不变的位用"0"与该位相或。
例13若(A)=C0H,(R0)=3FH,(3FH)=0FH,
执行指令:
ORLA,@R0
结果为:
(A)=CFH=11001111B。
逻辑"异或"指令常用来使字节中某些位进行取反操作,其它位保持不变。
欲某位取反该位与"1"相异或;欲某位保留则该位与"0"相异或。
还可利用异或指令对某单元自身异或,以实现清零操作。
例14若(A)=B5H=10110101B,执行下列操作:
XRLA,#0F0H;A的高4位取反,低4位保留,(A)=01000101B=45H
MOV30H,A;(30H)=45H
XRLA,30H;自身异或使A清零
用移位指令还可以实现算术运算,左移一位相当于原内容乘以2,右移一位相当于原内容除以2,但这种运算关系只对某些数成立(请读者自行思考)。
例15设(A)=5AH=90,且CY=0,则
执行指令RLA后,(A)=B4H=90。
执行指令RRA后,(A)=2DH=45。
执行指令RLCA后,(A)=B4H=90。
执行指令RRCA后,(A)=2DH=45。
•数据拆分与拼装
要求:
从(30H)=x7x6x5x4x3x2x1x0中取出高5位,从(31H)=y7y6y5y4y3y2y1y0中取出低3位,拼装后存入40H中,(40H)=y2y1y0x7x6x5x4x3。
编写程序实现。
ORG0000H
MOVA,30H
SWAPA;(X3X2X1X0X7X6X5X4)
RLA;X2X1X0X7X6X5X4X3
MOV40H,A
ANL40H,#00011111B
MOVA,31H
MOVB,#20H
MULA,B
ANLA,11100000B
ORL40H,A
例16根据累加器A的值,转不同处理程序的入口。
MOVDPTR,#TABLE;表首地址送DPTR
JMP@A+DPTR;根据A值转移
TABLE:
AJMPTAB1;当(A)=0时转TAB1执行
AJMPTAB2;当(A)=2时转TAB2执行
AJMPTAB3;当(A)=4时转TAB3执行
END
•例18当从P1口输入数据为01H时,程序继续执行,否则等待,直到P1口出现01H。
参考程序如下:
MOVA,#01H;立即数01H送A
WAIT:
CJNEA,P1,WAIT;(P1)≠01H,则等待
例19将内部RAM从DATA单元开始的10个无符号数相加,相加结果送SUM单元保存。
设相加结果不超过8位二进制数,则相应的程序如下:
MOVR0,#0AH;设置循环次数
MOVR1,#DATA;R1作地址指针,指向数据块首地址
CLRA;A清零
LOOP:
ADDA,@R1;加一个数
INCR1;修改指针,指向下一个数
DJNZR0,LOOP;R0减1,不为0循环
MOVSUM,A;存10个数相加的和
例20利用位操作指令,模拟图3.6所示硬件逻辑电路的功能。
参考程序如下:
PR2:
MOVC,P1.1;(CY)←(P1.1)
ORLC,P1.2;(CY)←(P1.1)∨(P1.2)=A
ANLC,P1.0;(CY)←(P1.0)∧A
CPLC;(CY)←(P1.0)∧A=B
MOVF0,C;F0内暂存B
MOVC,P1.3;(CY)←(P1.3)
ANLC,/P1.4;(CY)←(P1.3)∧(P1.4)=D
ORLC,F0;(CY)←B∨D
MOVP1.5,C;运算结果送入P1.5
RET