




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用课程特点学习方法知识点既分散又连贯,组成结构和指令系统是根底;与电子技术尤其是数字电子技术关系密切;预习、复习;多动手硬件、软件实验;多看参考书(包括利用网上资料);其它上课、作业、答疑。单片机的概念单片机开展历史单片机的应用特点单片机的应用领域典型单片机产品开展趋势开发条件开发过程随着微电子技术的不断开展,微处理器芯片的集成度越来越高,已经可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、甚至A/D转换器等。人们把这种超大规模集成电路芯片称作“微控制器(MICROCONTROLLER),简称为单片机。单片机的出现,引起了仪器仪表结构的根本性变革,以单片机
2、为主体取代传统仪器仪表的常规电子线路,可以容易地将计算技术与测量控制技术结合在一起,组成新一代的所谓“智能化测量控制仪表以及其他各种智能化仪器设备。 单片机的概念单片机的开展历史初级阶段19741976FAIRCHILD两片集成芯片集成工艺限制低性能阶段19761978 INTEL MCS-48 高性能阶段19781982 INTEL MCS51更高性能阶段1983) 多种机型并行开展单片机的应用特点 软硬件结合、多学科交叉 应用现场环境恶劣电磁干扰、电源波动、 冲击振动、上下温湿度等 应用领域广泛且意义重大硬件软化-微控 制技术在工业自动化方面过程控制、数据采集和测控 技术、机器人技术、机械
3、电子计算机一体化技术仪器仪表方面测试仪表和医疗仪器-数字化、智能 化、高精度、小体积、低本钱、便于增加显示报警和自诊断功能在家用电器方面冰箱、洗衣机、空调机、微波炉、电视机、音像设备等信息和通信产品方面计算机的键盘、打印机、磁 盘驱动器; 机、复印机、 机、考勤机在军事方面飞机、大炮、坦克、军舰、导弹、火箭、雷达等单片机的应用领域典型单片机产品器件厂家美国:Intel、 Motorola、 Microchip 、Atmel 荷兰: Philips 德国:Siemens日本:Nec中国台湾:Winbond、SST典型单片机产品根据型号可确定单片机的存储器类型无ROM型 :80C31ROM型: 8
4、0C51EPROM型:87C51EEPROM型:89C51单片机的开展趋势性能不断提高CPU功能增强:速度、精度内部资源增多:A/D、D/A、EEPROM单片机的多品种:超微型化、低电压、低功耗CMOS工艺、空闲等待和掉电停机方式单片机系统开发条件单片机芯片开发工具资料手册 单片机系统的开发过程 通常开发一个单片机系统可按以下几个步骤进行。(1) 明确系统设计任务,完成单片机及其外围电路的选型工作。(2) 设计系统原理图和PCB板,经仔细检查PCB板后送工厂制作。 (3) 完成器件的安装焊接。(4)根据硬件设计和系统要求编写应用程序。(5)在线调试软硬件。(6) 使用编程器烧写单片机应用程序,
5、独立运行单片机系统。 8051单片机根本结构 8051单片机的特点 8051单片机可分为无ROM型和ROM型两种无ROM型的芯片,必须外接EPROM才能应用典型芯片为8031ROM型芯片又分为EPROM型典型芯片为8751、FLASH型典型芯片为89C51、掩膜ROM型典型芯片为8051 、一次性可编程ROMOne Time Programming,简称OTP的芯片典型芯片为97C51。 8051单片机的根本组成时钟电路SFR和RAM ROMCPU定时/计数器并行端口中断系统串行端口系 统 总 线时钟源T0 T1P0 P1 P2 P3TXD RXD INT0 INT11一个8位微处理器CPU。
6、 2片内数据存储器RAM和特殊功能存放器SFR。 3片内程序存储器ROM。 4两个定时/计数器T0、T1,可用作定时器,也可用以 对外部脉冲进行计 数。 5四个8位可编程的并行I/O端口,每个端口既可作输 入,也可作输出。 6一个串行端口,用于数据的串行通信。 7中断控制系统。 8内部时钟电路。 一个8051单片机包含以下部件8051单片机内部结构通道0驱动器通道2驱动器RAM地址锁存器RAM通道0锁存器通道2锁存器ROM/EPROMB寄存器程序地址寄存器缓冲器PC递增器程序计数器PC数据指针DPTRVCCGNDP1.0P1.7堆栈指针SPACCTMP2PSW通道3锁存器通道1锁存器通道1驱动
7、器通道3驱动器TMP1SCONTMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中断、串行口和定时器逻辑振荡器P3.0P3.7RSTEAALEPSENXTAL2XTAL1ALU(+5V)指令寄存器定时和控制逻辑指令译码器CPU即中央处理器,是单片机的核心部件,它完成各种运算和控制操作,CPU由运算器和控制器两局部组成。1运算器 运算器以算术逻辑单元ALU为核心,加上累加器ACC、暂存存放器TMP和程序状态字存放器PSW等所组成。ALU主要用于完成二进制数据的算术和逻辑运算,并通过对运算结果的判断影响程序状态字存放器PSW中有关位的状态。 D7 D0PSW:8051单
8、片机的CPUCYACF0RS1RS0OVPPSW中各位的意义如下:CY:进位标志。在进行加法或减法运算时,假设运算结果的最高位有进位或借位,CY=1,否那么CY=0,在执行位操作指令时,CY作为位累加器。AC:辅助进位标志。在进行加法或减法运算时,假设低半字节向高半字节有进位或借位, AC=1,否那么AC=0,AC还作为BCD码运算调整时的判别位。F0:用户标志。RS1和RS0:工作存放器组选择,如下表所示。RS1RS0工作寄存器组片内RAM地址00第0组 00H07H 01第1组08H0FH 10第2组10H17H 11第3组18H1FH OV:溢出标志。当两个带符号的单字节数进行运算,结果
9、超出-128+127的范围时,OV=1,表示有溢出,否那么OV=0表示无溢出。PSW中的D1位为保存位,对于8051来说没有意义,对于8052来说为用户标志,与F0相同。P:奇偶校验标志。每条指令指行完毕后,都按照累加器A中“1的个数来决定P值,当“1的个数为奇数时,P=1,否那么P=0。 2控制器 控制器包括程序计数器PC、指令存放器、指令译码器、数据指针DPTR、堆栈指针SP、缓冲器以及定时与控制电路等。控制电路完成指挥控制工作,协调单片机各局部正常工作。程序计数器PC:当一条指令按PC所指向的地址从程序存储器中取出之后,PC的值会自动增量,即指向下一条指令。堆栈指针SP:用来指示堆栈的起
10、始地址。80C51单片机的堆栈位于片内RAM中,而且属于“上长型堆栈,复位后SP被初始化为07H,使得堆栈实际上由08H单元开始。指令译码器:当指令送入指令译码器后,由译码器对该指令进行译码,CPU根据译码器输出的电平信号使定时控制电路产生执行该指令所需要的各种控制信号。数据指针存放器DRTR:它是一个16位存放器,由高位字节DPH和低位字节DPL组成,用来存放16位数据存储器的地址,以便对片外64kB的数据RAM区进行读写操作。P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VPDRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/
11、P3.5WR/P3.6RD/P3.7XTAL2XTAL1VSS12345678910111213141516171819208031805187514039383736353433323130292827262521222324VCCP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VppALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0 8051单片机引脚描述 电源引脚Vcc和Vss Vcc:电源端,接5V。 Vss:接地端。 时钟电路引脚XTAL1和XTAL2 XTAL1:接外部晶振和微调电容的一端,在片内它是 振荡器倒相放大器的输
12、入,假设使用外部TTL时钟时,该 引脚必须接地。 XTAL2:接外部晶振和微调电容的另一端,在片内它 是振荡器倒相放大器的输出,假设使用外部TTL时钟时, 该引脚为外部时钟的输入端。 地址锁存允许ALE 系统扩展时,ALE用于控制地址锁存器锁存P0口输出的 低8位地址,从而实现数据与低位地址的复用。 外部程序存储器读选通信号PSEN PSEN是外部程序存储器的读选通信号,低电平有效。 程序存储器地址允许输入端EA /VPP 当EA为高电平时,CPU执行片内程序存储器指令,但当 PC中的值超过0FFFH时,将自动转向执行片外程序存储 器指令。当EA为低电平时,CPU只执行片外程序存储器 指令。
13、复位信号RST 该信号高电平有效,在输入端保持两个机器周期的高电 平后,就可以完成复位操作。 输入/输出端口引脚P0,P1,P2和P3 P0口P0.0P0.7:该端口为漏极开路的8位准双向 口,它为外部低8位地址线和8位数据线复用端口, 驱动能力为8个LSTTL负载。 P1口P1.0P1.7:它是一个内部带上拉电阻的8位 准双向I/O口,P1口的驱动能力为4个LSTTL负载。 P2口P2.0P2.7:它为一个内部带上拉电阻的8位 准双向I/O口,P2口的驱动能力也为4个LSTTL负载。 在访问外部程序存储器时,作为高8位地址线。 P3口P3.0P3.7:为内部带上拉电阻的8位准双向 I/O口,
14、P3口除了作为一般的I/O口使用之外,每个引 脚都具有第二功能。特殊功能寄存器通用RAM区位寻址区00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特殊功能存放器地址外部ROM内部ROM(EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH外 部RAM(I/O口地址)0000HFFFFH内部数据存储器外部数据存储器程序存储器工作存放器区8051单片机的存储器配置 片内数据存储器RAM 。 片外数据存储器RAM 。 程序存储器ROM 。 程序存储器ROM地址空间为64kB,片外数据存储器RAM
15、也有64kB的寻址区,在地址上是与ROM重迭的。8051单片机通过不同信号来选通ROM或RAM。当从外部ROM中取指令时,采用选通信号PSEN,而从外部RAM中读写数据时那么采用读RD和写WR信号或来选通,因此不会因地址重迭而发生混乱。 8051在物理上有3个存储器空间片内数据存储器RAM 片内RAM有256个字节,其中00H7FH地址空间是直接寻址区,该区域内从00H1FH地址为工作存放器区,安排了4组工作存放器,每组都为R0R7,在某一时刻,CPU只能使用其中任意一组工作存放器,由程序状态字PSW中RS0和RS1的状态决定。 片内RAM的20H2FH地址单元为位寻址区,其中每个字节的每一位
16、都规定了位地址。每个地址单元除了可进行字节操作之外,还可进行位操作。 片内RAM的80HFFH地址空间是特殊功能存放器SFR区,对于51子系列在该区域内安排了21个特殊功能存放器,对于52子系列那么在该区域内安排了26个特殊功能寄器,同时扩展了128个字节的间接寻址片内RAM,地址也为80FFH,与SFR区地址重迭。 片内数据存储器中的位地址特殊功能存放器地址及功能表 片外数据存储器RAM 当片内RAM不能满足数量上的要求时,可通过总线端口和其他I/O口扩展外部RAM,其最大容量可达64KB字节。 在片内数据存储器中,数据区和扩展的I/O口是统一编址的,使用的指令也完全相同,因此,用户在应用系
17、统设计时,必须合理地进行外部RAM和I/O端口的地址分配,并保证译码的唯一性。程序存储器ROM 程序存储器ROM包括片内ROM和片外ROM两个局部。主要用来存放编好的用户程序和表格常数,它以16位的程序计数器PC作为地址指针,寻址空间为64KB。当EA接高电平时,单片机从片内ROM的4kB字节存储器区取指令,当指令地址超过0FFFH后,自动地转向片外ROM取指令。当EA接低电平时,所有的取指操作均对片外程序存储器进 行。8051单片机的CPU时序1 单片机的时钟电路2 振荡周期、时钟周期、机器周期和指令周期3 单片机指令的取指和执行时序 单片机的时钟电路单片机时钟电路通常有两种形式:1内部振荡
18、方式:8051单片机片内有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。把放大器与作为反响元件的晶体振荡器或陶瓷谐振器连接,就构成了内部自激振荡器并产生振荡时钟脉冲。2外部振荡方式:外部振荡方式就是把外部已有的时钟信号引入单片机内。 XTAL2XTAL1MCS-51C1C2CYSXTAL2XTAL1MCS-51+5VVSSTTL外部时钟源内部振荡方式 外部振荡方式P1P2S1振荡周期时钟周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2
19、P2P2P2P28051单片机各种周期的相互关系 振荡周期、时钟周期、机器周期、指令周期P21振荡周期:为单片机提供时钟信号的振 荡源的周期。2时钟周期:振荡源信号经二分频后形成 的时钟脉冲信号,为振荡周期的2倍。 3机器周期:完成一个根本操作所需的时 间,通常为12个振荡周期。4指令周期:指CPU执行一条指令所需要 的时间,一个指令周期通常含有14 个机器周期。 振荡周期1/12s 时钟周期1/6s 机器周期1s 指令周期14s 8051单片机外接晶振为12MHz时四个周期的具体值复位电路及复位状态1复位电路 单片机复位电路包括片内、片外两局部。外部复位电路就是为内部复位电路提供两个机器周期
20、以上的高电平而设计的。8051单片机通常采用上电自动复位和按键手动复位两种方式。单片机运行出错或进入死循环时,可按复位键重新运行。 C1 22F RST R11K+5V+5V803180518751(a)上电复位电路(b)按键复位电路 C1 22F RSTR2200803180518751 R11K上电复位和按键复位电路特殊功能寄存器初始状态特殊功能寄存器初始状态ACC00HTMOD00HPC0000HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100HP0P3FFHSBUF不定IP00000BSCON00HIE000000BPCON00
21、000B2复位状态8051单片机的并行I/O口 8051单片机有4个双向并行的8位I/O口P0P3。P0口为三态双向口,可驱动8个TTL电路,P1、P2、P3口为准双向口作为输入时,需要先向口锁存器写入1,故称为准双向口,其负载能力为4个TTL电路。1P0口的结构VCCP0.X锁存器读锁存器地址/数据控制D读引脚写锁存器内部总线QQMUXT2P0.XT1CL2P1口的结构 VCC P1.X锁存器读锁存器D读引脚写锁存器内部总线QQTP1.X内部上拉电阻CL3P2口的结构VCCP2.X锁存器读锁存器地址控制D读引脚 写锁存器内部总线QQMUXTP2.X内部上拉电阻CL4P3口的结构VCCP3.X
22、锁存器读锁存器第二输出功能D读引脚 写锁存器内部总线QQTP3.X内部上拉电阻第二输入功能CLP3.2P3.3位线引脚第二功能P3.010RXD(串行输入口)P3.111TXD(串行输出口)12INT0(外部中断0)13INT1(外部中断1)P3.414T0(定时器0的计数输入)P3.515T1(定时器1的计数输入)16WR(外部数据存储器写脉冲)17RD(外部数据存储器读脉冲)P3.7 P3.6 P3口的第二功能1地址总线AB:地址总线宽度为16位,由P0口经地址锁存器提供低8位地址A0 A7;P2口直接提供高8位地址A8A15。地址信号是由CPU发出的,故地址总线是单方向的。2数据总线DB
23、:数据总线宽度为8位,用于传送数据和指令,由P0口提供。3控制总线CB:控制总线随时掌握各种部件的状态,并根据需要向有关部件发出命令,主要有PSEN、WR、 RD信号。8051单片机的片外总线结构8051与外部存储器、I/O端口的连接8051单片机的指令系统指令和助记符 指令本身是一组二进制数代码,为了便于记忆,将这些代码用具有一定含义的指令助记符来表示,助记符一般采用英文单词的缩写 。例: 指令代码 助记符 功能 740A MOV A,#0AH 将十六进制数0AH放 入累加器A中 指令的字节数 一条指令由操作码和操作数组成。操作码指明执行什么操作,例如数的传送、加法、减法等。操作数那么表示这
24、条指令所完成的操作对象,即是对谁进行操作。操作数可以是一个数,或者是一个数所在的内存地址。指令由指令字节组成,不同的指令,指令的字节数不相同。有单字节指令、双字节指令和三字节指令。 寻址方式1 存放器寻址2 直接寻址3 立即寻址4 存放器间接寻址5 变址寻址6 相对寻址7 位寻址存放器寻址 以通用存放器的内容为操作数的寻址方式。通用存放器为A、B 、DPTR以及R0R7 。 例: CLR A ;A0 INC DPTR ;DPTRDPTR+1 ADDR5,# 20H ;R5#20H+R5直接寻址 指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR存放器和内部数据RAM。 例:
25、MOVPSW,# 20H ;PSW#20H MOVA,30H ;A(30H)立即寻址 指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。 例: MOVA,# 60H ;A#60H MOVDPTR,# 3400H;DPTR#3400H MOV30H,# 40H;30H单元#40H 存放器间接寻址 以存放器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于存放器间接寻址的存放器有R0,R1和DPTR。在存放器名称前面加一个符号来表示存放器间接寻址。 例: MOV A , R0 ;A (R0) MOVX DPT
26、R,A ;外部RAM(DPTR)A 片内RAM30HR034HA30H34H MOV A ,R0 操作示意图片外RAM2000HDPTR30HA2000H30HMOVX DPTR,A 操作示意图5 变址寻址 变址寻址是以某个存放器的内容为根本地址,然后在这个基址上加以地址的偏移量,才是真正的操作数地址。 例: MOVC A, A+DPTR ;AA+DPTR MOVC A, A+PC ;AA+PC MOVC A, A+DPTR 操作示意图程序存储器02F1HDPTRA0302H1EH11HA执行前1EHA执行后+相对寻址 以当前程序计数器PC的内容为根底,加上指令给出的一字节补码数偏移量形成新的
27、PC值的寻址方式。相对寻址用于修改PC值,主要用于实现程序的分支转移。 例: SJMP 08H ;PCPC+2+08H SJMP 08H 操作示意图程序存储器SJMP200AH08H2000H+208H执行前PC2000H执行后PC7 位寻址 位寻址只能对有位地址的单元作位寻址操作。位寻址其实是一种直接寻址方式,不过其地址是位地址。 例: SETB 10H ;将10H位置1 MOV 32H,C ;32H进位位C CLR PSW.4 ;将RS1位清0指令分类说明1 数据传送类指令2 算术运算类指令3 逻辑运算与循环类指令4 程序转移类指令5 子程序调用及返回指令6 位操作指令数据传送类指令 助记
28、符 说明 MOV、MOVX、MOVC 传送操作 XCH、XCHD、SWAP 交换操作 PUSH、POP 堆栈操作 源操作数寻址方式: 立即寻址、直接寻址、存放器寻址、 存放器间接寻址、变址寻址。 目的操作数寻址方式: 直接寻址、存放器寻址、存放器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影 响标志位。直接地址direct累加器A直接地址direct间接地址Ri寄存器Rn立即数#data寄存器DPTR8051单片机片内数据传送图1 以累加器为目的操作数的指令4条 MOV A,Rn MOV A,directMOV A,RiMOV A,#data 这组指令功能将源操作数指定内容送
29、到A中。 2 以存放器Rn为目的操作数的指令 3条 MOV Rn,A MOV Rn,direct MOV Rn,#data 这组指令功能是把源操作数指定的内容送入当前工作存放 器,源操作数不变。 3 以直接地址为目的操作数的指令5条MOV direct,AMOV direct,RnMOV direct1,direct2MOV direct,RiMOV direct,#data 这组指令功能是把源操作数指定的内容送入由直接地址指出的片内存储单元。例: MOV 20H,AMOV 20H,R1MOV 20H,30HMOV 20H,R1MOV 0A0H,#34HMOV P2,#34H4 以间接地址为目
30、的操作数的指令3条MOV Ri,A MOV Ri,directMOV Ri,#data 功能:把源操作数指定的内容送入以R0或R1中内容为 地址的片内存储单元。例:MOV R0,AMOV R1,20HMOV R0,#34H5 十六位数的传递指令1条MOV DPTR,#data168051是8位机,这是唯一的一条16位立即数传递指令。功能:将一个16位的立即数送入DPTR中去。其中高8位 送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H执行完了之后DPH中的值为12H,DPL中的值为34H。如果我们分别向DPH,DPL送数,那么结果也一样。 如下面两条指令: MOV DPH,#
31、35H MOV DPL,#12H。 相当于执行了 MOV DPTR,#3512H。6 累加器A与片外RAM之间的数据传递类指令(4条) MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A说明: 1.在8051中,与外部RAM存储器打交道的只可以是累加器A 。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部那么不行。 比方,要将外部RAM中某一单元设为0100H单元的数据送入另一个单元设为0200H单元,也必须先将0100H单元中的
32、内容读入A,然后再送到0200H单元中去。 2.要读或写外部RAM,必须要知道RAM的地址,采用DPTR时,地址被直接放在DPTR中的。采用RiR0或R1时,由于Ri只是8位的存放器,所以只提供低8位地址。高8位地址由P2口来提供。 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。MOV DPTR,#0100HMOVX A,DPTRMOV DPTR,#0200HMOVX DPTR,A7 读程序存储器指令2条 MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令
33、也被称为查表指 令,常用此指令来查一个已做好在ROM中的表格说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。例:有一个数在R0中,要求用查表的方法确定它的平方值此 数的取值范围是0-5MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR ORG 0100HDB 0,1,4,9,16,25 8 堆栈操作2条PUSH directPOP direct 第一条为压入指令,将direct中的内容送入堆栈中,第二条为 弹出指令,将堆栈中的内容送回到direct中。例: MOV SP,#10H MOV 40H,#50H PUSH 40H POP 30H 执
34、行第一条PUSH 40H指令是这样的:将SP中的值加1,变为11H,然后将40H中的值送到11H单元中,因此执行完本条指令后,内存11H单元的值是50H,同样,执行POP 30H时,是将11H中的值送入到30H单元中,即执行完本条指令后,30H单元中的值变为50H。 9 交换指令5条XCH A,RnXCH A, directXCH A, RiXCHD A, RiSWAP A例: A中的内容为34HMOV R6, #29HXCH A, R6SWAP AXCH A, R6 XCHD A, R0算术运算类指令 主要用于8位无符号数运算;也可用于带符号数运算。包括:加、减、乘、除、加1、减1运算指令,
35、指令操作将影响PSW中有关状态位。 1 加法指令ADD A,#data ADD A,direct ADD A,Rn ADD A,Ri 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。1不带进位位的加法指令4条例1:ADD A,#47HADD A,34HADD A,R7ADD A,R0例2:MOV A,#0AEH ;-82ADD A,#81H ;-127那么执行完本条指令后,A中的值为2FHPSW中状态位 C=1,AC=0,OV=1,P=1对无符号数:结果为12FH;对带符号数:OV=1,有错。2带进位位的加法指令4条ADDC A,Rn; ARnCYAADDC A,direct; A
36、(direct )CYAADDC A,Ri; A(Ri)CYAADDC A,#data; AdataCYA用途:将A中的值和其后面的值以及进位位C中的值相加, 最终结果存在A,常用于多字节数运算中。例: 先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1那么到了PSW中的CY位了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以最终的结果是4107H。1067H+30A0H0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H30A0
37、H4107H又例: 先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,结果是40H,所以最终的结果是4087H。1067H+3020H0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H3020H4087H3 加1指令5条INC A;A+1A,影响P标志INC Rn;Rn+1RnINC direct;(direct)+1(direct)INC Ri;(Rn)+1(Rn)INC DPTR;DPTR+1DPTR功能很简单,就是将后面目
38、标中的值加1。例:A=12H,R0=33H,(21H)=32H, (34H)=22H,DPTR=1234H。连续执行下面的指令: INC A INC R0 INC 21H INC R0 INC DPTR; A=13H; R0=34H;21H=33H;34H=23H; DPTR=1235HDA A在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用来对BCD码加法运算结果进行自动修正。例:A=00010101代表十进制数15 ADD A,#84 十进制调整指令1条; A=1DH,按二进制规律加; A=23H,按十进制规律加DA A2 减法指令8条SUBB A,Rn ; ARnCYASUBB
39、 A,direct ; A(direct )CYASUBB A,Ri ; A(Ri)CYASUBB A,#data; AdataCYA将A中的值减去源操作数所指内容以及进位位C中的值,最终结果存在A中。说明:没有不带借位的减法指令,如果需要做不带位的减法指令在做第一次相减时,只要将CY清零即可。1 带借位的减法指令4条2 减1指令4条DEC A ;A-1A,DEC Rn;Rn-1RnDEC direct ;(direct)-1(direct)DEC Ri;(Rn)-1(Rn) 与加1指令类似。 3 乘法指令1条MUL AB ;ABBA此指令的功能是将A和B中的两个8位无符号数相乘,结果将为16
40、无符号数。其中高8位放在B中,低8位放在A中。在乘积大于FFH时,0V置1,否那么OV为0;而CY总是0。例: A=4EH,B=5DH,执行MUL AB指令后,乘积是1C56H,所以在B中放的是1CH,而A中放的那么是56H。 4 除法指令1条DIV AB;AB的商A,余数B此指令的功能是将A中的8位无符号数除B中的8位无符号数,商放在A中,余数放在B中。如果在做除法前B中的值是00H,也就是除数为0,那么0V=1。例:A=11H,B=04H,执行DIV AB指令后,结果为:A=04H,B=1。逻辑运算与循环类指令主要用于对2个操作数按位进行逻辑操作,结果送到A或直接寻址单元。 主要操作 与、
41、或、异或、移位、取反、清零等。 对标志位的影响 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。1 逻辑或指令6条ORL A,Rn ;ARnAORL A,direct ;A(direct)AORL A,Ri ;A(Ri)AORL A,#data ;AdataAORL direct,A ;(direct)A(direct)ORL direct,#data ;(direct)data(direct)影响P标志例:71H和56H相或:01110001 71H 01010110 56H 01110111 即77H后两条指令,假设直接地址为I/O端口,那么为“读改写操作。2 逻辑与指令
42、6条ANL A,Rn ;ARnAANL A,direct ;A(direct)AANL A,Ri ;A(Ri)AANL A,#data ;AdataAANL direct,A ;(direct)A(direct)ANL direct,#data ;(direct)data(direct)影响P标志例:71H和56H相与:01110001 71H 01010110 56H 01010000 即50H后两条指令,假设直接地址为I/O端口,那么为“读改写操作。例:71H和56H相异或: 01110001 71H ) 01010110 56H 3 逻辑异或指令6条XRL A,Rn ;A RnAXRL
43、A,direct ;A (direct)AXRL A,Ri ;A (Ri)AXRL A,#data ;A dataAXRL direct,A ;(direct) A(direct)XRL direct,#data ;(direct) data(direct)影响P标志00100111 即27H后两条指令,假设直接地址为I/O端口,那么为“读改写操作。 4 取反与清0指令2条取反:CPL A ;/AA例:假设A=5CH, 执行CPL A 结果:A=A3H清0:CLR A ;0A5 循环移位指令4条RL ARR ARLC ARRC AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0
44、后两条指令,影响P和CY标志。例:假设A=5CH,CY=1,执行RLC A后, 对RLC、RRC指令,在CY=0时RLC相当于乘以2RRC相当于除以2结果:A=B9H,CY=0,P=10101 110011011 10010综合举例:ANL A,#0FH ;屏蔽A的高4位SWAP AANL P1,#0FH ;清P1口高4位ORL P1,A ;P1口高4位输出A的低4位; 把累加器A中的低4位状态,通过P1口的高4位输出, P1口的低4位状态不变。程序转移类指令此类指令一般不影响PSW。包括以下类型:无条件转移和条件转移相对转移和绝对转移长转移和短转移调用与返回指令 无条件转移类指令4条 短转移
45、类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 间接转移指令:JMP A+DPTR1上面的前三条指令,统统理解成:PC值改变,即跳转到一个标号处。 那么他们的区别何在呢?跳转的范围不同。 短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel转移范围:2KB64KB-128+127指令构成不同。 AJMP、LJMP后跟的是绝对地址, 而SJMP后跟的是相对地址。 指令长度不同 原那么上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。散转指令:JMP A+DPTR 这条指令的用途也
46、是跳转,转到什么地方去呢?这可不能由标号简单地决定了。 转移地址由A+DPTR形成,并直接送入PC。指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为散转指令,多用于多分支程序结构中。2第四条指令与前三条指令相比有所不同 条件转移指令8条条件转移指令是指在满足一定条件时进行相对转移,否那么程序继续执行本指令的下一条指令。一、判A内容是否为0转移指令2条 JZ rel ;如果A=0,那么转移,否那么顺序执行。 JNZ rel ;如果A0,就转移。转移到相对于当前PC值的8位移量的地址去。即: 新的PC值=当前PC+偏移量rel在编写汇编语言源程序时,可以直接写成: JZ
47、 标号 ;即转移到标号处。二、比较不等转移指令4条CJNE A,#data,rel CJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,rel此类指令的功能是将两个操作数比较,如果两者相等,就顺序执行,如果不相等,就转移。同样地,使用时,可以将rel理解成标号,即:CJNE A,#data,标号CJNE A,direct,标号CJNE Rn,#data,标号CJNE Ri,#data,标号利用这些指令,可以判断两数是否相等。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能:如果两数不相等,那么CPU还会用CY进位位来反映哪个数大,哪
48、个数小。如果前面的数大,那么CY=0,否那么CY=1。因此在程序转移后再次利用CY就可判断出哪个数大,哪个数小了。三、减1不为0转移指令2条DJNZ Rn,relDJNZ direct,relDJNZ指令的执行过程是这样的:它将第一个参数中的值减1,然后看这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移到第二个参数所指定的地方去。例: LOOP: DJNZ 10H,LOOP 例: MOV 23H,#0AH CLR ALOOP: ADD A,23H DJNZ 23H,LOOP SJMP $上述程序段的执行过程是:将23H单元中的数连续相加,存至A中,每加一次, 23H单元中的数值减
49、1,直至减到0,共加23H次。 子程序调用与返回指令一、调用指令2条 LCALL addr16 ;长调用指令(3字节) ACALL addr11 ;短调用指令(2字节)上面两条指令都是在主程序中调用子程序,两者的区别:对短调用指令,被调用子程序入口地址必须与调用指令下一条指令的第一字节在相同的2KB存储区之内。使用时可以用标号表示子程序首地址二、返回指令 2条子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。RET;子程序返回指令RETI;中断子程序返回指令两者不能互换使用。空操作指令1条 NOP空操作,就是什么事也不干,停一个周期,一般用作短时间的延时。位操作指令805
50、1单片机的硬件结构中,有一个位处理器又称布尔处理器,它有一套位变量处理的指令集,包括位变量传送、逻辑运算、控制程序转移等。在8051中,有一部份RAM和一部份SFR是具有位寻址功能的。位操作区:内部RAM的20H-2FH这16个字节单元,即128个位单元(位地址空间位007FH);可以位寻址的特殊功能存放器。 以PSW中位4 RS1 为例。直接(位)地址方式:如 D4H;点操作符号方式:如 PSW.4,D0H.4;位名称方式:如 RS1;用户定义名方式:如用伪指令 bitSUB.REG bit RS1定义后,可用SUB.REG代替RS1。位地址表达方式 位传送指令2条 MOV C,bit;bi
51、t CMOV bit,C;C bit这组指令的功能是实现位累加器CY和其它位地址之间的数据传递。例:MOV C,P1.0;将P1.0的状态送给C。 MOV P1.0,C ;将C中的状态送到P1.0 ;引脚上去。位清0和置位4条 位清0指令 CLR C ;使CY=0 CLR bit ;使指令的位地址等于0。 例:CLR P1.0 ;即使P1.0变为0 位置1指令 SETB C ;使CY=1 SETB bit ;使指定的位地址等于1。 例:SETB P1.0 ;使P.0变为1 位逻辑运算指令 6条 位与指令 ANL C,bit ;Cy与指定位的值相与,结果送CyANL C,/bit ;先将指定的位
52、地址中的值取出后取反,再和Cy相与,结果送回Cy。但注意:指定的位地址中的值本身并不发生变化。例:ANL C,/P1.0位取反指令 CPL C ;使Cy值取反。CPL bit ;使指定的位的值取反。例:CPL P1.0位或指令 ORL C,bitORL C,/bit 位条件转移指令5条 判Cy转移指令 JC relJNC rel 第一条指令的功能是如果Cy=1就转移,否那么就顺序执行。 第二条指令那么和第一条指令相反,即如果Cy=0就转移,否那么就顺序执行。 判位变量转移指令 JB bit,relJNB bit,rel JBC bit,rel第一条指令:如果指定的bit=1,那么转移,否那么顺
53、序执行,第二条指令功能相反。第三条指令是如果指定的bit=1,那么转移,并把该位清0,否那么顺序执行。 汇编语言程序设计汇编语言格式与伪指令汇编语言源程序由以下两种指令构成汇编语句指令语句伪指令指示性语句汇编语句的格式: 标号:操作码操作数;注释3. 伪指令:控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。 常用的伪指令 ORG 定位目的程序的起始地址。 格式:ORG 表达式 表达式必须为16位地址值。如:ORG 0000H END 汇编语言程序结束伪指令。 一定放在程序末尾!常用的伪指令 EQU 赋值伪指令。 格式: 字符名称 EQU 数值或汇编符号 例:AAEQU30HK1E
54、QU40HMOV A,AA; (30HAMOV A,K1;40HA常用的伪指令DB 从指定单元开始定义存储假设干个字节的数据或ASCII码字符,常用于定义数据常数表。格式:DB 字节常数 或 ASCII字符例:ORG 1000HDB34H,0DEH,A,BDB0AH,0BH,20常用的伪指令DW 从指定单元开始定义存储假设干个字的数据 或ASCII码字符。 格式:DW字常数或ASCII字符 例: ORG 2000HDW1234H,BDW0AH,20常用的伪指令 BIT 位地址符号指令。 把位地址赋于规定的字符名称。 格式:字符名称BIT位地址例:ABCBITP1.1QQBITP3.2汇编语言程
55、序设计应用 在进行应用汇编程序设计时,首先要确定算法,算法的优劣很大程度上决定了程序的效率,另外还要尽可能画出程序框图,以便于分析程序流程。定点数运算子程序定点数:小数点固定的数。 可以把小数点固定在数值的最高位之前, 对于有符号的数,小数点应在符号位与最高数值位之间,即: 符号位 数值局部 也可以把小数点固定在最低数值位后面,即: 符号位 数值局部定点数表示方式(1)原码表示法 符号位为0表示正数,符号位为1表示负数 如:二进制数00110100表示十进制数+52二进制数10110100表示十进制数-52 (2)补码表示法正数的补码表示与原码相同, 即最高位为0, 其余位为数值位。负数用补码
56、表示时, 最高位为1, 数值位要按位取反后再在最低位加1,才是该负数的数值。 例如:十进制数+51的二进制补码为00110011十进制数 -51的二进制补码为11001101 例: 双字节数取补子程序。 将(R4R5)中的双字节数取补,结果送R4R5。 CMPT:MOV A,R5 CPL A ADD A,#1 MOV R5,A MOV A,R4 CPL A ADDC A,#0 MOV R4,A RET例: 双字节原码数左移一位子程序。 将(R2R3)左移一位,结果送R2R3,不改变符号位, 不考虑溢出。 DRL1:MOV A,R3CLR CRLC AMOV R3,AMOV A,R2RLC AM
57、OV ACC.7,C ;恢复符号位MOV R2,ARET例: 双字节原码右移一位子程序。 将(R2R3)右移一位,结果送R2R3,不改变符号位。 DRR1:MOV A,R2MOV C,ACC.7 ;保护符号位CLR ACC.7 ;移入0RRC AMOV R2,AMOV A,R3RRC AMOV R3,ARET例: 双字节补码右移一位子程序。 将(R2R3)右移一位,结果送R2R3,不改变符号位。CRR1:MOV A,R2MOV C,ACC.7 ;保护符号位RRC A ;移入符号位MOV R2 ,AMOV A,R3RRC AMOV R3,ARET例:双字节无符号数加法子程序。 将(R2R3)和(
58、R6R7)两个无符号数相加,结果送R4R5。NADD: MOV A,R3ADD A,R7MOV R5,AMOV A,R2ADDC A,R6MOV R4,ARET例:双字节无符号数减法子程序。 将(R2R3)和(R6R7)两个双字节数相减,结果送R4R5。NSUB1:MOV A,R3CLR CSUBB A,R7MOV R5,AMOV A,R2SUBB A,R6MOV R4,ARET例:双字节原码加减运算子程序。 (R2R3)和(R6R7)为两个原码表示的数,最高位为符号位,求(R2R3)(R6R7)结果送R4R5。程序中DADD为原码加法子程序入口,DSUB为原码减法子程序入口。出口时CY=1发
59、生溢出,CY=0为正常。 DSUB:MOV A, R6 ;减法入口CPL ACC.7 ;取反符号位MOV R6, A DADD: MOV A, R2 ;加法入口MOV C, ACC.7MOV F0, C ;保存被加数符号位XRL A, R6MOV C, ACC.7 ;C=1,异号,C=0,同号MOV A, R2 CLR ACC.7 ;清0被加数符号MOV R2, AMOV A, R6CLR ACC.7 ;清0加数符号MOV R6, AJC DAB2ACALL NADD ;同号执行加法MOV A, R4JB ACC.7, DABEDAB1: MOV C, F0 ;恢复结果的符号MOV ACC.7
60、, CMOV R4, ARETDABE: SETB CRET ;溢 出DAB2: ACALL NSUB1 ;异号执行减法MOV A, R4JNB ACC.7, DAB1ACALL CMPT ;不够减,取补CPL F0 ;符号位取反SJMP DAB1例: 无符号二进制乘法程序。 将(R2R3)和(R6R7)两个双字节无符号数相乘,结果送R4R5R6R7。NMUL:MOV R4,#0MOV R5,#0MOV R0,#16 ;16位二进制数CLR CNMLP:MOV A,R4 ;右移一位RRC AMOV R4,AMOV A,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6,AMO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一活动包粽子活动方案
- 六一活动寻宝活动方案
- 六一配音活动方案
- 六年级数学公益活动方案
- 兰州双扣比赛活动方案
- 兰州摄影活动策划方案
- 共享田园活动方案
- 共唱红色经典活动方案
- 关于公司种植活动方案
- 关于厂庆活动方案
- 47届世赛江苏省选拔赛轨道车辆技术项目技术工作文件v1.1
- 《供应链管理》课件 第7章 供应链运输管理
- 城市综合管廊安全培训
- 小学数学课程体系介绍
- 湖北省武汉市2024年七年级上学期期中数学试题【附参考答案】
- 脱硫检修工个人工作总结
- 山西省2022年中考语文真题试卷(含答案)
- 甘肃省2024年中考生物试卷四套合卷【附答案】
- 骨筋膜室综合征讲课
- 山东省青岛胶州市2024-2025学年高一数学下学期期末考试试题
- 安装排水管合同模板
评论
0/150
提交评论