资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单片机原理及应用 电子教案,赵秀珍 王乃钊 制作,水利水电出版社,2001 . 8,第一章,单片微型计算机概述,本章主要介绍单片机的发展,基本的结构和特点,单片机的应用模式和领域,单片机的供应状态等。,单片微型计算机就是将,CPU、RAM、ROM、,定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。因此,一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。,1,1,单片机的发展概况,综上所述,我们可以把单片机的发展历史划分为四阶段:,第一阶段(19761978年):低性能单片机的探索阶段。以,Intel,公司的,MCS-48,为代表,采用了单片结构,即在一块芯片内含有8位,CPU、,定时/计数器、并行,I/O,口、,RAM,和,ROM,等。主要用于工业领域。,第二阶段(19781982年):高性能单片机阶段,这一类单片机带有串行,I/O,口,8位数据线、16位地址线可以寻址的范围达到64,K,字节、控制总线、较丰富的指令系统等。这类单片机的应用范围较广,并在不断的改进和发展。,第三阶段(19821990年):16位单片机阶段。16位单片机除,CPU,为16位外,片内,RAM,和,ROM,容量进一步增大,实时处理能力更强,体现了微控制器的特征。例如,Intel,公司的,MCS-96,主振频率为12,M,,片内,RAM,为232字节,,ROM,为8,K,字节,中断处理能力为8级,片内带有10位,A/D,转换器和高速输入/输出部件等。,第四阶段(1990年):微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速、强运算能力、寻址范围大以及小型廉价方面发展。,1,2,单片机的结构特点,(1)片内的,RAM,采用寄存器结构形式,这样可以提高存取的速度;,(2)在存储器结构上,严格的将程序存储器,ROM,和数据存储器,RAM,在空间上分开;,(3)它的引出管脚一般都设计成多功能的;,(4)增加了一个全双工的串行接口,以扩充,I/O,口和外接同步输入和输出设备;,(5)有21个特殊功能寄存器;,(6) 有丰富的指令系统,内部设置了可以位寻址的位地址空间。,1,3,单片机的主要品种及系列,一、 4位单片机,二、 8位单片机,表格 11,MCS-51,系列型号,型 号,制造技术,片内程序存储器,片内数据存储器,8051,AH,H MOS,ROM (4k),128字节,8031,AH,AH MOS,无,128字节,8751,H,H MOS,EPROM(4K),128字节,80,C51,CHMOS,ROM (4K),128字节,80,C31,CHMOS,无,128字节,8051,H MOS,ROM (8K),256字节,8031,H MOS,无,256字节,1,4,单片机的应用,一、 单片机在仪器仪表中的应用,二、 单片机在机电一体化中的应用,三、 单片机在智能接口和多机系统中的应用,四、 单片机在生活中的应用,第 二 章,MCS-51,单片机的结构和原理,本章主要介绍,MCS-51,系列的8051的基本结构、工作原理、存储器结构、,P,0,、P,1,、P,2,、P,3,四个,I/O,口的基本工作原理和操作特点。单片机的各种工作方式、单片机的时序等。,21 MCS-51单片机的结构原理,一、 8051单片机的结构,图 21,MCS-51,单片机的基本结构,二、 8051单片机的内部结构和工作原理,8051单片机的内部结构框图如图 22 所示,下面分别进行介绍:,图,22 8051,的内部结构框图,图,23 8051,存储器组织结构,字节地址,位 地 址,2,FH,2,EH,2,DH,2,CH,2,BH,2,AH,29,H,28,H,27,H,26,H,25,H,24,H,23,H,22,H,21,H,20,H,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,7,FH,7,EH,7,DH,7,CH,7,BH,7,AH,79,H,78,H,77,H,76,H,75,H,74,H,73,H,72,H,71,H,70,H,6,FH,6,EH,6,DH,6,CH,6,BH,6,AH,69,H,68,H,67,H,66,H,65,H,64,H,63,H,62,H,61,H,60,H,5,FH,5,EH,5,DH,5,CH,5,BH,5,AH,59,H,58,H,57,H,56,H,55,H,54,H,53,H,52,H,51,H,50,H,4,FH,4,EH,4,DH,4,CH,4,BH,4,AH,49,H,48,H,47,H,46,H,45,H,44,H,43,H,42,H,41,H,40,H,3,FH,3,EH,3,DH,3,CH,3,BH,3,AH,39,H,38,H,37,H,36,H,35,H,34,H,33,H,32,H,31,H,30,H,2,FH,2,EH,2,DH,2,CH,2,BH,2,AH,29,H,28,H,27,H,26,H,25,H,24,H,23,H,22,H,21,H,20,H,1,FH,1,EH,1,DH,1,CH,1,BH,1,AH,19,H,18,H,17,H,16,H,15,H,14,H,13,H,12,H,11,H,10,H,0,FH,0,EH,0,DH,0,CH,0,BH,0,AH,09,H,08,H,07,H,06,H,05,H,04,H,03,H,02,H,01,H,00,H,图,24 8051,内部,RAM,位地址区,图,24 8051,内部,RAM,位地址区,表格,22,特殊功能寄存器表,符号,单元地址,名称,位地址,符号,地址,*,ACC,E0H,累加器,ACC.7ACC.0,E7HE0H,*,B,F0H,乘法寄存器,B.7B.0,F7HF0H,*,PSW,D0H,程序状态字,PSW.7PSW.0,D7HD0H,SP,81,H,堆栈指针,DPL,82,H,数据存储器指针(低8位),DPH,83,H,数据存储器指针(高8位),*,IE,A8H,中断允许控制器,IE.7IE.0,AFHA8H,*,IP,B8H,中断优先控制器,IP.7IP.0,BFHB8H,*,P,0,80,H,通道0,P,0.7,P,0.0,87,H80H,*,P,1,90,H,通道1,P,1.7,P,1.0,97,H90H,*,P,2,A0H,通道2,P,2.7,P,2.0,A7HA0H,*,P,3,B0H,通道3,P,3.7,P,3.0,B7HB0H,PCON,87,H,电源控制及波特率选择,*,SCON,98,H,串行口控制,SCON.7SCON.0,9,FH98H,SBUF,99,H,串行数据缓冲器,*,TCON,88,H,定时控制,TCON.7TCON.0,8,FH88H,TMOD,89,H,定时器方式选择,TL,0,8,AH,定时器0低8位,TL,1,8,BH,定时器1低8位,TH,0,8,CH,定时器0高8位,TH,1,8,DH,定时器1高8位,*:可位寻址的特殊功能寄存器,图,25,P,0,口的位结构,(1),P,0,口位的结构,(2),P,1,口位的结构,图,26,P,1,口的位结构,图,26,P,1,口的位结构,图,26,P,1,口的位结构,图,26,P,1,口的位结构,图,26,P,1,口的位结构,(3),P,2,口的位结构,图,27,P,2,口的结构图,(4),P,3,口的位结构,图,28,P,3,口的结构图,(4),P,3,口的位结构,图,28,P,3,口的结构图,表格,23,P,3,口的第二功能表,I/O,口,第二功能,注 释,P,3.0,RXD,串行口数据接收端,P,3.1,TXD,串行口数据发送端,P,3.2,INT(),0,外部中断请求0,P,3.3,INT(),1,外部中断请求1,P,3.4,T,0,定时/计数器0,P,3.5,T,1,定时/计数器1,P,3.6,WR(),外部,RAM,写信号,P,3.7,RD(),外部,RAM,读信号,一、 时钟周期、机器周期和指令周期,图,2-9,基本定时时序关系,2,2,MCS-51,单片机的时序,1时钟周期,图 210,MCS-51,的取指/执行时序,2机器周期,3指令周期,二、,MCS-51,单片机指令的取指和执行的时序,三、 访问外部,ROM,和,RAM,的时序,图,211,访问外部,ROM,的时序,1访问外部,ROM,的时序,2访问外部,RAM,的时序,图 212 访问外部,RAM,的时序,23,MCS-51,单片机的时钟和复位电路,一、 时钟电路,图 213,MCS-51,时钟接法,1内部振荡器方式,2外部时钟方式,二、 复位电路及复位状态,1内部复位电路,图 214 8051复位电路结构,2外部复位电路,图,215,复位电路,3,复位状态,表格,24,各专用寄存器的复位值,专用寄存器,复位值,PC,0000,H,ACC,00,H,B,00,H,PSW,00,H,SP,07,H,DPTR,0000,H,P,0,P,3,FFH,IP,XXX00000B,IE,0,XX00000B,TMOD,00,H,TCON,00,H,TH0,00,H,TL0,00,H,TH1,00,H,TL1,00,H,SCON,00,H,SBUF,不定,PCON(CHMOS),0,XXX0000B,24,MCS-51,单片机的低功耗工作方式,一、 电源控制寄存器,PCON,PCON,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,SMOD,GF1,GF0,FD,IDL,三、 掉电方式,二、 等待工作方式,第三章,MSC-51,单片机的指令系统,3,1,指令系统概述,一、 机器码指令与汇编语言指令,机器码指令:,汇编语言指令:,二、 指令格式,汇编语言格式为:标号: 操作码助记符 目的操作数, 源操作数 ;注释,单字节指令,双字节指令,三字节指令,操作码 24,H,操作数 22,H,INC A ADD A,#22H MOV 5EH,4FH,操作码 04,H,操作码 85,H,源操作数 4,FH,目的操作数 5,EH,图,3-1,机器码指令格式,32 寻址方式,一、 寄存器寻址,二、 直接寻址,三、 立即寻址,四、 寄存器间接寻址,五、 变址寻址,六、 相对寻址,七、 位寻址,3,3,MSC-51,单片机的指令系统,按照指令的功能,可以把,MSC-51,的111条指令分成五类:,l,数据传送类指令(29条),l,算术运算类指令(24条),l,逻辑操作类指令(24条),l,控制转移类指令(17条),l,位操作类指令 (17条),图 3-2 相对寻址过程,第四章,MCS-51,单片机的应用程序设计,图 4-1 基本程序结构,41 运算程序,一、 多字节数加法,1,多字节无符号数加法,CLR C,MOV R,0,,#40H ;,指向加数最低位,MOV R,1,,#5OH ;,指向另一加数最低位,MOV R,2,,#04H ;,字节数作计数初值,LOOP1:MOV A,R,0,;,取被加数,ADDC A,R,1,;,两数相加,带进位,MOV R,0,,A,INC R,0,;,修改地址,INC R,1,DJNZ R,2,,LOOPl ;,未加完转,LOOP1,JNC LOOP2 ;,无进位转,LOOP2,MOV R,0,,#01H,LOOP2:DEC R,0,RET,2多字节有符号数加法,MOV A,R,0,;,复制保存地址指针,MOV R,2,,A,MOV A,R,MOV R,7,,A,CLR C,LOOP1:MOV A,R,0,ADDC A,R,1,;,相加,MOV R,0,,A,INC R,0,INC R,1,;,地址指针加1,DJNZ R,7,,LOOP1,JB OV,ERR ;,若溢出,转溢出处理,DEC R,0,MOV A,R,0,JNB E7H,LOOP2,SETB 07H ;,和值为负,置位标志,LOOP2:MOV A,R,2,;,恢复地址指针,MOV R,0,,A,RET,ERR: ;,溢出处理,RET,SDADD:CLR 07H ;,标志位清零,图,4-3,多字节有符号数加法程序流程图,二、 多字节数减法,MOV R,0,,#40H ;,指向被减数最低位,MOV R,1,,#5OH ;,指向减数最低位,MOV R,2,,#04H ;,字节数,CLR C,LOOP1:MOV A,R,0,SUBB A,R,1,;,完成一个字节的减法运算,MOV R,0,,A,INC R,0,INC R,1,DJNZ R,2,,LOOP1,RET,三、 多字节十进制数(,BCD,码)加法,图,4-4,BCD,码多字节加法程序流程图,BCDADD:MOV 20H,R,0,MOV 23H,R,CLR C,LOOP0: MOV A,R,0,;,取被加数,ADDC A,R,1,;,两数相加,DA A ;,十进制调整,MOV R,0,,A,INC R,0,;,指针加1,INC R,1,DJNZ R,,LOOP0 ;,作完加法否,MOV R2. #23H,JNC RETURN ;,有无进位,MOV R,0,,#01H,INC R,RETURN:MOV R,0,,#20H,RET,四、 多字节数乘法,ZHENFA: MOV A,R,0,MOV B,R,1,MUL AB ;(R,1,)*(R,0,),MOV R,,A ;,积的低位送到,R,MOV R,4,,B ;,积的高位送到,R,4,MOV A,R,0,MOV B,R,2,MUL AB ;(R,2,)*(R,0,),ADD A,R,4,;(R,1,)*(R,0,),的高位加(,R,2,)*(R,0,),的低位,MOV R,4,,A ;,结果送,R,4,,,进位在,CY,中,MOV A,B,ADDC A,#OOH;(R,2,)*(R,0,),的高位加低位来的进位,MOV R,,A ;,结果送,R,RET,五、 多字节数除法,DV: MOV R,7,#08H ;,设计数初值,DVl: CLR C,MOV A,R,RLC A,MOV R,,A,MOV A,R,6,RLC A ;,将(,R,6,)、(R,),左移一位,MOV 07H,C ;,将移出的一位送07,H,位保存,CLR C,图,4-5,除法程序流程图,SUBB A,R,2,;,余数(高位)减除数,JB O7H,GOU ;,若标志位为1,说明够减,JNC GOU ;,无借位也说明够减,ADD A,R,2,;,否则,恢复余数,AJMP DV2,GOU:INC R,;,商上1,DV2:MOV R,6,,A ;,保存余数(高位),DJNZ R,7,,DVl,RET,一、,数据的拼拆,42 数据的拼拆和转换,例4-7 设在30,H,和31,H,单元中各有一个8位数据:,(30,H)=x,7,x,6,x,x,4,x,x,2,x,1,x,0,(3lH)=y,7,y,6,y,y,4,y,y,2,y,1,y,0,现在要从30,H,单元中取出低5位,并从31,H,单元中取出低3位完成拼装,,拼装结果送40,H,单元保存,并且规定:,(40,H)=y,2,y,1,y,0,x,4,x,x,2,x,1,x,0,解:利用逻辑指令,ANL、ORL,来完成数据的拼拆,程序清单如下:,MOV 4OH,3OH ;,将,x,7,x,0,传送到40,H,单元,ANL 4OH,#000111llB ;,将高3位屏蔽掉,MOV A,31H ;,将,y,7,y,0,传送到累加器中,SWAP A ;,将,A,的内容左移4次,RL A ;y,2,y,0,移到高3位,ANL A,#111000OOB ;,将低5位屏蔽掉,ORL 4OH,A ;,完成拼装任务,二、 数据的转换,1,ASCII,码与二进制数的互相转换,例4-10 编程实现十六进制数表示的,ASC1I,代码转换成4位二进制数(1位十六进制数)。,解:对于这种转换,只要注意到下述关系便不难编写出转换程序:,“字符0”“字符9”的,ASCII,码值为“30,H”“39H”,,它们与30,H,之差恰好为“00,H”“09H”,,结果均0,AH。,“,字符,A”“,字符,F”,的,ASCII,码值为“41,H”“46H”,,它们各自减去37,H,后恰好为“0,AH”“0FH”,,结果0,AH。,根据这个关系可以编出转换程序如下,程序以,R,1,作为入口和出口。,ASCHIN:MOV A,R,1,;,取操作数,CLR C ;,清进位标志位,C,SUBB A,#30H ;ASCII,码减去30,H,,实现0-9的转换,MOV R,1,,A ;,暂存结果,SUBB A,#0AH ;,结果是否9?,JC LOOP ;,若9则转换正确,XCH A,R,1,SUBB A,#07H ;,若9则减37,H,MOV R,1,,A,LOOP: RET,2,BCD,码与二进制数的转换,图,4-6,BCD,码(十进制)转换成二进制数程序流程图,程序清单如下:,MAIN:MOV A,R,MOV R,2,,A ;,给子程序入口参数,ACALL BCDBIN ;,调用子程序,MOV B,#64H,MUL AB,MOV R,6,,A,XCH A,B,MOV R,,A,MOV A,R,4,MOV R,2,,A,ACALL BCDBIN ;,调用子程序,ADD A,R,6,MOV R,4,,A,MOV A,R,ADDC A,#00H,MOV R,,A,RET,子程序如下:,BCDBIN:MOV A,R,2,ANL A,#0F0H ;,取高位,BCD,码,屏蔽低4位,SWAP A,MOV B,#0AH,MUL AB,MOV R,,A,MOV A,R,2,ANL A,#0FH,ADD A,R,3,;,加低位,BCD,码,MOV R,2,,A,RET,43 查表程序,使用,MOVC A,A+DPTR,指令来查表,程序清单如下:,MOV DPTR,#BS ;,子程序入口地址表首址,RL A ;,键码值乘以,MOV R,2,,A ;,暂存,MOVC A,A+DPTR ;,取得入口地址低位,PUSH A ;,进栈暂存,INC A,MOVC A,A+DPTR ;,取得入口地址高位,MOV DPH,A,POP DPL,CLR A,JMP A+DPTR ;,转向键处理子程序,BS: DB RK,0,L ;,处理子程序入口地址表,DB RK,0,H,DB RK,1,L,DB RK,1,H,DB RK,2,L,DB RK,2,H, ,44 散转程序,一、 采用转移指令表的散转程序,例4-17 编出要求根据,R,的内容转向各个操作程序的程序。即当,(,R,)=0,,转向,OPRO,(R,)=1,,转向,OPRl,(R,)=n,,转向,OPRn,解:程序清单如下:,MOV A,R,RL A ;,分支序号值乘2,MOV DPTR ,#BRTABL ;,转移指令表首址,JMP A+DPTR ;,转向形成的散转地址,BRTABL:AJMP OPR0 ;,转移指令表,AJMP OPR1,AJMP OPRn,二、 采用地址偏移量表的散转程序,例4-19 编出能按,R,的内容转向5个操作程序的程序。其对应关系如下:,OPRD0:,操作程序0,OPRD1:,操作程序1,OPRD2:,操作程序2,OPRD3:,操作程序3,OPRD4:,操作程序4,解:程序清单如下:,MOV A,R,MOV DPTR,#TAB3 ;,指向地址偏移量表首址,MOVC A,A+DPTR ;,散转点入口地址在,A,中,JMP A+DPTR ;,转向相应的操作程序入口,TAB3: DB OPRDO-TAB3 ;,地址偏移量表,DB OPRDl-TAB3,DB OPRD2-TAB3,DB OPRD3-TAB3,DB OPRD4-TAB3,三、 采用转向地址表的散转程序,例4-20 编程:要求根据,R,的内容转向相应的操作程序中去。设备操作程序的转向地址分别为,OPRD0,,OPRDl, OPRDn。,解:程序清单如下:,MOV DPTR,#BRTABL ;,指向转向地址表,MOV A,R,ADD A,R,;(A)(R,)*2,JNC NAND;,INC DPH ;(R,)*2,的进位加到,DPH,NAND:MOV R,,A ;,暂存变址值,MOVC A,A+DPTR ;,取转向地址高8位,XCH A,R,INC A,MOVC A,A+DPTR ;,取转向地址低8位,MOV DPL,A ;,转向地址在,DPTR,中,MOV DPH,R,CLR A,JMP A+DPTR ;,转向相应的操作程序,BRTABL:DW OPRDO ;,转向地址表,DW OPRD1,DW OPRDn,四、 采用“,RET”,指令的散转程序,例4-21 编出能根据,R,的内容转向各个操作程序的程序。设该操作程序的转向地址分别为,OPRD0,,OPRDl, OPRDn。,解:程序清单如下:,MOV DPTR,#TAB3 ;,指向转移地址表,MOV A,R,ADD A,R,JNC NAND,INC DPH,NAND:MOV R,,A,MOVC A,A+DPTR ;,取转向地址高8位,XCH A,R,INC A,MOVC A,A+DPTR ;,取转向地址低8位,PUSH A ;,转向地址入栈,MOV A,R,PUSH A,RET ;,转向操作程序,TAB3:DW OPRD0 ;,转向地址表,DW OPRDl,DW OPRDn,45,I/O,端口控制程序,例4-22 试编出能模拟图4-9中电路的程序,。,ORG 0200H,D BIT 00H,E BIT 01H,G BIT 02H,LOOP1:ORL P,1,,#08H ;,准备,P,1.3,输入,LOOP2:MOV C,P,1.3,;,检测,K3,状态,JC LOOP2 ;,若未准备好(,K3,断),则,LOOP2,ORL P,1,,#03H ;,若准备好,则准备输入,P,1.0,和,P,1.1,状态,MOV C,P,1.0,;,输入,K0,状态,MOV D,C ;,送入,D,MOV C,P,1.1,;,输入,K1,状态,MOV E,C ;,送入,E,ANL C,D ;DE,送,C,MOV G,C ;,送入,G,MOV C,E,ORL C,D ;DE,送,C,ANL C,/G ;(DE)(DE),MOV P,1.2,,C ;,输出结果,SJMP LOOP1 ;,准备下次模拟,END,46 子程序调用时的参数传递方法,一、 通过寄存器或片内,RAM,传递参数,例4-23 利用通过寄存器或片内,RAM,传递参数这种方法编出调用,SUBRT,子程序的主程序。,解:应该是:,MAIN :MOV R,0,,#30H ;,传送,RAM,数据区的起始地址,MOV R,7,,#0AH ;,传送,RAM,数据区的长度,ACALL SUBRT ;,调用清零子程序,SJMP $ ;,结束,SUBRT:MOV A,#00H ;,清零子程序,LOOP:MOV R,0,,A,INC R,0,DJNZ R,7,,LOOP,RET,二、 通过堆栈传递参数,例4-25 在,HEX,单元存有两个十六进制数,试编程分别把它们转换成,ASCII,码存入,ASC,和,ASC+1,单元。,解:本题子程序采用查表方法完成一个十六进制数的,ASCII,码转换,主程序完成入口参数的传递和子程序的两次调用,以满足题目要求。程序清单为:,ORG 1200H,PUSH HEX ;,入口参数压栈,ACALL HASC ;,求低位十六进制数的,ASCII,码,POP ASC ;,出口参数存入,ASC,MOV A,HEX ;,十六进制数送,A,SWAP A ;,高位十六进制数送低4位,PUSH ACC ;,入口参数压栈,ACALL HASC ;,求高位十六进制数的,ASCII,码,POP ASC+1 ;,出口参数送,ASC+1,SJMP $ ;,原地踏步,结束,HASC:DEC SP,DEC SP ;,入口参数地址送,SP,POP ACC ;,入口参数送,A,ANL A,#0FH ;,取出入口参数低4位,ADD A,#07H ;,地址调整,MOVC A,A+PC ;,查相应,ASCII,码,PUSH ACC ;,出口参数压栈,INC SP,INC SP ;SP,指向断点地址高8位,RET ;,返回主程序,ASCTABL:DB 0,1,2,3,4,5,6,7,DB 8,9,A,B,C,D,E,F,END,三、 利用指针寄存器传递参数,例4-26 编出能实现打印,THIS IS AN EXAMPLE,的程序。,解:将要打印的字符及代码不是放在调用指令之前,而是紧跟在调用指令之后。,主程序:,MAIN:,ACALL PRINT ;,调用打印子程序,DBTHIS IS AN EXAMPLE ;,要打印的字符及代码,DB OAH,ODH,OOH,NEXT:,子程序:,PRINT:POP DPH ;,把调用指令下面字节的地址弹出,作为数据指针,POP DPL,PPPl: MOV A,#OOH,MOVC A,A+DPTR ;,取出欲打印的字符,INC DPTR,JZ PPPEND ;,判断是否为结束字符,PPP2: ;,打印程序,SJMP PPPl ;,未完,继续打印,PPPEND:JMP A+DPTR ;,指向主程序,NEXT,处,取代返回指令,第五章 定时/计数器,51 定时/计数的结构及工作原理,一、 定时/计数器的结构和原理,1定时/计数器的结构,图,51,TMOD,、,TCON,与,T,0,、,T,1,的结构框图,2定时/计数器的原理,图 52 定时/计数器的结构框图,二、 定时/计数器方式寄存器,TMOD,表格,51,方式选择位意义,M,1,M,0,工作方式,功 能 说 明,0 0,方式0,13位计数器,0 1,方式1,16位计数器,1 0,方式2,自动再装入8位计数器,1 1,方式3,定时器0:分成两个8位计数器,定时器1:停止计数,TMOD,格式如下,:,定时器1,定时器0,TMOD,D,7,D,6,D,5,D,4,D,3,D,2,D,1,D,0,GATE,C/,T(),M,1,M,0,GATE,C/,T(),M,1,M,0,三、 定时控制寄存器,TCON,定时器控制字,TCON,的格式如下,:,TCON,8,FH,8,EH,8,DH,8,CH,8,BH,8,AH,89,H,88,H,TF,1,TR,1,TF,0,TR,0,IE,1,IT,1,IE,0,IT,0,52 定时/计数器的工作方式,一、 方式0,当,M,1,M,0,两位为00时,定时/计数器被选为工作方式0,其逻辑结构如图 53 所示。,图,53,T,0,(,或,T,1,),方式,0,结构,二、 方式1,图,54,T,0,(,或,T,1,),方式,1,结构,三、 方式2,图,55,T,0,(,或,T,1,),方式,1,结构,三、 方式2,图 56,T,0,(,或,T,1,),方式2结构,四、 方式3,图,57,T,0,方式,3,下和,T,1,结构,一、 方式0、方式1的应用,例5-1 选择,T,1,方式0用于定时,在,P,1。1,输出周期为1,ms,的方波,晶振,f,osc,=6MHZ。,根据题意,只要使,P,1。1,每隔500,s,取反一次即可得到1,ms,方波,因而,T1,的定时时间为,500,s。,将,T,1,设为定时方式0:,GATE=0,C/T()=0,M,1,M,0,=00;T,0,不用可为任意,只要不使其进入方式3,一般取0即可。故,TMOD=00H。,系统复位后,TMOD,为0,所以不必对,TMOD,置初值。下面计算500,s,定时,T,1,的初值:,机器周期,T=12/f,osc,=12/610,6,=2s,设初值为,X,则: (2,13,X)210,6,s =50010,6,s,X=7942D=1111100000110B=1F06H,因为在作13位计数器用时,,TL,1,高3位未用,应写0,,X,的低5位装入,TL,1,的低5位,所以,TL,1,=06H;X,的高8位应装入,TH,1,,,所以,TH,1,=F8H。,源程序如下:,MOV,TL,1,,#06H,;给,TL,1,置初值,MOV,TH,1,,#F8H,;给,TH,1,置初值,SETB,TR,1,;启动,T,1,LP1:,JBC,TF,1,,LP2,;查询计数溢出否,AJMP,LP1,LP2:,MOV,TL,1,,06H,;重装初值,MOV,TH,1,,F8H,CPL,P,1。1,;输出取反,AJMP,LP1,;重复循环,二、 方式2的应用,例5-2 用定时器1方式2计数,要求每计满100次,将,P,1。0,取反。,根据题意,外部计数信号由,T,1,(P,3.5,),引脚输入,每跳变一次计数器加1,由程序查询,TF,1,。,方式2有自动重装初值的功能,初始化后不必再置初值。,初值,X=2,8,100=156D=9CH,TH,1,=TL,1,=9CH,TMOD=60H,源程序如下:,MOV,TMOD,#60H,;设置,T,1,为方式2,MOV,TL,1,,#9CH,;置初值,MOV,TH,1,,#9CH,SETB,TR,1,;启动,T,1,DEL:,JBC,TF,1,,REP,;查询计数溢出,AJMP,DEL,REP:,CPL,P,1。0,;输出取反,AJMP,DEL,三、 门控位的应用,图,58,外部正脉冲宽度测量,例5-3 利用,T,0,门控位测试,INT,0,引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上,。,根据要求可这样设计程序:将,T,0,设定为方式1,,GATE,设为1,置,TR,0,为1。一旦,INT,0,(P,3。2,),引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取,T,0,的计数值并显示。,测试过程如下:,源程序如下:,BEGIN:,MOV,TMOD,# O9H,;,T,0,工作于方式1,,GATE,置1,MOV,TL,0,,#00H,MOV,TH,0,;#00H,WAIT1:,JB,P,3。2,,WAIT1,;等待,INT,0,变低,SETB,TR,0,;启动,T,0,WAIT2:,JNB,P,3。2,,WAIT2,;等待正脉冲到,WAIT3:,JB,P,3。2,,WAIT3,;等待,INT,0,变低,CLR,TR,0,;停止,T,0,计数,MOV,R,0,,#DISBUF,;显示缓冲区首地址送,R,0,MOV,A,TL,0,;机器周期的存放格式为低位占低地址,高位占高地址,连续4个显示缓冲单元,XCHD,A,R,0,INC,R,0,SWAP,A,XCHD,A,R,0,INC,R,0,MOV,A,TH,0,XCHD,A,R,0,INC,R,0,SWAP,A,XCHD,A,R,0,DIS:,LCALL,DISUP,;长调用显示子程序,AJMP,DIS,;重复显示机器周期数,由于定时方式1的16位计数长度有限,被测脉冲高电平宽度只能小于65536个机器周期。,源程序如下,:,第六章,MCS-51,单片机的系统扩展,6,1,MCS-51,单片机的引脚定义及最小应用系统,一、 8051的引脚定义及功能,图,61,MCS-51,的引脚图及功能分类图,二、,MCS-51,单片机最小应用系统,图,62 8051/8751,最小应用系统,62,MCS-51,单片机外部存储器的扩展,一、 外部程序存储器的扩展及取指过程,图 63 外部程序存储器一般连接方法,1,程序存储器的一般连接方式,图,6-4,扩展,8,K,字节程序存储器的连线图,2,典型,EPROM,扩展电路,3,程序存储器,E,2,PROM,的扩展,图,6-5,E,2,PROM,作为程序存储器的扩展图,二、 数据存储器的扩展,图,6-6,扩展,2,KB,数据存储器的线路图,1,数据存储器一般的扩展方法,2,常用数据存储器的扩展电路,三、 综合扩展实例,图,6-7,扩展,16,KB RAM,和,16,KB EPROM,63 并行,I/O,口的扩展,一、 简单,I/O,口的扩展,图,6-8,简单,I/O,接口扩展电路,二、 可编程,I/O,口的扩展,图,69 8155,的结构和引脚,表格,61 8155,口地址分布,AD,0,AD,7,选 中 寄 存 器,A,7,A,6,A,5,A,4,A,3,A,2,A,1,A,0, ,0,0,0,内部命令寄存器, ,0,0,1,通用,I/O,口,A,寄存器, ,0,1,0,通用,I/O,口,B,寄存器, ,0,1,1,口,C:,通用,I/O,口或控制口, ,1,0,0,定时/计数器的低8位寄存器, ,1,0,1,定时/计数器的高8位寄存器,3,8155与单片机的连接,表格,62 8155,的,RAM,和,I/O,口地址分配,P,2.4,P,2.3,选择,地 址,0,0,RAM,E700HE7FFH (256B),0,1,I/O,口,EF00H,命令口/状态口,EF01H,通用,I/O,口,A,EF02H,通用,I/O,口,B,EF03H,口,C,EF04H,计数值低8位,EF05H,计数值高8位和计数方式,图,610,扩展一片,8155,的基本方案,48155片内,RAM,的使用,OK: ;,和为0,读/写正确,(1)命令寄存器的用法,表格,63,C,口工作方式,方式,位,ALTI,ALT2,ALT3,ALT4,PC,0,输入方式,输出方式,AINTR(A,口中断),AINTR(A,口中断),PC,1,ABF(A,口缓冲器满),ABF(A,口缓冲器满),PC,2,ASTB(A,口选通),ASTB(A,口选通),PC,3,输出方式,BINTR(B,口中断),PC,4,BBF(B,口缓冲器满),PC,5,BSTB(B,口选通),备注,A,口,B,口为基本,I/O,口,A,口,B,口为基本,I/O,口,A,口为选通输入方式,B,口为基本,I/O,口,A,口、,B,口为选通,输入/输出方式,图,612 8155,方式,4,的逻辑结构图,6,作定时/计数器用,表,6-4 8155,定时器输出方式,M,2,M,1,方 式,定时器输出方波,0 0,单个方波,0 1,连续方波,1 0,在终止计数时输出单个脉冲,1 1,连续脉冲,第七章,MCS-51,系统的串行接口,71 串行通讯概述,一、 串行通讯的两种基本方式,1,异步传送方式,第,n,个字符(一串行帧),n+1,n-1,P,1,0,D0,D1,D2,D3,D4,D5,D6,D7,P,1,0,D0,起始位,数 据 位,校验位 停止位,图,7-2,异步通讯的帧格式,开始,结束,同步字符,同步字符,数据段,CRC,字符,#,1,CRC,字符,#,2,图,7-3,同步传送方式,二、 波特率,图 7-4 串行通讯的制式,三、 数据传送的方向,1,单工制式,(,Simplex),2,半双工制式,(,Half Duplex),3,全双工(,Full-duplex),制式,72,MCS-51,单片机的串行接口,一、,MCS-51,串行口结构,图 7-5,MCS-51,串行口组成示意,1串行口数据缓冲器,SBUF,2,串行口控制寄存器,SCON,见表格7-1,SM0,位地址,9,F,9,E,9,D,9,C,9,B,9,A,99,98,SCON,SM1,SM2,REN,TB8,RB8,TI,RI,接收中断标志,发送中断标志,接收数据第9位,发送数据第9位,接收控制,0:禁止接收,1:允许接收,多机通信,0:单机对单机,1:多机通信,图,7-6,串行口控制寄存器,SCON,图,7-6,串行口控制寄存器,SCON,3,特殊功能寄存器,PCON,PCON,主要是为,CHMOS,型单片机的电源控制设置的专用寄存器,单元地址为87,H,,不能位寻址。其格式如,图 7-7 所示。,SMOD,GF1,GF0,PD,IDL,通用标志位,空闲控制位,0:正常方式,1:空闲方式,掉电控制位,0:正常方式,1:掉电方式,波特率选择位,SMOD=1,时,方式1、2和3的波特率加倍,图,7-7,PCON,各位定义,二、,MCS-51,串行的工作方式,MCS-51,的串行口有四种工作方式,它是由,SCON,中的,SM1,和,SM0,来决定的,如表格 7-1,表格,7-1,串行口的工作方式,SM0,SMl,工作方式,方式简单描述,波特率,0,0,0,移位寄存器,I/O,主振频率/12,0,1,1,8,位,UART,可变,1,0,2,9位,UART,主振频率/32或主振频率/64,1,1,3,9,位,UART,可变,1,方式0,图,7-8,串行口方式,0,的时序,2方式1,在方式1时,串行口被设置为波特率可变的8位异步通信接口。其时序如图 7-9 所示。,图,7-9,串行口方式,1,的时序,3,方式2,串行口工作为方式2时,被定义为9位异步通信接口。其时序如图 7-10 所示。,4,方式3,图,7-10,串行口方式,2,、,3,的时序,三、,MCS-51,串行通信的波特率,1,方式0的波特率,2,方式2的波特率,3,方式1或方式3的波特率,表格,7-2,常用波特率和定时器,T1,初值关系表,波特率,(方式1、3),f,osc,=6M,f,osc,=12M,f,osc,= 11.059M,SMOD,T,1,方式,初值,SMOD,T,1,方式,初值,SMOD,T,1,方式,初值,62.5,k,1,2,FFH,19.2,k,1,2,FDH,9.6,k,0,2,FDH,4.8,k,1,2,F3H,0,2,FAH,2.4,k,1,2,F3H,1,2,F3H,0,2,F4H,1.2,k,1,2,E6H,0,2,E6H,0,2,E8H,600,1,2,CCH,0,2,CCH,0,2,D0H,300,0,2,CCH,0,2,98,H,0,2,A0H,137.5,1,2,1,DH,0,2,1,DH,0,2,2,EH,110,0,2,72,H,0,1,FEEBH,0,1,FEFFH,表格,7-2,常用波特率和定时器,T1,初值关系表,73,MCS-51,单片机串行口的应用,一、 串行口方式0用作扩展并行,I/O,口,图,7-11,串行口方式,0,扩展并行输出口,MOV,SCON,#00H,;串行口方式0初始化,MOV,A,#80H,;最左一位发光二极管先亮,CLR,P,1.0,;关闭并行输出,START1:,MOV,SB
展开阅读全文