单片机原理及应用-程耀瑜-2012年

上传人:hjk****65 文档编号:247908342 上传时间:2024-10-21 格式:PPT 页数:309 大小:3.94MB
返回 下载 相关 举报
单片机原理及应用-程耀瑜-2012年_第1页
第1页 / 共309页
单片机原理及应用-程耀瑜-2012年_第2页
第2页 / 共309页
单片机原理及应用-程耀瑜-2012年_第3页
第3页 / 共309页
点击查看更多>>
资源描述
,单片机原理及应用,适用专业:,电子信息类各个专业。,先修课程:,计算机文化基础、高级语言程序设计、电子技术。,教材:,张俊谟,.,单片机中级教程,原理与应用,.,北京航空航天大学出版社,第一章 绪 论,要点:,了解学习该课程的意义、什么是嵌入式系统,什么是单片机、,MCS-51,和,80C51,系列特点及单片机的应用领域。,重点:嵌入式系统概念,,MCS-51,系列单片机各型号之间的区别。,嵌入式,按计算机的非嵌入式和嵌入式应用分为“通用计算机系统,”,和”嵌入式计算机系统“,两大分支。,嵌入式:把,xxx,嵌入到,xxx,系统中。,单片机是典型的,比较简单的嵌入式控制器。,(51,系列,,AVR,系列、其它系列,),以前(,90,年代前):大型机、小型机、中型机、微型机。,后来:应用为中心分类:通用计算机系统、嵌入式计算机系统(有的也难以称为计算机系统),嵌入式:实现独立功能的专用计算机系统。使用量远远超过通用系统,键盘、网卡、声卡、显卡、打印机、汽车、仪表。,1.1,什么是单片机,(带一个单片机最小系统板),CPU + RAM + ROM + T/C,(,定时器,/,计数器),+ I/O,(,输入,/,输出接口电路),集成在一个芯片上,这种芯片级的微型计算机称为,微型计算机,或,单片微型计算机,(,single chip microcomputer,)。,特点:一个芯片,且具有微机系统的组成和功能。,微计算机系统概念:微处理器、微计算机和微计算机系统的关系见图,1-1,。,图,1-1,微处理器、微计算机和微计算机系统的关系,单片机的中、英文名称:,单片微型计算机,,single chip microcomputer,微控制器,,microcontroller, micro controller unit,(,MCU,),嵌入式微控制器,,embedded microcontroller,1.2,单片机的发展,第一阶段(,19761978,年):低性能单片机的探索阶段。以,Intel,公司的,MCS-48,为代表,采用了单片结构,即在一块芯片内含有,8,位,CPU,、,定时,/,计数器、并行,I/O,口、,RAM,和,ROM,等。主要用于工业领域。,第二阶段(,19781982,年):高性能单片机阶段,这一类单片机带有串行,I/O,口,,8,位数据线、,16,位地址线可以寻址的范围达到,64K,字节、控制总线、较丰富的指令系统等。这类单片机的应用范围较广,并在不断的改进和发展。,可以把单片机的发展历史划分为四阶段:,第三阶段(,19821992,年):,16,位单片机阶段。,16,位单片机除,CPU,为,16,位外,片内,RAM,和,ROM,容量进一步增大,实时处理能力更强,体现了微控制器的特征。例如,Intel,公司的,MCS-96,主振频率为,12M,,,片内,RAM,为,232,字节,,ROM,为,8K,字节,中断处理能力为,8,级,片内带有,10,位,A/D,转换器和高速输入,/,输出部件等。,第四阶段(,1993,年,):百花齐放、专用单片机、微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速、强运算能力、寻址范围大以及小型廉价方面发展。,1.3 MCS-51,和,80C51,系列简介,MCS-51,是指由美国,INTEL,公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如,8031,,,8051,,,8751,,,8032,,,8052,,,8752,等,其中,8051,是最早最典型的产品,该系列其它单片机都是在,8051,的基础上进行功能的增、减、改变而来的,所以人们习惯于用,8051,来称呼,MCS51,系列单片机,而,8031,是前些年在我国最流行的单片机,所以很多场合会看到,8031,的名称。,INTEL,公司将,MCS-51,的核心技术授权给了很多其它公司,所以有很多公司在做以,8051,为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中,89C51,就是这几年在我国非常流行的单片机,它是由美国,ATMEL,公司开发生产的。,(,1,),MCS-51,单片机和,8051,、,8031,、,89C51,等的关系,(,2,)介绍,P37,页。注意:,各系列各型号单片机的一些区别和联系,(,3,)几个名词介绍,WDT,,,WATCH DOG TIMER,。,看门狗定时器 。,I,2,C,,,INTEL ICBUS,,,PHILIPS,公司推出的,I,2,C,总线。串行扩展总线技术是新一代单片机技术发展的一个显著特点。目前,I,2,C,总线技术已为许多著名公司所采用,并广泛应用于视频音像系统中。推广,I,2,C,总线技术将有助于提高我国单片机应用水平。,CAN,,,Controller Area Network,。,该总线基于串行通信,ISO11898,标准,其初始协议是为车载数据传输而定义的。如今,,CAN,总线已经广泛应用于移动设备、工业自动化以及汽车领域。,CAN,总线标准包括物理层、数据链路层,其中链路层定义了不同的信息类型、总线访问的仲裁规则及故障检测与故障处理的方式。,CAN,在当今自动控制领域的发展中能发挥重要的作用。,PCA,,,可编程计数器阵列,温度,T,T,0,加温电流,温度,时间,0,图,1-2 PWM,控制原理图,PWM,,,脉冲宽度调制。,1.4,单片机的应用领域,(,1,)家电领域。洗衣机、空调、微波炉、电视机、录象机。,(,2,)办公自动化。打印机、复印机、电话、传真机。,(,3,)商业营销。电子称、收款机、条形码阅读器。,(,4,)工业自动化。机器人、过程控制。,(,5,)智能仪表。,(,6,)汽车电子。,(,7,)航空航天。,等等,1.5,单片机系统的开发,防真器,编程器,1.6,本教程的特点,(,1,)目前各公司生产的单片机品种繁多(,C51,系列、,PIC,系列,,AVR,系列、凌阳系列等),但只要集中学习一种典型的单片机即可掌握其核心,可触类旁通。,(,2,)动手实验。,(,3,)和普通计算机学习方法不同,普通的是应用,主要学软件,硬件基本不学习,单片机必须学习硬件,管脚,功能模块,接口等,因为没有硬件的知识,无法应用。,第二章 单片机的基本结构与工作原理,学时:,4,要点:,单片机的基本组成、引脚功能、结构及特点、存储器结构、工作方式。,重点:,MCS-51,单片机的结构及特点、存储器结构。,2.1,单片机的基本组成(,51,系列),单片机的结构特征: 将组成计算机的基本部件集成在一块芯片上。,(,1,)中央处理器、并行可编程,I/O,、,可编程串行口、定时器,/,计数器、定时电路及元件。,(,2,)存储器。,两种结构,哈佛结构和普林斯顿结构。,由于单片机“面向控制”的实际应用特点,一般需要较大的程序存储器,因此普遍采用哈佛结构,见图,2-2,随机存储器(,RAM,,,random access memory,),,只读存储器(,ROM,,,read only memory,),存储器,ROM,片外,ROM,片内,ROM,片内淹膜,ROM,,,一次性的,批量大的场合,片内可编程,ROM,EPROM,2716,2764,E,2,PROM,,2817、2864,EPROM,87C51,E,2,PROM,89C51,RAM,片外,RAM,,,6264,片内,RAM,,,256B,2.2 80 C51,单片机的引脚功能和结构框图,80C51,单片机的引脚功能,参看,P12,图,2-2,,在黑板上边画图边介绍各引脚功能。,注意:,T2,为,80C52,的定时器,/,计数器,2,的计数输入端,,T2EX,为,80C52,的定时器,/,计数器,2,的定时输入端。,80C51,单片机的结构框图,见,P13,图,2-3,。,(,1,),运算器,。主要由,8,位算术逻辑运算单元,ALU,、,8,位累加器,ACC,(,A,)、,8,位寄存器,B,、,程序状态字寄存器,PSW,、,8,位暂存器,TMP1,和,TMP2,等组成。,(,2,),控制器,。主要由程序计数器,PC,、,指令寄存器,IR,、,指令译码器,ID,、,堆栈指针,SP,、,数据指针,DPTR,、,时钟发生器及定时控制逻辑等组成。,2.3 80C51 CPU,的结构和特点,2.3.1,中央控制器,1,PC,和,DPTR,(,1,),参照,P1416,,,举例讲解其结构和特点。,(,2,)它们的差别。,2,指令寄存器,IR,、,指令译码器及控制逻辑,参照,P16,简单介绍。,包括,ALU,、,ACC,、,暂存寄存器、,B,寄存器、,PSW,、,1,ALU,(,参照,P1617,简单讲解)。,2,ACC,(,最频繁使用的寄存器),(,1,)是,ALU,的输入,又是,ALU,运算结果的存放单元。,(,2,)中转站。,(,3,)有一部分传送指令不经过,ACC,。,3,B,寄存器,2.3.2,运算器,4PSW,CY,AC,F0,RS1,R S0,OV,P,(,1,),P,,,奇偶标志位。表示,ACC,中为,1,的位数是奇数还是偶数。串行通讯中有用。,(,2,),OV,,,益出标志,ADD A,,,#DATA,(,或其它)和,SUBB A,,,#DATA,(,或其它)时,即当位,6,向位,7,有进位(借位)而位,7,不向,C,进位(借位)时,或位不,6,向位,7,有进位(借位)而位,7,向,C,进位(借位)时,,OV=1,,,否则,OV=0,。,MUL A,,,B,时,若积,255,,则,OV=1,,,说明,B,中有高,8,位积。,DIV A,,,B,时,若除数为,0,,则,OV=1,。,(,3,)寄存器区选择控制位,RS1,,,RS0,,,在下节讲解。,(,4,),F0,,,拥护可使用的通用标志位。可实现分支转移。,(,5,),AC,,,辅助进位标志。低,4,位向高,4,位发生进位或借位时,,AC=1,。,(,6,),CY,,,进位标志。,2.3.3,时钟电路及,CPU,的工作时序,(,1,)时钟电路见图,2-8,,说明三个输出的作用。,(,2,)画出振荡器电路图,2-9(b),,,讲解以下几点:,(,3,)指令时序,简单讲解。,1,)是电源控制寄存器,PCON,中的一位,低功耗工作方式。,2,),OSC=1.240MHz,,,C1=C2=12pF,。,作业,P36: 2,,,3,2.4,存储器结构和地址空间,由于单片机“面向控制”的实际应用特点,一般需要较大的程序存储器,因此普遍采用哈佛结构,见,P22,图,2-11,。,2.4.1,程序存储器,80C31,无片内,ROM,,,80C51,有,4K,一次性的淹膜,ROM,,,87C51,有,4K EPROM 89C51,有,4K E2PROM,。,0003H002BH,为中断服务程序入口地址,禁止主程序使用。,2.4.2,数据存储器,2.4.2.1,片内数据存储器,(,1,)片内数据,RAM,区。根据寻址方式不同,可分为以下,4,个区域。,(一)工作寄存器(,00H1FH,),特点:执行速度最快。其用法见下述程序:,CLR PSW.3,CLR PSW.4,MOV R0,#01H;(00H)=01H,SETB PSW.3,MOV R0,#01H;(08H)=01H,CLR PSW.3,SETB PSW.4,MOV R0,#01H;(10H)=01H,SETB PSW.3,MOV R0,#01H;(18H)=01H,(二)位寻址区,20H2FH,共,16,个字节分别对应,00H7FH,共,128,位。见,P26,表,2-2,。,特点:既可字节寻址,也可位寻址。与,SFR,构成布尔(位)处理器。,例:下面持续执行结果是一样的。,CPL 0DH,MOV A,,,21H,ANL A,,,#00010000B,JZ LB1,ANL 21H,,,#11101111B,SJMP LB2,LB1,:,ORL 21H,,,#00010000B,LB2,:,SJMP $,(三)字节寻址区(,30H7FH,),注意:,对于,MCS-52,系列单片机,,80HFFH RAM,区只能采用间接寻址方式访问,。讲完,SFR,后举例。,(四)堆栈区,特点:先进后出,进栈时,SP,加,1,,出栈时,SP,减,1,。,功能:调用子程序和中断时保护现场。,系统复位时,,SP=07H,。,使用时要特别小心,。,(,2,)特殊功能寄存器,SFR,高,128,字节中,,51,系列占用了,21,个,,52,系列占用了,26,个,其余访问无效,见,P27,表,2-3,和表,2-4,。,SFR,中低位地址为,0H,和,8H,的特殊功能寄存器,除了有字节寻址能力外,还有,12,个有位寻址能力见,P29,表,2-5,。,52,系列高,128,字节的寻址方式,,128-26 = 102B,。,寄存器间接寻址。,MOV R0,,,#8FH,MOV R0,,,#01H,;对,51,系列是无效的,MOV A,,,R0,;对,51,系列是无效的,MOV R0,,,#80H,MOV R0,,,A,;对,P0,口操作,而非高,52,系,列的,128,字节,2.4.2.2,片外数据存储器,64K,字节。采用,MOVX,指令和,DPTR,、,R0,或,R1,寄存器以间接寻址方式访问。,MOV DPTR,,,#1000H,MOVX DPTR,,,A,MOV DPTR,,,#0029H,MOVX A,,,DPTR,MOV R0,,,#30H,MOVX R0,,,A,;,该指令不能,超过,256B,2.5,布尔,(,位,),处理器(简介),2.6 80C51,单片机的工作方式,2.6.1,复位,功能:,PC=0000H,,,跳出死机。,复位的影响:,(,1,),SFR,的状态见,P31,表,2-7,;,(,2,)复位期间,,ALE=1,,。,如,P31,图,2-14(b),的按键复位电路。,2.6.2,程序执行方式,作业,P36:4,,,6,,,9,,,10,2.6.3,低功耗工作方式,两种方式:待机方式和掉电保护方式。介绍,P33,。,2.6.4,编程方式(简单介绍),第三章,80C51,单片机的指令系统,学时:,6,要点:,指令的分类、格式、寻址方式及寻址空间、指令系统。,重点:,MCS-51,指令系统。,3.1,概述,(,1,)指令分类,111,条指令。按指令功能,,MCS-51,指令系统分为:数据传送,28,条、算术运算,24,条、逻辑运算,25,条、控制转移,17,条、布尔操作,17,条。,(,2,)指令格式,操作码(要完成的操作),+,操作数(操作对象,数据或地址或符号)。,由于单片机数据是,8,位,字长短,指令是变长的,不是固定长短的。单字节有,49,条、双字节有,45,条、三字节有,17,条。,(,3,)符号(见,P3839,),3.2,寻址方式和寻址空间,执行任何指令都需要操作数。,寻址方式:在指令中用于说明操作数所在地址的方法。,3.2.1,立即寻址,在指令中直接给出操作数。并在操作数(立即数)前加“,#”,,以与直接寻址中的直接地址相区别。,3.2.2,直接寻址,指令中直接给出存放操作数的单元地址。,MOV A,,,3AH,;,E5 3A,寻址范围:,(,1,)低,128,字节。,(,2,),SFR,。,MOV A,,,PWS,或,MOV A,,,D0H,。,并不完全是访问,SFR,的唯一方法。,3.2.3,寄存器寻址,指令中将寄存器的内容为作为操作数。,INC R0,;,08,若当前状态为,0,组工 作寄存器且(,R0,),=01H,,,如图。,寻址范围:,(,1,),32,个工作寄存器。,(,2,)部分,SFR,。,ACC,、,B,、,DPTR,3.2.4,寄存器间接寻址,在指令中要到寄存器的内容所指的地址中取 操作数。为区别寄存器寻址和寄存器间接寻址,要加“,”,。,若当前状态为,0,组工作寄存器且(,R1,),=60H,,,则,ANL A,,,R1,;,寻址范围:,(,1,)片内,128,单元。,Ri,(,2,),片外,64KB,。,MOVX A,,,DPTR,即低,256B,,,MOVX A,,,Ri,(,3,),堆栈区。,PUSH,、,POP,(以,SP,做间址寄存器)。,如下图,3.2.5,相对寻址,指令中给出的操作数为程序转移的偏移量。为实现程序的相对转移而设立。,偏移量是带符号的,8,位二进制数。,JC 80H,;,40 80,若,C,置位,则转移。,JC 03H,;,40 03,3.2.6,变址寻址,以,DPTR,或,PC,做基址,,ACC,做变址寄存器,以两者形成的,16,位程序存储器地址作为操作数地址。又称基址寄存器,+,变址寄存器间接寻址。,若(,A,),=54H,、(,DPTR,),=3F21H,,,则,MOVC A,,,A+DPTR,;,A3,特点:,(,1,)仅对,ROM,进行寻址;,(,2,)三条;,(,3,)单字节;,(,4,)用于查表。,3.2.7,位寻址,1,)片内,RAM,,,20H2FH,,,16,单元,,128,位,地址,00H7FH,。,2,),部分,SFR,,,11,个,,83,位,,4,种表示。如,PSW,(,字节地址,D0H,,,位地址,D0HD7H,)。,SETB CY;SETB D7H;SETB PSW.7;SETB D0H.7,作业,P62,:,2,,,5,3.3,指令系统,数据传送类指令共,28,条,是将源操作数送到目的操作数。指令执行后,源操作数不变,目的操作数被源操作数取代。,3.3.1,数据传送类指令,3.3.1.1,一般传送类指令,(,1,)以,A,为目的操作数(,4,条,),MOV A,,,Rn,;(,A,) (,Rn,),机器,码:,E8HEFH,MOV A,,,direct,;(,A,)(,direct,),机,器码:,E5H direct,MOV A,,,Ri,;(,A,)(,Ri,),机器,码:,E6HE7H,MOV A,,,#data,;(,A,),#data,机器,码:,74H data,(,2,)以,Rn,为目的操作数(,3,条),MOV,Rn,,,A,;(,Rn,) (,A,),机器码:,F8HFFH,MOV,Rn,,,direct,;(,Rn,) (,direct,),机器码:,A8HAFH direct,MOV,Rn,,,#data,;(,Rn,) ,#data,机,器码:,78H7FH XXH,(,3,)以直接地址,direct,为目的操作数(,5,条),MOV direct,,,A,;(,direct,) (,A,),机器码:,F5H direct,MOV direct,,,Rn,;(,direct,) (,Rn,),机器码:,88H8FH direct,MOV direct,,,direct,;(,direct2,),(,direct1,),机器码:,85H direct1 direct2,MOV direct,,,Ri,;(,direct,) (,A,),机器码:,86H87H direct,MOV direct,,,#data,;(,direct,) ,#data,机器码:,75H direct data,(,4,)以间接寻址寄存器,Ri,为目的操作数(,3,条),MOV ,Ri,,,A,;(,Ri,) (,A,),机,器码:,F6HF7H,MOV ,Ri,,,direct,;(,Ri,) (,direct,),机器码:,A6HA7H direct,MOV ,Ri,,,#data,;(,Ri,) ,#data,机,器码:,76H77H data,表,3-2,一般传送指令传送数据关系,下面程序是错误的:,MOV R1,,,R2,;,MOV ,Ri,,,R7,;,3.3.1.2,目的地址传送指令,MOV DPTR,,,#data16,;,机器码:,90H data158 data70,3.3.1.3,累加器,传送指令,(,1,)字节交换指令,XCH,XCH A,,,Rn,XCH A,,,direct,XCH A,,,Ri,(,2,),半字节交换指令,XCHD,XCHD A,,,Ri,(,3,),A,与片外,RAM,传送指令,MOVX,MOVX A,,,DPTR,;,MOVX DPTR,,,A,;,MOVX A,,,Ri,;,MOVX ,Ri,,,A,;,(,4,),A,与,ROM,传送或查找表指令,MOVC,MOVC A,,,A+DPTR,;,MOVC A,,,A+PC,;,3.3.1.4,栈操作指令,PUSH direct,;,POPdirect,;,例,3.1,将片内,RAM 30H,单元与,40H,单元中的内容互换。,方法,1,(直接地址传送法):方法,2,(间接地址传送法):,MOV31H,,,30H MOVR0,,,#40H,MOV30H,,,40H MOVR1,,,#30H,MOV40H,,,31H MOVA,,,R0,SJMP$ MOVB,,,R1,MOVR1,,,A,MOVR0,,,B,SJMP$,方法,3,(字节交换 方法,4,(堆栈传送,传送法) : 法):,MOVA,,,30H PUSH30H,XCHA,,,40H PUSH40H,MOV30H,,,A POP 30H,SJMP$ POP 40H,SJMP$,3.3.2,算术运算类指令(,24,条),表,3-3,算术运算类指令中的源操作数,表,3-4,加,1,和减,1,指令中的源操作对象,3.3.2.1,加法指令,(,1,)加法指令,ADD A,,,Rn,;(,A,) (,A,),+,(,Rn,),ADD A,,,direct,;(,A,) (,A,),+,(,direct,),ADD A,,,Ri,;(,A,) (,A,),+,(,Ri,),ADD A,,,#data,;(,A,) (,A,),+ #data,这类指令影响,CY,、,AC,、,OV,、,P,标志位。,(,2,)带进位加指令,ADDC A,,,Rn,;,A A +,Rn,+ CY,ADDC A,,,direct,;,A A +,(,direct,),+ CY,ADDC A,,,Ri,;,A A +,(,Ri,),+ CY,ADDC A,,,#data,;,A A + #data + CY,这类指令影响,CY,、,AC,、,OV,、,P,标志位且多用于多字节加法。,例如,(,R7R6,),=01F8H,,(,R5R4,),=0A49H,,,两数相加,结果放在(,R7R6,),中。,ADD1,:,MOV A,,,R6,ADD A,,,R4,;,A= #41H CY=1,MOV R6,,,A,MOV A,,,R7,ADDC A,,,R5,;,A=#0CH CY=0,MOV R7,,,A,RET,(,3,)加,1,指令,INC A,INC,Rn,INC direct,INC ,Ri,INC DPTR,这类指令不影响,CY,、,AC,、,OV,、,P,标志位。,(,4,)二十进制调整指令,DA A,;对,BCD,码的加法结果进行调整,若(,A03,),9,或(,AC=1,),则(,A03,),+6,(,A03,),若(,A47,),9,或(,CY=1,),则(,A47,),+6,(,A47,),例:,A= #56,(,压缩的,BCD,),=01010110B,,,R3= #67BCD=01100111B,,,CY=1,,,则,ADDC A,,,R3,;,A=#BEH CY=0 AC=0,DA A,;,A=#24H CY=1 AC=1,3.3.2.2,减法指令,(,1,)带借位减指令,SUBB A,,,Rn,;,A A -,Rn,- C,SUBB A,,,direct,;,A A -,(,direct,),- C,SUBB A,,,Ri,;,A A -,(,Ri,),- C,SUBB A,,,#data,;,A A - #data C,这类指令影响,CY,、,AC,、,OV,、,P,标志位。注意第一次使用时,将,CY,清零。,例:,CLR C,SUBB A,,,#data,(,2,)减,1,指令,DEC A,;,A A - 1,DEC,Rn,;,Rn,Rn,- 1,DEC direct,;,direct,(,direct,),- 1,DEC ,Ri,;(,Ri,)(,Ri,),- 1,这类指令不影响,CY,、,AC,、,OV,、,P,标志位。,3.3.2.3,乘法指令,MUL AB,;,BA AB,A,和,B,中各存放一个,8,位无符号数,指令执行后,,16,位乘积的高,8,位在,B,中,低,8,位存,A,中。结果,255,时,,OV=1,,,反之,OV=0,。,CY,一直为,0,。,3.3.2.4,除法指令,DIV AB,;,A/B,商在,A,中,余数在,B,中,A,和,B,中各存放一个,8,位无符号数,,A,放被除数,,B,放除数。指令执行后,,A,中存放商,,B,中存入余数。若,B=00H,,,则指令执行后,OV=1,,,结果不定。,CY,一直为,0,。,例:将累加器中的二进制数转换为,3,位,BCD,数的子程序,百位存放在,R7,中,十位、个位存放在,R6,中。,MOV B,#64H;A=0EAH(234),DIV AB;A=02H,B=22H(34),MOV R7,A;R7=02H,MOV A,#0AH;A=0AH,XCH A,B;A=22H,B=0AH,DIV AB;A=03H,B=04H,SWAP A;A=30H,ADD A,B;A=34H,MOV R6,A;R6=34H,RET,3.3.3,逻辑运算类指令(,25,条),(,1,)单操作数逻辑运算指令,CLR A,;,不影响标志位,CPL A,;,不影响标志位,RR A,;,不影响标志位,RRC A,;,影响,CY,RL A,;,不影响标志位,RLC A,;,影响,CY,SWAP A,;,不影响标志位,(,2,)双操作数逻辑运算指令(不影响标志位),注:对端口操作时,为“读,-,修改,-,写”。,如:助记符第一操作数第二操作数,ANLA,,,Rn,ANLA,,,direct,ANLA,,,Ri,ANLA,,,#data,ANLdirect,,,A,ANLdirect,,,#data,ORLA,,,Rn,ORLA,,,direct,ORLA,,,Ri,ORLA,,,#data,ORLdirect,,,A,ORLdirect,,,#data,XRLA,,,Rn,XRLA,,,direct,XRLA,,,Ri,XRLA,,,#data,XRLdirect,,,A,XRLdirect,,,#data,作业,P6263,:,6,8,11,3.3.4,控制转移类指令(,17,条),(,1,)短(相对)转移指令(范围:,-128B127B,),SJMP,rel,;,PC PC + 2 +,rel,80H XXH,(,2,),绝对(短)转移指令(,2k,范围),AJMPaddr11,;,PC10,0 addr11,机器码:,01H XXH,,,21H XXH,,,41H XXH.,3.3.4.1,无条件转移类指令,(,3,)长转移指令,LJMPaddr16,;,PC addr16 02H XXH XXH,(,4,),间接(长)转移指令,JMPA+DPTR,;,PC A + DPTR 73H,若,A+DPTRFFFFH,,则,PC=0000H,3.3.4.2,调用和返回指令,(,1,)绝对(短)调用,ACALL addr11,;(,PC,),(,PC,),+2,(,SP,),(,SP,),+1,(,SP,),PC70,(,SP,),(,SP,),+1,(,SP,),PC158,(,PC100,),a100,机器码:,11H XXH,,,31H XXH,,,51H XXH,(,2,)绝对(长)调用,LCALL addr16,;(,PC,),(,PC,),+3,(,SP,),(,SP,),+1,(,SP,),PC70,(,SP,),(,SP,),+1,(,SP,),PC158,(,PC150,),a150,机器码:,12H XXH,(,3,),子程序返回,RET,;(,PC158,),(,SP,),22H,(,SP,),(,SP,),-1,(,PC70,),(,SP,),(,SP,),(,SP,),-1,(,4,)中断返回,RETI,;(,PC158,),(,SP,),32H,(,SP,),(,SP,),-1,(,PC70,),(,SP,),(,SP,),(,SP,),-1,3.3.4.3,条件转移指令,(,1,)判零转移指令,JZ,rel,;,A=0,转移,JNZ,rel,;,A,0,转移,(,2,)比较转移指令,特点:不等则转移,,3,字节指令,影响进位标志。,CJNE A,,,direct,,,rel,;若,(A) =(direct),,,则,(PC),(PC)+3,,,(C),0,若,(A) (direct),,则,(PC),(PC)+3+rel,,,(C),0,若,(A) (direct),,则,(PC),(PC)+3+rel,,,(C),1,CJNE A,,,#data,,,rel,CJNE,Rn,,,#data,,,rel,CJNE ,Ri,,,#data,,,rel,3.3.4.4,循环转移指令,DJNZ,Rn,,,rel,;,(,Rn,),(Rn)-1,;若,Rn,=0,,则,(PC),(PC)+2,(,2,字节指令),;若,Rn,0,,则,(PC),(PC)+2+rel,DJNZ direct,,,rel,;,(,Rn,),(Rn)-1,;若,Rn,=0,,则,(PC),(PC)+3,(,3,字节指令),;若,Rn,0,,则,(PC),(PC)+3+rel,例:若,f,osc,=12MHz,,,下述程序从,P1.7,口输出,5,个方波,计算周期(查,P236239,附表,2,)。,MOV R2,,,#0AH,;,1,s,PULSE,:,CPL P.7,;,1,s,DJNZ R2,,,PULSE,;,2,s,T=3,s,。,3.3.4.5,空操作指令,NOP,;,00H 1,个机器周期,3.3.5,布尔(位)操作类指令(,17,条),布尔处理器,,CY,作为累加器。,3.3.5.1,布尔传送指令,MOVC,,,bit,;,C,(,bit,),MOV bit,,,C,;,bitC,3.3.5.2,布尔状态控制指令,CLRC,;,C0,CLRbit,;(,bit,),0,SETBC,;,C1,SETBbit,;(,bit,),1,CPLC,;,C/C,CPLbit,;(,bit,)(,/bit,),3.3.5.3,布尔逻辑操作指令,ANLC,,,bit,;,CC,(,bit,),ANLC,,,/bit,;,CC,(,/bit,),原值不变,ORLC,,,bit,;,CC,(,bit,),ORLC,,,/bit,;,CC,(,/bit,),原值不变,3.3.5.4,布尔转移指令,JC,rel,;若,C=1,,,则转移,(,PCPC+2+rel,);,否则程序顺序执行,JNC,rel,;若,C=0,,,则转移,(,PCPC+2+rel,);,否则程序顺序执,JB bit,,,rel,;若,(bit)=1,,,则转移,(,PCPC+3+rel,);,否则程序顺序执行,JNB bit,,,rel,;若,(bit)=0,,,则转移,(,PCPC+3+rel,);,否则程序顺序执行,JBC bit,,,rel,;若,(bit)=1,,则,PCPC+3+rel,,,(,bit,),0,;,否则顺序执行,作业,P6364,:,13,,,17,,,25,第四章,80C51,单片机的功能单元,学时:,12,要点及重点:,并行,I/O,接口、定时器,/,计数器、串行接口、中断系统。,4.1,并行,I/O,接口,51,系列单片机有,4,个双向并行的,8,位,I/O,口,P0,P3,,,P0,口为三态双向口,可驱动,8,个,TTL,电路,,P1,、,P2,、,P3,口为准双向口(作为输入时,口线被拉成高电平,故称为准双向口),其负载能力为,4,个,TTL,电路。,4.1.1 P1,口,特点:,(,1,)输出锁存,无条件;,(,2,)输入缓冲,有条件。即先将该口设置为输入状态,先输出,1,;否则会产生严重后果;,(,3,)无高阻悬浮态,不是输入就是输出。,因此称为“准双向口”。,操作:,(,1,)字节操作和位操作(自己看)。,(,2,)读引脚操作和读锁存器操作,读引脚,先输出“,1”,。,MOV A,,,P1,MOV direct,,,P1,读锁存器,“读,-,修改,-,写”指令。,逻辑操作(,ANL,、,ORL,、,XRL,),和位操作(,JBC,、,CPL,、,SETB,等)。,优点:见,P67,。,4.1.2 P3,口,特点:,(,1,)准双向口。,(,2,)替代功能。,如:,MOVX A,,,R0,;,P3.6,读信号输出,若程序中设置了串行通讯,,P3.0,为输入,不能使用,MOV A,,,P3,(,3,),输入时,先输出“,1”,。,4.1.3 P2,口,特点:,(,1,)准双向口。,(,2,)可做高,8,位地址线,且有地址锁存。,(,3,)在访问外部,ROM,和,RAM,时,控制信号连通地址端。,(,4,)系统中若有外部,ROM,不能做,I/O,口;若有外部,RAM,,,不宜做,I/O,口。,4.1.4 P0,口,(,1,)地址,/,数据操作,MOVX DPTR,,,A,;,控制,=1,,先出地址,后出数据,要加地址锁存器。,(,2,),I/O,操作,MOV P0,,,A,;,控制,=0,,,T1,截止,成为漏极开路,输出取决于,D,端。,MOV A,,,P0,;,控制,=0,,,T1,截止,成为漏极开路,先将,D=1,,,T2,截止,高,输入阻抗。,4.2,定时器,/,计数器,4.2.1,概 述,什么叫定时器,/,计数器?,(,1,),51,系列:,2,个,16,位,T/C,,,T0/P3.4,、,T1/P3.5,,,52,系列:,3,个,6,位,T/C,;,核心加,1,计数器。,(,2,)计数:在,T0/P3.4,端施加一个,0,到,1,的跳变,计数器加,1,。,(,3,)定时:对机器周期或其分频进行计数,从而得到定时。,4.2.2,定时器,/,计数器,T0,、,T1,4.2.2.1,组成,(,1,),TH0,、,TL0,;,TH1,、,TL1,;,(,2,),工作方式寄存器,TMOD,、,控制寄存器,TCON,;,(,3,),时钟分频器;,(,4,)输入,T0,、,T1,、。,4.2.2.2 TMOD,和,TCON,(,1,)工作模式控制寄存器,TMOD,(,89H,,,只能字节寻址,),(,2,)定时器控制寄存器,TCON,(,88H,,,可字节寻址,也可位寻址),4.2.2.3,定时器,/,计数器,T0,、,T1,的功能选择,(,1,)定时方式,计数频率为,f,ocs/12,。,(,2,),计数方式,最高计数频率,f,ocs/24,。,因为在每个,T,的第,5,个状态的第,2,节拍,S5P2,期间采样引脚输入电平,要采一个下降沿(两个,T,),,之后的,S3P1,期间计数值加,1,。,4.2.2.4,定时器,/,计数器,T0,、,T1,的工作方式,(,1,)方式,0,(,13,位计数器,,1FFFH+1,时溢出),注意:定时器,/,计数器是加,1,计数器,若想计,100,个数时结束,则初值应为,8192-100=8092,。,(,2,)方式,1,(,16,位计数器,,FFFFH+1,时溢出),(,3,)方式,2,(,8,位计数器,,FFH+1,时溢出,可用于串行口波特率发生器),(,4,)方式,3,将定时器,/,计数器,T0,分为一个,8,位的定时器,/,计数器和一个,8,位定时器。此时,定时器,/,计数器,T1,仅能做波特率发生器或其它不用中断的地方,也就是说,只有当定时器,/,计数器,T1,做波特率发生器时,定时器,/,计数器,T0,才能选方式,3,。,4.2.3,定时器,/,计数器,T2,(,MCS-52,系列有),组成:,2,个,8,为计数器,TL2,、,TH2,;,控制寄存器,T2CON,、,T2MOD,;,捕获寄存器,RCAP2L,、,RCAP2H,。,特点:具有自动装载和捕获能力。,输入:,T2,(,P1.0,),外部计数脉冲,,T2EX,(,P1.1,),外部控制信号输入。,有兴趣的同学自看,4.2.4,看门狗,ORG 0000H,AJMP MAIN,ORG 0030H,MAIN:MOV A,R1,LCALL DOG,LCALL DOG,DOG,:,ORL PCON,,,#10H,;,允许,T3,重装,MOV T3,,,#156,;,装载定时器时间间隔,RET,4.2.5,定时器,/,计数器的编程和使用,定时,/,计数常数的计算,定时时间:定时,/,计数常数: 注意:方式,0 TCB=TCH+TCL,,,TCH,高,8,位,,TCL,低,5,位。,t=T,C,X(2,L,-TC),定时器,/,计数器的编程步骤:,(,1,)写,TMOD,,,确定,M1,、,M0,、,C/T,、,GATE,;,(,2,),写时间常数;,(,3,)启动定时或计数器,,TRi,;,(,4,),定时器中断开放与禁止,,EA,,,ETi,。,例,1,:,MOV TMOD,,,#00H,MOV TH0,,,#0F0H,MOV TL0,,,#0CH,SETB TR0,SETB ET0,SETB EA,AJMP $,ORG 000BH,AJMP INQP,ORG 0050H,INQP: MOV TH0,,,#0F0H,MOV TL0,,,#0CH,CPL P1.0,RETI,例,2,,,3,,,4,教材上例,5,的题意比较模糊,程序也有错误。现将题目改动如下,更能明确地反映编者的原意。,例,5,利用定时器,/,计数器测定图示波形的一个周期长度。,思路:,因为周期较长,利用一个定时器,/,计数器不能完成任务。若,fosc,=6MHz,,,则最大计时长度为,65536*2us=131072us=0.131072s,。,因此采用以下方案:,(,1,)将定时器,/,计数器,0,设置为定时方式,时间为,100ms,,,中断一次使中断次数计数器加,1,。利用控制,T0,的工作。,(,2,)将定时器,/,计数器,1,设置为计数方式,计够,2,次时,使定时器,0,停止工作。,(,3,)定时器,0,的中断次数*,100ms,即为测定的周期。,解:(,1,)定时器,/,计数器,0,的定时常数,TC0=3CB0H,(,2,),定时器,/,计数器,1,的计数常数,TC1=FFFEH,(,3,),程序如下:,ORG 0000H,AJMP MAIN,ORG 000BH,AJMP T0,ORG 001BH,AJMP T1,ORG 0030H,MAIN,:,MOV R3,,,#00H,;,定时器,0,中,断次数计数器,SETB P3.2,;将,P3.2,、,P3.5,设置为输入状态,SETB P3.5,MOV TMOD,,,#59H,;,MOV TH0,,,#3CH,MOV TL0,,,#0B0H,MOV TH1,,,#0FFH,MOV TL1,,,#0FEH,SETBF0,;,标志置位,MOV IP,,,#08H,;,T0,中断优先于,T1,中断,SETB ET0,;,允许,T0,中断,SETB ET1,;,允许,T1,中断,SETB EA,;,总中断允许,SETB TR0,;,启动,T0,SETB TR1,;,启动,T1,JB F0,,,$,;,等待,T1,中断,AJMP$,;,R3,乘以,100,即,为周期,T0,:,CLR EA,;,关总中断,MOV TH0,,,#3CH,;,重置初值,MOV TL0,,,#0B0H,INC R3,;,中断一次加,1,SETB EA,;,开总中断,RETI,T1,:,CLR EA,;,关总中断,CLR F0,;,清标志,检测,结束,RETI,END,作业,P111,:,1,,,3,,,6,,,8,4.3,串行接口,4.3.1,硬件结构,串行通信是将数据的各位一位一位地依次传送。适合于计算机之间、计算机与外部设备之间的远距离通信。,串行通信从传输方式分为:单工方式、半双工方式和全双工方式,从接收方式来说,串行通信有异步和同步两种方式:,80C51,中的串行口是一个全双工的异步串行通讯接口,可做,UART,(,通用异步接收和发送器),也可做同步位移寄存器。,(,1,),UART,串行口的结构,(,2,)状态控制寄存器,SCON,、,控制寄存器,PCON,和串行数据寄存器,SBUF,电源控制寄存器,PCON,,,PCON.7,SMOD,,,SMOD=1,时,方式,1,、,2,和,3,的波特率加倍。,串行数据寄存器,SBUF,,,接收,SBUF,和发送,SBUF,,,地址相同,物理上分离,由指令区分:,MOV SBUF,,,A MOV A,,,SBUF,4.3.2,工作方式,(,1,)方式,0,(,SM1=0,,,SM0=0,),8,位同步移位积存器,波特率,=,f,osc/12,,,常用于,I/O,口扩展。,如下图,(,2,)方式,1,(,SM1=0,,,SM0=1,),波特率取决于定时器,/,计数器,T1,或,T2,的溢出率。发送或接收数据一帧信息为,10,位:,1,位起始位(,0,)、,8,位数据位、,1,位停止位(,1,)。,(,1,),方式,1,发送,方式,1,接收,方式,1,结束一个完整接收过程(数据,SBUF,,,停止位,RB8,,,1,RI,),的条件:,RI=0,(,表明上一帧数据的中断已响应)、,SM2=0,或接收到的停止位,=1,。,(,3,)方式,2,、,3,(区别波特率前者固定,后者可变),发送或接收数据一帧信息为,11,位:,1,位起始位(,0,)、,9,位数据位、,1,位停止位(,1,)。,方式,2,、,3,结束一个完整接收过程(数据,SBUF,,第,9,位,RB8,,,1,RI,),的条件:,RI=0,(,表明上一帧数据的中断已响应)、,SM2=0,或接收到的第,9,位,=1,。,注意:方式,2,、,3,与方式,1,在接收时不同,前者装入,RB8,的是第,9,位,而不是停止位。这点可用于多机通讯中。,(,4,)多处理机通讯方式,串行口控制寄存器,SCON,中的,SM2,为多机通信接口控制位。串行口以方式,2,或,3,接收时,若,SM2,为,1,,则仅当接收到的第,9,位数据,RB8,为,1,时,数据才装入,SBUF,,,置位,RI,,,请求,CPU,对数据进行处理;当,SM2,为,0,时,则接收到一个数据后,不管第,9,位数据,RB8,是,0,还是,1,,都将数据装入接收缓冲器,SBUF,并置位中断标志,RI,,,请求,CPU,处理。,1,)系统初始化时,将所有从机中的,SM2=1,,,且串行中断允许(,ES=1,);,2,),主机与某从机通讯时,先向所有从机发所选从机的地址,接着才发送命令或数据。在主机发送地址时,置第,9,位为(,TB8,),1,,,表示发送的是地址帧;然后再将第,9,位(,TB8,),清零,发送命令或数据。,3,)因各从机,SM2=1,,,将响应主机发来的地址信息,并作出以下表现:,*若从机地址与主机点名地址相同,则将自己的,SM2=0,,,可继续接收主机信息;,*若从机地址与主机点名地址不同,则,SM2=1,不变,以后不理会主机发送的信息,重新等待点名。,从而保证主机与从机一对一的通讯。,4.3.4,串行口的波特率发生器及波特率,波特率:每秒传送的数据位数。,例 若,f,osc,=11.059MHz,,,串行口工作在方式,1,或,3,,要求波特率为,9600,,则可设置,SMOD=0,,,CT=0,,,定时器,/,计数器,1,工作在方式,2,。则溢出率,为什么,f,osc,12MHz,?,若,f,osc,=12MHz,,,串行口工作在方式,1,或,3,,要求波特率为,9600,,则可设置,SMOD=0,,,CT=0,,,定时器,/,计数器,1,工作在方式,2,。则溢出率,定
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 工业自动化


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!