1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第二章,MCS-51,内部结构,1 MCS-51,的引脚功能,2,当前工作寄存器区的选择,RS1 RS0,所选的,4,组寄存器,0 0 0,区(内部,RAM,地址,00H,07H,),0 1 1,区(内部,RAM,地址,08H,0FH,),1 0 2,区(内部,RAM,地址,10H,17H,),1 1 3,区(内部,RAM,地址,18H,1FH,),3,机器周期、指令周期与指令时序,一、时钟周期,单片机的,基本时间单位,。若时钟的晶体的振荡频率为,fosc,,则振荡周期,Tosc=1/fosc,,时钟周期,
2、T=2Tosc,;,例如,:,fosc=6MHz,,,Tosc=166.7ns,。,二、机器周期,CPU,完成一个基本操作所需的时间,称为,机器周期,。,执行一条指令分为几个机器周期,。每个机器周期完成一个基本操作。,MCS-51,单片机每,12,个振荡,周期为,1,个,机器周期,,第三章,MCS-51,单片机指令系统,1.,指令系统的寻址方式,寻址方式,就是在指令中,说明操作数所在地址,的方法。,共,7,种,寻址方式。,1,寄存器寻址方式,操作数在寄存器中,MOV A,,,Rn,;(,Rn,),A,,,n=0,7,表示把寄存器,Rn,的内容传送给累加器,A,2,直接寻址方式,操作数直接以单元
3、地址的形式给出:,MOV A,,,40H,寻址范围:,(1),内部,RAM,的,128,个单元,(2),特殊功能寄存器。除了以单元地址的形式外,还,可用寄存器符号,的形式给出。例如:,MOV A,,,80H,与,MOV A,,,P0,是等价的,。,3.,寄存器间接寻址方式,寄存器中存放的是操作数的地址,,在寄存器前加,前缀标志,“,”,。,访问,内部,RAM,或,外部,RAM,的低,256,个字节,时,,只能采用,R0,或,R1,作为间址寄存器,。例如:,MOV A,,,Ri,;,i=0,或,1,其中,Ri,中的内容为,40H,,把内部,RAM40H,单元内容送,A,。,寻址范围:,(,1,)
4、访问,内部,RAM,低,128,个,单元,其通用形式为,Ri,(,2,)对,外部内部,RAM,的,64K,字节,的间接寻址,例如:,MOVX A,,,DPTR,(3,)片外数据存储器的低,256,字节,例如:,MOVX A,,,Ri,(,4,)堆栈区,堆栈操作指令,PUSH,(压栈)和,POP,(出栈)使用堆栈指针(,SP,)作间址寄存器,4,立即寻址方式,操作数在指令中直接给出,需在操作数前面加前缀,“,#,”,。例如:,MOV A,,,#40H,5,基址寄存器加变址寄存器间址寻址方式,本寻址方式是以,DPTR,或,PC,作基址寄存器,以累加器,A,作为变址寄存器。,6,位寻址方式,MCS-
5、51,有,位处理,功能,可以对数据位进行操作。,例如:,MOV C,,,40H,是把,位,40H,的值送到进位位,C,。,寻址范围包括:,(,1,)内部,RAM,中的位寻址区,。,位有两种表示方法,,例如,,40H,;另一种是单元地址加上位,例如,,(28H).0,,指的是,28H,单元中的最低位。它们是等价的。,(,2,),特殊功能寄存器中的可寻址位,可寻址位,在指令中有如下,4,种,的表示方法:,a.,直接使用位地址,。例如,PSW.5,的位地址为,0D5H,。,b.,位名称的表示,方法。例如:,PSW.5,是,F0,标志位,可使用,F0,表示该位。,c.,单元地址加位数,的表示方法。例如
6、0D0H).5,。,d.,特殊功能寄存器符号加位数,的表示方法。例如,:,PSW.5,。,7,相对寻址方式,在相对寻址的转移指令中,给出了地址偏移量,以,“,rel,”,表示,即把,PC,的当前值加上偏移量就构成了程序转移的目的地址:,目的地址,=,转移指令所在的地址,+,转移指令的字节数,+rel,偏移量,rel,是一带符号的,8,位二进制数补码数,。,范围是:,128-+127,伪指令,在,MCS-51,汇编语言源程序中应有向汇编程序发出的指示信息,告诉它如何完成汇编工作,这是通过使用伪指令来实现的。,也称为汇编程序控制命令。只有在汇编前的源程序中才有伪指令。经过汇编得到目标程序(机
7、器代码)后,伪指令已无存在的必要,所以,“,伪,”,体现在汇编时,,伪指令没有相应的机器代码产生,。,常用的伪指令,:,1.ORG,(,ORiGin,)汇编起始地址命令,2.END(END of assembly),汇编终止命令,3,DB,(,Define Byte,)定义字节命令,4,DW,(,Define Word,)定义数据字命令,5,EQU,(,EQUate,)赋值命令,6.DS,定义空间命令,7.BIT,位地址符号命令,第,4,章,MCS-51,汇编语言程序设计,1.,变量,X,存放在,VAR,单元中,函数值,Y,存放在,FUNC,单元中,试按下式的要求给,Y,赋值,写出汇编语言程序
8、ORG 1000H,VAR DATA 30H,FUNC DATA 31H,MOV A,VAR,;,X,A,JZ DONE ;,若,A=0,,则转到,DONE,JNB ACC.7 POSI,;若,A0,,则转到,POSI,MOV A,#0FFH,;若,A0,,则,Y=-1,SJMP DONE,POSI:MOV A,#01H,DONE:MOV FUNC,A,SJMP$,END,给出,80C51,单片机产生三角波的汇编程序,假设起始地址为,2000H,。,ORG 2000H,START:MOV R0,,,#0FEH,UP:MOVXR0,,,A,;三角波上升边,INC A,JNZ UP,DOWN:
9、DEC A,;,A=0,时再减,1,又为,FFH,JNZ DOWN,SJMP UP,第,5,章,MCS-51,中断系统,1,中断源 入口地址,外部中断0 0003,H,定时器/计数器,T0 000BH,外部中断1 0013,H,定时器/计数器,T1001BH,串行口中断0023,H,2,外部中断的触发方式,电平触发 和边沿触发,假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。,在主程序中编写如下程序段:,SETB EA ;CPU,开中断,SETB EX0;,允许外中断0产生中断,SETB PX0;,外中断0为高级中断,SETB IT0 ;,外中断0为跳沿触发
10、方式,第,6,章,MCS-51,定时器,/,计数器,1.,单片机复位时,两个寄存器的所有位都被清0。,6.1.1 工作方式控制寄存器,TMOD,8位分为两组,高4位控制,T1,,低4位控制,T0。,(1)GATE,门控位,0,:,以,TRX(X=0,1),来启动定时器/计数器运行。,1:,用外中断引脚(,INT0,*,或,INT1,*,)上的高电平和,TRX,来启动定时器/计数器运行。,(2)M1、M0,工作方式选择位,M1 M0,工 作 方 式,0 0,方式0,,13位定时器/计数器。,0 1,方式1,,16位定时器/计数器。,1 0,方式2,,8位常数自动重新装载,1 1,方式3,,仅适用
11、于,T0,T0,分成两个8 位计数器,,T1,停止计数。,(3),C/T,*,计数器模式和定时器模式选择位,0:,定时器模式。,1:,计数器模式。,2.,定时器,/,计数器初始化,MCS-51,单片机采用,12MHz,晶振,定时,2ms,,用定时器方式,0,时的,16,进制初值应为多少?,根据公式,T=(TM-TC)*12/fosc,(,us,),(2,13,-TC)12/fosc=2ms,TC=8192-2000=6192=1830H,第,7,章,MCS-51,串口通信,1.,1),SM0、SM1,串行口4种工作方式的选择位,串行口的4种工作方式,SM0 SM1,方式,功 能 说 明,0 0
12、0,同步移位寄存器方式(用于扩展,I/O,口),0 1,1,8位异步收发,波特率可变(由定时器控制),1 0,2,9位异步收发,波特率为,fosc/64,或,fosc/32,1 1,3,9,位异步收发,波特率可变(由定时器控制),2.,波特率的定义,波特率的,定义,。,对于定时器的不同工作方式,波特率的范围不一,定时器,T1,产生波特率的计算,(1),方式0波特率,时钟频率,fosc,1/12,,不受,SMOD,位的值的影响。若,fosc=12MHz,,波特率为,fosc/12,即1,Mb/s。,(2),方式2波特率,=(2,SMOD,/64),fosc,若,fosc=12MHz:SMOD=
13、0,波特率=187.5,kb/s;,SMOD=1,波特率=375,kb/s,3),方式1,或,方式3,时,波特率为:,波特率=(2,SMOD,/64),T1,的溢出率,实际设定波特率时,,T1,常设置为,方式2定时,(自动装初值),这种方式不仅操作方便,也可避免因软件重装初值而带来的定时误差。,综合应用题,1.,利用,74LS273,扩展输出口接,8,路发光二极管,按循环点亮方式输出。并行口地址是,8060H,,晶振为,12MHz,。如下图所示:,要求:,1,、利用定时器,T1,实现,120ms,定时,给出,T1,的定时常数。,2,、编程实现发光二极管每隔,1.2,秒钟,右循环点亮,1,个灯。
14、即初始,L1,亮,过,1.2,秒后,L1,灭,,L2,亮,,1.2,秒钟后,L2,灭,L3,亮,,.,依次循环。,定时器,T1,的定时时间是,60,毫秒,定时器,T1,的初值应该是,2,16,-60000,,即,15A0H.,ORG 0000H,LJMP MAIN,ORG 000BH,LJMP INTT1,ORG 0030H,MAIN:MOV SP,#60H,MOV A,#0FEH,MOV DPTR,#8060H,MOV DPTR,A,MOV R1,#20,MOV TMOD,#10H;00010000B,MOV TH1,#15H;120ms,MOV TL1,#0A0H,SETB EA,SETB ET1,SETB TR1,HERE:AJMP HERE,INTT1:MOV TH1,#15H,MOV TL1,#0A0H,DJNZ R1,NEXT,RR A,MOV DPTR,A,NEXT:RETI,END,






