版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章单片机原理与应用实验项目设计1.1单片机系统概述早期SingleChipMicrocomputer的直译,名字忠实地反映了早期单片微机的形态和本质。单片微型计算机简称单片机,又称微控制器。CPUROMRAM并行I/O(即并行输入输出)接口串行I/O接口定时器/计数器中断控制系统时钟总线单片机
鉴于它完全作嵌入式应用,故又称为嵌入式微控制器EmbeddedMicrocontroller)。通用型专业型单片机早期单片机为通用型单片微机,该类单片机可以通过不同的外围部件扩展来满足不同的应用对象要求。在芯片里只集成了该应用所需要的部件,无用部件可以去掉。降低成本简化芯片的结构提高芯片的可靠性单片机指芯片本身,集成的是一些基本组成部分,是典型的嵌入式系统的主要构成单元,只能作为嵌入式应用,即嵌入到对象环境、结构、体系中作为其中的一个智能化控制单元。包括了满足对象(如洗衣机)要求的全部硬件电路和应用软件,含构成各种嵌入式应用的电路系统。单片机系统单片机的开发调试的工具,有单片机实物开发板、仿真器等,设计人员必须通过这些开发系统来实现单片机应用系统的硬、软件设计和调试。单片机开发系统机器语言(MachineLanguage)汇编语言(Assemble)高级语言(HighLevelLanguage)编程语言机器语言编写的程序可以让单片机直接执行和存储。称之为源程序,源程序是不能被计算机直接执行的。汇编语言编写的程序源程序编译程序目标程序汇编语言程序对单片机的硬件有充分的了解才能利用它来编写程序,汇编程序可以高效率利用计算机资源。目标程序占用内存少,执行速度快。适合于自动测控系统反应快速、结构紧凑的要求。C语言不面向机器硬件,对单片机硬件不太了解也能进行程序编写,程序容易掌握,通用性好编译程序系统开销大,目标程序占用内存多,且执行时间比较长多用于科学计算、工业设计、企业管理。电子计算机的发展历史
1、第一代(1946—1958):电子管计算机。用于:科学计算2、第二代(1958—1964):晶体管计算机。用于:科学计算、数据处理、工业控制3、第三代(1964—1971):集成电路计算机。用于:科学计算、数据处理、工业控制、事务管理。4、第四代(1971—):大规模集成电路计算机。用于:计算量极大的高尖技术及国民经济领域。5、第五代:智能型计算机正在研制中。用于:模拟人的智能,识别图像、语言和物体,联想、推理、解答问题,使用自然语言进行会话处理。单片机的发展历史单片机的核心部分:微处理器的发展已经历了五代。第一代(1971—1973):4位→8位(初级)第二代(1973—1975):8位(初级)第三代(1975—1978):8位单片机,如IntelMCS-48系列单片机第四代(1978—80年代中期):8位高档单片机如IntelMCS-51系列单片机→16位、32位第五代(80年代中期至今):→64位
MCS-51单片机系列MCS-51系列基本产品型号:8051、8031、8751称为51子系列。不同型号MCS-51单片机CPU处理能力和指令系统完全兼容,只是存储器和I/O接口的配置有所不同。
硬件配置基本配置:1.
8位CPU2.片内ROM/EPROM、RAM3.片内并行I/O接口4.片内16位定时器/计数器5.片内中断处理系统6.片内全双工串行I/O口ROM形式片内ROM/B片内RAM/B寻址范围/BI/O中断源/个片内ROM片外EPROM外接ROM计数器/个并行口/个串行口/个8051875180314K1282*64K2*16b4*8b1580C5187C5180C314K1282*64K2*16b4*8b1580C52875280328K2562*64K2*16b4*8b1680C55287C55280C5328K2562*64K2*16b4*8b115MCS-51系列单片机性能表新一代80C51增加了一些外部接口功能单元,如A/D,WDT等。PHILIPS:80C51ATMEL(FlashROM):AT89C51CHMOS:低功耗,高速度和高密度待机和掉电保护1.自动控制单片机已在工业过程控制、机床控制、机器人控制、汽车控制以及飞行器制导系统等方面得到广泛的应用。2.智能仪器仪表由于单片机具有超微型化的特点,并且有无可比拟的高性能价格比,从而为仪器仪表的智能化提供了可能。3.数据采集系统由于单片机可提供多路A/D输入通道,因此很适用于模拟量(温度、压力及流量等)输入采样系统。单片机的应用
4.计算机外设控制器
智能化键盘、智能化显示器、智能化打印机、智能化软盘和硬盘驱动器、智能化磁带驱动器及智能化绘图仪等,均可用单片机作为控制器。5.家用电器电饭锅、电子游戏机、电视机、录音机、组合音响、录像机、洗衣机、电冰箱以及电子玩具等,都使用单片机进行控制。总之,单片机由于体积小、价格低、性能优越、可靠性高,已广泛地渗透到社会、生产、服务等领域,其应用前景是无限光明的;所以,工程技术人员有必要很好地掌握单片机原理及系统设计技术。1.251单片机8051内部功能逻辑图8051内部结构图
8051引脚图8051单片机有40根引脚,有些引脚功能是复用的,即一个引脚会有1个以上的功能。8051内部RAM(低128个单元)结构图从地址00H到1FH的32个单元叫寄存器区,该区又分成了4组寄存器区,即4个工作寄存器0区、1区、2区和3区。每组都有8个寄存单元(每单元8位),以R0~R7作寄存器名。从单元地址20H到2FH的16个单元称为位寻址区,这16个单元既可以按单元进行读写操作,也可以对单元里的每个位进行单独的读写操作,16个单元共128位,每个位也编了一个唯一位地址00H到7FH。从单元地址30H到7FH共80个单元称为用户RAM区,用户可以灵活使用,一般常用作堆栈区。工作寄存器地址表
内部RAM的高128个地址单元称为专用寄存器SFR区,对应的单元地址从80H到FFH。虽然有128个地址,但是很多地址都没有用到,这些地址实际上对应于单片机内的一些重要硬件的寄存器。
具体这高128单元地址中,51单片机用到了其中的21个单元地址,其中又有11个单元是可以位寻址和位操作的。
程序计数器PC是一个16位的计数器,不占用RAM地址,一般不计作专用寄存器,其内容为将要执行的指令所在ROM单元的地址(即下一条指令地址),CPU总是按PC的指示从ROM对应单元中读取指令执行,由于PC可自动加1,因此CPU执行程序一般是顺序方式,而当发生转移、子程序调用、中断和复位等操作,PC被强制改写,程序执行顺序也发生改变,复位时,PC=0000H,所以51单片机总是从ROM的0000H第一个单元开始执行程序。8051单片机特殊功能寄存器表堆栈51单片机的堆栈属于向上生长,即数据存入堆栈时,是按照单元地址增大的方向进入堆栈进行存储的。
进出堆栈按照先进后出的原则。同时和堆栈操作相关的一个特殊功能寄存器是堆栈指针SP。SP里存放的是堆栈栈顶的存储单元地址。
数据如何进站保存呢,首先SP会自动加一,然后再把数据写入SP中地址所对应的RAM单元中。数据如何从堆栈取出呢,单片机会从堆栈指针SP中地址对应的RAM单元中读出数据。然后再把SP自动减一,这样就为读取下一个数据做好了准备。
单片机复位时,堆栈指针SP等于07H,但是我们知道,07H地址对应的存储单元是属于工作寄存器区的,因此,我们在程序初始化时,应该将SP初始化为30h以后的地址,这样就可以避免堆栈占用宝贵的工作寄存器区和位地址区。保留的存储单元8051单片机内部有4KB的程序存储器ROM。其单元地址为0000H到0FFFH。程序存储器ROM通常用来存放用户的程序,以及相关需要永久保存的表格和参数数据。51单片机存储器结构特点
8051单片机在物理上有4个存储器,分别为片内和片外的程序存储器、片内和片外的数据存储器。ROM和RAM是分开编址的。同时对于RAM,片内RAM和片外RAM也是分开编址的。但是需要注意的是,片内ROM和片外ROM却是统一编址。因此在逻辑上,51单片机只有3个地址空间。8051的P3.X的电路结构图8051的P2.X的电路结构图8051的P1.X的电路结构图8051的P0.X的电路结构图MCS—51共有四个8位的双向并行I/O口,分别记作P0、P1、P2和P3。实际上它们已被归入专用寄存器之列。P3各口线的第二功能时序
80C51单片机的时钟频率范围可以为1.2MHz~12MHz之间,时钟信号可以内部产生,也可以外部输入,51单片机原始的时钟振荡脉冲信号不能直接使用,要经过多次分频后才会送给其他硬件使用。
我们可以把51单片机的时序分为几个定时单位:从小到大依次为时钟周期、机器周期和指令周期。时钟周期是指振荡频率的倒数。机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是指一条指令的执行时间,以机器周期为单位,可包含1个~4个机器周期。RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期,即2个机器周期以上。80C51单片机一些寄存器的复位状态(a)8031(b)8051/8751最小应用系统
8031由于内部没有ROM,所以要想工作必须外接ROM,其最小硬件系统配置如图(a)所示,而对于8051(内部配有ROM)、8751(内部配有EPROM),可以不用外接ROM,其最小应用系统的配置如图(b)所示。单片机的指令系统[标号:]操作码
操作数1,操作数2[;注释]换行表示一条指令结束。
标号表示指令的符号地址;操作码表示指令的功能;操作数指明指令的操作对象,可以是数据、地址、寄存器名和约定的符号;注释行主要说明指令在程序中的作用。其中,操作码和操作数是指令主体,标号和注释可以没有。
由于单片机只能存储和执行二进制代码表示的机器指令,所以每一条汇编指令都有一条唯一机器指令与其对应。机器指令由操作码、操作数1和操作数2组成,如下所示:
操作码[操作数1][操作数2]
立即寻址方式是指在指令中直接给出了实际的操作数也叫做立即数。立即寻址方式一般用于为存储器和寄存器赋常数初值。在指令中用井号表示立即寻址,比如指令“MOVA,#40H”中操作数#40H就是立即寻址方式,指令直接给出了8位操作数40H,该指令功能是把立即数40H送给8位累加器A存储,相当于给累加器A赋常值。“MOVDPTR,#2100H”中的立即数2100H为16位,功能是把立即操作数2100H送给16位数据指针寄存器DPTR存储。
直接寻址方式在指令中不直接给出操作数,而是给出操作数所在存储单元的地址。指令要通过该地址找到对应的存储单元取出操作数,再去执行相关的操作。比如指令“MOVA,40H”中的40H,注意前面没有加#号,所以不是立即寻址,而是属于直接寻址,指令中40H表示内部RAM单元的地址,该指令首先要从地址为40H的内部RAM单元中取出里面的8位二进制操作数,然后再把内部RAM单元中的该8位操作数送给累加器A存放。
寄存器寻址方式在指令中给出寄存器的名字,实际操作数就在该寄存器中。比如指令“MOV
A,R0”中,A和R0都是寄存器寻址方式,对应操作数都在相应名字的寄存器中存放,该指令功能是把工作寄存器R0里的8位操作数送给累加器A。
寄存器间接寻址方式,该方式真正的操作数在存储器中,寄存器里为操作数所在存储器单元的地址,该种寻址方式要在寄存器的名字前加一个@。例如指令“MOVA,@R0”中,@R0就为寄存器间接寻址,真正操作数在内部RAM单元中,工作寄存器R0里存放的是操作数所在内部RAM单元的地址。
变址间接寻址方式,该种方式和寄存器间接寻址方式类似,数据在存储器中,指令给出的寄存器中存放的是操作数的基地址和偏移量,操作数所在存储单元的地址为基地址和偏移量的和。比如指令“MOVC
A,@A+DPTR”中@A+DPTR为变址间接寻址方式,真正的操作数在存储器ROM中,A和DPTR里存放的是操作数的偏移量和基地址,操作数所在存储器ROM单元的完整地址等于A和DPTR里地址的和。
位寻址方式,该种方式操作数为一位二进制数据,指令中的表示方法有4种:1)直接使用位地址;如:PSW的位6可表示为0D6H;2)用位名称表示,如上面位的名称为AC;3)也可以用字节地址加位数表示,如上面位可以用0D0H.6表示;4)也可以用专用寄存器符号加位数表示,如上面位可以用PSW.6表示。
相对寻址,转移指令中会介绍。51单片机的指令大体可以分为数据传送、数据操作、布尔处理和程序控制等几种类型
实现片内RAM数据传送的最核心指令是MOV,指令格式为:MOV
目的操作数,源操作数MOVA,Rn;A←Rn,Rn=R0~R7MOVA,direct;A←(direct)MOVA,@Ri;A←(Ri),Ri=R0、R1
MOVA,#data;A←dataMOVRn,direct;Rn←(direct)MOV@Ri,direct;(Ri)←(direct)MOVdirect1,direct2;(direct1)←(direct2)
片外RAM传送指令MOVX,该指令实现片外数据存储器和A累加器之间的数据传送,指令格式为“MOVX
目的操作数,源操作数”,源或目的操作数中有一个必须是累加器A,片外数据存储器必须用寄存器间接寻址方式。寻址寄存器可以用DPTR,DPTR是16位数据指针寄存器,这样可以寻址64KB片外RAM空间,其读写指令如下:MOVX
A,@DPTR;A←(DPTR)
(读)MOVX
@DPTR,A;(DPTR)←A
(写)
也可以用工作寄存器R0或R1作为寻址寄存器,由于R0或R1只有8位,所以只能寻址256个字节的片外RAM空间,需要注意的是,用工作寄存器寻址时,R0或R1提供的是片外RAM地址的低8位地址,该低8位地址信息从单片机的P0口输出给片外RAM,而片外RAM的高8位地址由单片机的P2口另行提供,其读写指令如下:MOVXA,@Ri;A←(P2Ri)
(读,Ri为R0或R1)MOVX@Ri,A;(P2Ri)←A
(写,Ri为R0或R1)
程序存储器ROM数据读取的指令是MOVC,可以实现从程序存储器读取数据到累加器A,指令中目的操作数必须是累加器A,源操作数只能使用变址间接寻址方式,其中基地址寄存器可以用DPTR或程序计数器PC,变址寄存器用累加器A。
如指令“MOVC
A,@A+DPTR”由于采用DPTR作为基地址,可以把64KB范围ROM空间里的某个表格数据查出来送给累加器A,所以该条指令常被称为远程查表指令;
而指令“MOVC
A,@A+PC”中把程序计数器PC作为基地址,该条指令又称为近程查表指令。交换指令XCH
A,Rn;XCH
A,@Ri;Ri只能为R0、R1XCH
A,direct;XCHDA,@Ri;Ri只能为R0、R1SWAPA堆栈操作相关的指令是PUSH和POP设A=02H,B=56H,执行下列指令后,Exp:
MOV
SP,#41H
PUSH
A
PUSH
B
MOV
A,#00H
MOVB,#01H
…
…
POPB
POP
A请你思考下SP=?,A=?,B=?
算术运算指令与数据传送指令不同,多数算术运算指令会影响标志位的状态,即CPU执行算术运算指令后,根据数据操作情况自动设置标志位的状态。51单片机的程序状态字寄存器PSW为标志寄存器,其字节地址为D0H,寄存器中各个标志位的情况如表所示。位序B7B6B5B4B3B2B1B0位符号CYACF0RS1RS0OVF1P
PSW寄存器加法指令“ADD
A,源操作数”带进位位加法指令“ADDCA,源操作数”带借位减法指令“SUBBA,源操作数”增量指令“INC单操作数”减量指令“DEC单操作数”乘法指令“MULAB”除法指令“DIVAB”
指令“CLRA”的功能是把累加器A清零;
指令“CPLA”的功能是把A的内容按位取反;
指令“RLA”的功能是把A的8位二进制循环左移1位,注意最高位将移到最低位;
指令“RRA”的功能是A的数据循环右移1位,注意最低位将移动最高位;
指令“RLCA”的功能是带进位位的循环左移,注意最高位移到进位位Cy,进位位移到最低位;
指令“RLCA”的功能是带进位位循环右移,最低位移到进位位,进位位移动最高位。ANL为逻辑与,ORL为逻辑或,XRL为逻辑异或;
由于位寻址区都在内部RAM中,所以位传送指令也用片内RAM传送指令MOV,51单片机会根据MOV指令中的寻址方式自动判断是对字节单元传送还是对一位进行传送。
除了位传送指令外,还有位清0指令CLR,位置1指令SETB,位取反指令CPL。
ANL和ORL也可实现位与和位或。
转移指令通过改写PC的当前值,从而改变CPU执行程序的顺序,使程序发生跳转。按转移条件分,该类指令可以分为1)无条件转移,即程序无条件转移到指定处。2)条件转移,即指令中给出转移条件,执行指令时,先测试条件,若满足条件,则程序发生转移;否则,仍顺序执行程序。
无条件转移有4条,其中“LJMPaddr16”指令中addr16表示16位的跳转目的地地址值,其为长跳转指令,可以实现ROM中64KB范围的跳转。绝对跳转指令“AJMPaddr11”中,由于目的地地址值为11位,所以只能实现ROM中2KB范围的跳转。相对跳转指令“SJMPrel”中,目的地地址值rel为8位的相对偏移量,所以只能实现ROM当前PC的-128到+127个单元内的跳转。而“JMP@A+DPTR”为间接长跳转指令,指令中跳转目的地地址值由DPTR和A一起提供,由于DPTR为16位,所以可以实现ROM中64KB范围的跳转。
条件转移指令可以形成程序的分支,赋予计算机判断决策能力。而转移条件有标志位的状态和位地址中的状态。
A判零转移指令“JZrel”和“JNZrel”,JZ为累加器A的值为零就跳,否则不跳顺序执行;JNZ相反,A不为0跳,为0不跳。指令中的跳转目的地地址都是相对偏移量,所以跳转范围为当前PC值处的-128到+127个单元内。
判Cy转移指令为“JCrel”和“JNCrel”,JC为当进位位Cy为1跳,否则不跳;JNC正相反。JB和JNB为判位转移指令,指令“JBbit,rel”为当bit位为1时跳,否则不跳顺序指令,指令中rel同样为目的地的相对偏移量地址;JNB正相反。
判位清0转移指令“JBCbit,rel”的功能是当bit位为1时跳转,并且跳转完后会把bit清0;如果bit位为0则不跳转,顺序执行。
比较不相等转移指令“CJNE操作数1,操作数2,rel”的功能是先比较操作数1和操作数2是否相等,如不等就跳,相等就不跳顺序执行,该令在进行操作数比较时相当于两个操作数相减,减的结果不保存,但影响标志状态。
循环转移指令“DJNZ操作数,rel”的功能是先把操作数自减一个1,然后判断该操作数是否为0,不为0则跳,为0就不跳顺序执行。该指令常用来编写循环程序。
子程序长调用指令“LCALLaddr16”,该指令执行时,先把其下一条指令的16位ROM地址压入堆栈保存,然后跳转到16位addr16地址指向的ROM单元去执行子程序,addr16为子程序起始地址,编程时可用标号代替,指令调用范围为64KB。
“ACALLaddr11”为子程序的绝对调用指令,在执行方式上和长调用指令LCALL类似,不同的地方在于指令中的地址addr11是11位,所以指令的调用范围为2KB,当然在编程时可以用子程序首地址的标号来代替。
“RET”为子程序返回指令,具体功能是从堆栈弹出之前调用指令保存的返回地址给程序计数器PC,实现子程序返回。
汇编语言指令类型有机器指令也就是我们前面介绍的单片机指令系统中的全部指令,每条指令有对应的机器代码。
第2个类型为伪指令,伪指令是汇编控制指令,仅提供汇编信息,由汇编程序负责执行,不是交由CPU执行,所以没有对应的机器指令代码。“ORG”起始地址指令;“DB”为定义字节型常数指令;“DW”为定义字型常数伪指令;“EQU”为等值伪指令,可以为标号或标识符赋值;“END”为结束汇编指令。
第3个类型是宏指令,宏指令可以定义宏,宏的功能是将需要多次反复执行的程序段定义成一个宏指令名(也称宏定义),编程时,可在程序中使用宏指令名来替代一段程序(也称宏调用)。宏定义伪指令用宏指令名“MACRO
形式参数”开始,中间为定义程序段,也即需要以后反复执行的程序段,最后用“ENDM”
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 方料石开采施工方案(3篇)
- 普通施工方案叫什么(3篇)
- 栽植柠条施工方案(3篇)
- 水利视频监控施工方案(3篇)
- 油库防台风应急预案(3篇)
- 混凝土河堤加固施工方案(3篇)
- 片石填方施工方案(3篇)
- 砼临时道路施工方案(3篇)
- 管廊施工方案预制(3篇)
- 网络营销方案华为(3篇)
- 麻风患者的真情护理
- 辽宁省大连市2025年九年级下学期中考一模数学试卷(含详解)
- 焊工劳务人员管理办法
- 2025年机关事务管理局机关财务处招聘面试预测题
- GJB827B--2020军事设施建设费用定额
- 医院科研诚信课件
- 碳排放核算员模拟考试题及答案(五)
- soap病历培训课件
- 塔吊安装、顶升、附着及拆卸培训讲义培训课件
- JG/T 293-2010压铸铝合金散热器
- 健康中国培训课件
评论
0/150
提交评论