资源描述
,单元二,MCS-51,单片机内部结构,2.1,任务一 单灯受控闪烁,2.1.1,硬件电路与工作原理,2.1.2,控制程序,2.1.3,源程序编辑、编译、下载,2.1.4,相关知识,返回主目录,2.1,单灯受控闪烁,学习目标,:过学习任务一的完成方法,熟悉,mcs-51,单片机的内部结构,掌握,mcs-51,单片机各组成部分的功能和特点,。,任务描述,:,单片机上电工作时,发光二极管按,1HZ,左右频率闪烁,按键,S1,后在原状态基础上停止,5,秒,再按原频率闪动,。,2.1.1,硬件电路与工作原理,1,.,硬件电路,2,.,工作原理,从图上可以看出,当中某个引脚输出低电平时,则发光二极管上有电流流过,发光二极管发光,否则,当对应引脚为高电平时,发光二极管上无电流流过,发光二极管熄灭。,S1,S4,由于按键一端接地,当按键按下时,对应的引脚被拉成低电平。单片机通过查询这几根口线的高低电平状态,就知道对应的按键是否按下。,1.,主程序流程图,2.1.2,控制程序,P3口除了作普通的I/O口(功能和P1口一样)直接和外部设备打交道外;还具有第二功能。,F0 用户定义标志位;,通过本次任务的分析,我们基本上知道MCS-51单片机的结构,它由CPU、程序存储器、数据存储器、并行输入输出口、定时计数器、中断系统等构成,当然除了本次任务用到的以上资源外,51单片机还有一个串行通讯口。,MOVTH0,#4CH,程序存储器,详细的用法,在单元五进行讲解。,5定时/计数器1的外部输入口(T1)P3.,地址锁存信号输出端1/6fosc,R0、R1、R2、R3、R4、R5、R6、R7,MOV TH0,#4CH,【状态周期】:单片机完成一个最基本的动作所需的时间周期。,同理,P2口作输入时,也必须先往口锁存器写1。,位寻址区(20H2FH)16个字节。,这就象我们平时通常所说的“中断”。,16*8=128位,每一位都有一个位地址,范围为:00H7FH,位地址区也可作为一般的用户RAM使用。,2.,控制程序,ORG 0000H,LJMP MAIN,ORG 0003H,RETI,ORG 000BH,LJMP DELAY,MOV TMOD,#01H,MOV TL0,#00H,MOV TH0,#4CH,MOV B,#20,SETB IT0,SETB EA,SETB EX0,ORG,、,END,等伪指令将在核心模块的单元三、四中详细讲解,SETB ET0,SETB PX0,MOV P1,#00H,SETB TR0,BEGIN:JB 20H.0,SHOW,MOV B,#250,CJNE B,#00,$,MOV A,P1,CPL A,MOV P1,A,;,SJMP BEGIN,DELAY:MOV TL0,#00H,MOVTH0,#4CH,DJNZB,LOOP,MOV B,#20,LOOP:RETI,END,任务中假设单片机外接的石英晶体振荡器的频率为,2.1.3,源程序的编辑、编译、下载,1.,打开“伟福”模拟仿真软件进行程序的编辑、编译。,1、正确选择单片机类型8751或8031,2、正确选择编译器伟福编译器,3、选择模拟仿真功能,4、打开或新建文件进行编辑,5、编译,2.,打开“,ISP,下载软件”将目标文件下载到,ISP-4,实验开发板上的,AT89S51,单片机芯片,观察程序运行结果。,1、编译成功后打开下载软件,2、选择好单片机89,S51,并测试,3、打开伟福6000编译生成的.,BIN,或.,HEX,文件,4、选择自动写完成擦除、写、读、校验过程,5、观看运行结果,2.1.4,相关知识,1.,单片机程序运行的结果如何送给发光二极管?,从刚才的任务中,我们看到发光二极管随着程序的运行,有规律的闪动,那么,现在我们来看看单片机是怎样将程序中运行的结果送给发光二极管的。,原来,,89S51,单片机上有,4,组,8,位,I/O,口:,P0,、,P1,、,P2,和,P3,口,,P1,、,P2,和,P3,为准双向口,,P0,口则为双向三态输入输出口,他们在单片机中,主要承担了和单片机外部设备打交道的任务,下面我们分别介绍这几个,I/O,口:,(,1,),P0,和,P2,口,P0,口锁存器和缓冲器结构,P0,口除了作普通的,I/O,口,直接和外部设备打交道外,;,还用作片外总线的地址总线,AB0-AB7,的低八位、数据总线。,P2,口锁存器和缓冲器结构,P2,口除了作普通的,I/O,口,直接和外部设备打交道外,;,还用作片外总线的地址总线的高八位地址线,AB8-AB15,注意:,P0,口在作输出入口使用时,由于它无内部上拉电阻,为了在口线上输出高电平并具有一定的驱动能力,必须外接上拉电阻。作输入口使用时,为了防止口锁存器对输入口线的输入信号造成影响,必须先往口锁存器写,1,。同理,,P2,口作输入时,也必须先往口锁存器写,1,。,(,2,),P1,口,P1,口锁存器和缓冲器结构,P1,口只用作普通输入输出口,注意:,和,P0,、,P2,口一样,为防止口锁存器对输入口线造成影响,,P1,口作输入时,也必须先往口锁存器写,1,。,(,3,),P3,口,P3,口锁存器和缓冲器结构,P3,口除了作普通的,I/O,口(功能和,P1,口一样)直接和外部设备打交道外,;,还具有第二功能。,P3.0,串行输入口,(RXD),串行输出口,(TXD),P3.2,外中断,0(INT0),P3.3,外中断,1(INT1),P3.5,定时,/,计数器,1,的外部输入口,(T1),P3.6,外部数据存储器写选通,(WR),定时,/,计数器,0,的外部输入口,(T0),外部数据存储器读选通,(RD),2.,单片机的软件及数据如何存放?,从前面的任务中,我们还看到要控制灯闪烁,必须编制程序,还必须将控制灯的相关数据预先存储,那么,在单片机中的程序和数据是怎样保存的?原来,在单片机内部有程序存储器和数据存储器,如果内部程序存储器和数据存储器的容量不够的话,还可以在单片机外部为它扩展,最大我们可以将程序存储器空间总容量扩大到,64K,,将数据存储器在片外再单独扩展,64K,,这样,以,89S51,为例,数据存储器的总容量可达,64K,(片外),128,字节(片内)。,MCS-51,单片机的存储器组织结构,采用典型的哈佛结构,即程序存储器和数据存储器完全独立,拥有各自的寻址系统,包括片内数据存储器与片外数据存储器都拥有自己独立的寻址系统。,程序存储器,),(,外部,K,64,RAM,数据存储器,MCS-51,单片机存储器组织结构,(,1,),程序存储器,用途:,存放程序及程序运行时所需的常数。,寻址范围:0000,H FFFFH,容量64,KB,,即地址长度:16位,,,寻址内部,ROM,;,说明,:,当,PC,值超过片内,ROM,容量时会自动转向 外部存储器,空间。,,,寻址外部,ROM。,说明,:8031单片机,必须接低电平。,程序存储器中,6,个具有特殊含义的单元,0000,H,系统复位,,PC,指向此处;,0003,H,外部中断,0,入口,000,BH,T0,溢出中断入口,0013,H,外中断,1,入口,001,BH,T1,溢出中断入口,0023,H,串口中断入口,位寻址区,位寻址区(20,H2FH)16,个字节。,16*8=128位,每一位都有一个位地址,范围为:00,H7FH,,位地址区也可作为一般的用户,RAM,使用。,(,3,),特殊功能寄存器,寄存器,位地址,/,位定义,地址,F7,F6,F5,F4,F3,F2,F1,F0,B,F0H,E7,E6,E5,E4,E3,E2,E1,E0,ACC,E0,D7,D6,D5,D4,D3,D2,D1,D0,PSW,CY,AC,F0,RS1,RS0,OV,/,P,D0H,BF,BE,BD,BC,BB,BA,B9,B8,IP,B8H,B7,B6,B5,B4,B3,B2,B1,B0,P3,P3.7,P3.6,P3.5,P3.,4,P3.3,P3.2,P3.1,P3.0,B0H,IE,A8H,A7,A6,A5,A4,A3,A2,A1,A0,P2,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0,A0H,SBUF,99,H,1,),程序计数器,PC(program Counter),程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。,PC,是一个,16,位的计数器,由两个八位寄存器,PCH,和,PCL,组成,用于存放一条要执行的指令地址,寻址范围为,64kB,,,PC,有自动加,1,功能,即完成了一条指令的执行后,其内容自动加,1,。,PC,本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序的执行顺序。,2,),累加器,ACC(Accumulator),累加器,A,是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。,加、减、乘、除法运算的指令,运算结果都存放于累加器,A,或寄存器,B,中。,大部分的数据操作都会通过累加器,A,进行,它形象于一个数据运输中转站,在数据传送过程中,任何两个不能直接实现数据的传送单元之间,通过累加器,A,中转,都能送达目的。,3,),寄存器,B,在乘除法指令中,乘法指令中的两个操作数分别取自累加器,A,和寄存器,B,,其结果存放于,AB,寄存器对中。除法指令中,被除数取自累加器,A,,除数取自寄存器,B,,结果商存放于累加器,A,,余数存放于寄存器,B,中。,4,),程序状态字,(Program Status Word),位序,PSW.7,PSW.6,PSW.5,PSW.4,PSW.3,PSW.2,PSW.1,PSW.0,位标志,CY,AC,F0,RS1,RS0,OV,-,P,CY,进位/借位标志;位累加器。,AC,辅助进/借位标志;用于十进制调整。,F0 ,用户定义标志位;软件置位/清零。,OV,溢出标志;硬件置位/清零。,P ,奇偶标志;,A,中1的个数为奇数,P=1;,否则,P=0。,5,),数据指针,(DPTR),数据指针为,16,位寄存器,编程时,既可以按,16,位寄存器来使用,也可以按两个,8,位寄存器来使用,即高位字节寄存器,DPH,和低位字节,DPL,。,DPTR,主要是用来保存,16,位地址,当对,64kB,外部数据存储器寻址时,可作为间址寄存器使用,此时,使用如下两条指令:,MOVXA,DPTR,MOVXDPTR,A,在访问程序存储器时,,DPTR,可用来作基址寄存器,采用基址,+,变址寻址方式访问程序存储器,这条指令常用于读取程序存储器内的表格数据。,MOVCA,A+DPTR,6,),堆栈指针,SP(Stack Pointer),指明栈顶元素的地址,8位,可软件设置初值,复位时,SP=07H。,7,),I/O,口专用寄存器,(P0,、,P1,、,P2,、,P3),I/O,口寄存器,P0,、,P1,、,P2,和,P3,分别是,MCS-51,单片机的四组,I/O,口锁存器。,8,),定时,/,计数器,(TL0,、,TH0,、,TL1,和,TH1),MCS-51,单片机中有两个,16,位的定时,/,计数器,T0,和,T1,,它们由四个,8,位寄存器组成的,两个,16,位定时,/,计数器却是完全独立的。我们可以单独对这四个寄存器进行寻址,但不能把,T0,和,T1,当作,16,位寄存来使用。,9,),定时,/,计数器方式选择寄存器,(TMOD),TMOD,寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式,,TMOD,可以用字节传送指令设置其内容,但不能位寻址,。,3.,单片机如何运行程序?,知道了单片机通过,I/O,口与外设打交道,也知道了单片机的程序与数据如何保存,到底单片机是如何运行程序的?原来单片机和其他微机一样,也拥有一个中央处理器(,CPU,)。,它通过单片机的内部总线,将单片机内部的各个部分:程序存储器,(ROM),、数据存储器,(RAM),、定时,/,计数器、并行接口、串行接口和中断系统等联系在一起。,内部总线有三种,数据总线:专门用来传送数据信息,。,地址总线:专门用来传送地址信息,选中各操作单元。,控制总线:专门用来传送,CPU,各种控制命令,以便,CPU,统一指挥协调工作。完成程序所要执行的各种功能。,CPU,执行程序一般包括两个主要过程,第一,就是从程序存储器中取出指令,指令的地址由,PC,指针提供。,第二,就是执指过程,取出的指令代码首先被送到,CPU,中控制器中的指令寄存器,再通过指令译码器译码变成各种电信号,从而实现指令的各种功能。,执行,取指令,分析,4.,怎样保证,CPU,工作,?,现在我们知道了单片机怎样取指、执指,即怎样运行程序了。那么怎样才能保证,CPU,有序的工作?这就必须提到单片机的两个非常重要的外围电路:单片机的时钟电路和复位电路。,Pin19:,时钟,XTAL1,脚,片内振荡电路的输入端。,Pin18:,时钟,XTAL2,脚,片内振荡电路的输出端。,时钟电路如下,【,振荡周期,】,:单片机外接石英晶体振荡器的周期。如外接石英晶体的频率若为,12MHz,,这其振荡周期就是,1/12,微秒。,【,状态周期,】,:单片机完成一个最基本的动作所需的时间周期。如扫描一次定时器,T0,引脚状态所需要的时间。一个状态周期,2,个振荡周期。,【,机器周期,】,:单片机完成一次完整的具有一定功能的动作所需的时间周期。如一次完整的读操作或写操作对应的时间。一个机器周期,6,个状态周期。,【,指令周期,】,:执行完某条指令所需要的时间周期,一般需要,1,4,个机器周期,如,MUL AB,指令是四机器周期指令。一个指令周期,1,4,个机器周期。,一个机器周期,P1 P2,P1 P2,单字节单周期指令,例:,INC A,单周期单字节指令时序,复位电路如下,单片机工作时,除了需要时钟支持外,还必须有一个初始状态,即单片机的复位状态。复位不改变,RAM,(包括工作寄存器,R0-R7,)的状态,,89S51,的初始态如下表:,Pin9:RESET,复位信号脚,当,89S51,通电,时钟电路开始工作,在,RESET,引脚上出现,24,个时钟周期以上的高电平,系统即初始复位。,特殊功能寄存器,初始态,特殊功能寄存器,初始态,ACC,00H,B,00H,PSW,00H,SP,07H,DPH,00H,TH0,00H,DPL,00H,TL0,00H,IP,xxx00000B,TH1,00H,IE,0 xx00000B,TL1,00H,TMOD,00H,TCON,00H,SCON,xxxxxxxxB,SBUF,00H,P0-P3,1111111B,PCON,0 xxxxxxxB,5.,按键为何能打断原来的工作?,在前面的任务中,我们还看到一个现象,只要按一下,S1,键,发光管的闪动就停止,5,秒,这就相当于打断了原来既定的工作,等到,5,秒延时一到,又恢复原来的工作。这就象我们平时通常所说的“中断”。单片机中也有中断系统,它有,5,个中断源,它们能打断单片机原来的工作,直到中断结束才能继续原来的工作。我们将在单元五中详细阐述。,6.,发光二极管为何按一定频率闪烁?,在前面的任务中,灯有规律的闪动和按键停,5,秒,都离不开时间。那么,这个时间我们在前面的程序中是怎样得到的?原来,在,89S51,单片机中有两个定时器,T0,、,T1,,我们在前面也已经提到了,它在单片机中能够实现定时或计数功能。详细的用法,在单元五进行讲解。,外部程序存储器读选通信号,地址锁存信号输出端,1/6fosc,
展开阅读全文