片机硬件基础知识.ppt
1,第二讲:单片机硬件基础,本讲重点:MCS-51的基本特性;单片机的引脚与I/O口结构;存储器、堆栈与特殊功能寄存器;低功耗运行方式 最小系统设计,2,MCS-51系列单片机配置一览表,注意:今后将会经常提到ATMEL的AT89C2051/51/52等MCU!,3,MCS-51单片机基本特性,8 位的 CPU,片内有振荡器和时钟电路,工作频率为 112MHz(Atmel 89Cxx为024MHz)片内有 128/256字节 RAM片内有 0K/4K/8K字节 程序存储器ROM可寻址片外 64K字节 数据存储器RAM可寻址片外 64K字节 程序存储器ROM片内 18个(21字节)/21个(26字节)特殊功能寄存器(SFR)4个8位 的并行I/O口(PIO)1个 全双工串行口(SIO/UART)2/3个16位 定时器/计数器(TIMER/COUNTER)可处理 5/6个中断源,两级中断优先级内置1个布尔处理器和1个布尔累加器(Cy)MCS-51指令集含 111条指令,4,MSC-51系列单片机内部结构,5,内部结构框图,6,单片机的引脚定义,从一片集成电路的角度去认识单片机,7,认识单片机的引脚,MCS-51单片机40脚Vcc,GND 2XTAL1,XTAL2 2RESET 1EA/Vpp 1ALE/PROG 1PSEN 1,P0.0P0.7 8 P1.0P1.7 8 P2.0P2.7 8 P3.0P3.7 8,8,单片机的引脚(电源端),Vcc,GND:正电源端与接地端(+5V/3.3V/2.7V)不同的单片机可以允许不同的工作电压,不同的单片机表现出的功耗也不同。,9,单片机的引脚(晶振端),Vcc,GND:正电源端与接地端(+5V/3.3V/2.7V)不同的单片机可以允许不同的工作电压,不同的单片机表现出的功耗也不同。,XTAL1,XTAL2:片内振荡电路输入/输出端,10,单片机的引脚(晶振端),Vcc,GND:正电源端与接地端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入/输出端,1545pfx2,112MHz(MCS-51)024MHz(Atmel-89C),XTAL1,XTAL2,通常外接一个晶体两个电容,(1)内部时钟方式,11,常见无源晶振外形和种类,12,单片机的引脚(晶振端),Vcc,GND:正电源端与接地端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入/输出端,112MHz(MCS-51)024MHz(Atmel-89C),可以根据情况由 XTAL1或XTAL2端接入外部时钟,当一个引脚接时钟时,另一个引脚此时应将接地或悬空:,XTAL2/XTAL1,XTAL1/XTAL2,外部时钟,(2)外部时钟方式,13,单片机的引脚(晶振端),Vcc,GND:正电源端与接地端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入/输出端,HMOS(高密度沟道MOS)芯片XTAL2端接外部时钟,XTAL1接地,如:8051。,XTAL1,XTAL2,外部时钟,(2)外部时钟方式,CHMOS(互补金属氧化物HMOS)芯片XTAL1端接外部时钟,XTAL2悬空,如:89C51。,XTAL2,XTAL1,外部时钟,14,常见有源晶振外形,15,单片机的引脚(晶振端),Vcc,GND:正电源端与接地端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入、输出端,CPU总是按照一定的时钟节拍与时序工作:,振荡周期/时钟周期:Tc=晶振频率fosc(或外加频率)的倒数状态周期:Ts=2个时钟周期(Tc)(很少用到此概念)机器周期:Tm=6个状态周期(Ts)=12个振荡周期(Tc)指令周期:Ti:执行一条指令所需的机器周期(Tm)数,牢牢记住:振荡周期=晶振频率fosc的倒数;,1个机器周期=12个振荡周期;,1个指令周期=1、2、4个机器周期,16,单片机的引脚(复位端),Vcc,GND:电源端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入、输出端RESET:复位端(正脉冲有效,宽度8 ms),17,复位使单片机进入某种确定的初始状态:PC值归零(0000H);各个SFR被赋予初始值(见P.42):P0P3=0FFH,Acc=0,B=0,TH0=0,TL0=0,TH1=0,TL0=0,SP=7,PSW=0 退出处于节电工作方式的停顿状态、退出一切程序进程、退出程序的死循环,从头开始。,单片机的引脚(复位端),Vcc,GND:电源端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入、输出端RESET:复位端(正脉冲有效,宽度8 ms),18,PC与SFR复位状态表,19,单片机的引脚(复位端),A.上电复位,B.手动&上电复位,Vcc,GND:电源端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入、输出端RESET:复位端(正脉冲有效,宽度8 ms),20,单片机的引脚(复位端),C.同步复位电路,Vcc,GND:电源端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入、输出端RESET:复位端(正脉冲有效,宽度8 ms),21,D.专用复位芯片,应用于可靠性要求较高的嵌入式系统中。,22,单片机的引脚(EA端),Vcc,GND:电源端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入、输出端RESET:复位端(正脉冲有效,宽度8 ms)EA/Vpp:寻址外部ROM控制端/编程电源输入端。低有效,片内无ROM时必须接地;片内有ROM时应当接高电平;对片内ROM编程时编程正电源加到此端。,23,单片机的引脚(ALE端),Vcc,GND:电源端(+5V/3.3V/2.7V)XTAL1,XTAL2:片内振荡电路输入、输出端RESET:复位端(正脉冲有效,宽度8 ms)EA/Vpp:寻址外部ROM控制端/编程电源输入端。ALE/PROG:地址锁存允许/编程脉冲输入端。P0口寻址外部低8位地址时接外部锁存器 G端;ALE端平时会输出周期正脉冲:f fosc/6;对片内ROM编程时编程脉冲由此端加入。,24,单片机的引脚(PSEN端),PSEN:寻址外部程序存储器时选通外部EPROM的 读控制端(OE)低有效。,25,单片机,锁存器74LS373,ALE,PSEN,8D,8Q,OE,A8-A12,A0-A7,D0-D7,G,EA,OE,CE,EPROM,单片机的引脚(PSEN端),PSEN:寻址外部程序存储器时选通外部EPROM的 读控制端(OE)低有效。,26,单片机的I/O引脚结构,众多功能各异的I/O引脚源于它结构的不同,27,单片机的引脚(P1口),P1.0P1.7:准双向I/O口(内置了上拉电阻)输出时一切照常,仅在作输入口用时要先对其 写“1”。,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,28,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,输出数据=1 时,1,1,0,截止,=1,单片机的引脚(P1口),P1.0P1.7:准双向I/O口(内置了上拉电阻)输出时一切照常,仅在作输入口用时要先对其 写“1”。,29,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,输出数据=0 时,0,0,1,=0,导通,单片机的引脚(P1口),P1.0P1.7:准双向I/O口(内置了上拉电阻)输出时一切照常,仅在作输入口用时要先对其 写“1”。,30,2,1,D,Q,CK,/Q,读引脚=1,读锁存器,写锁存器,内部总线,Vcc,引脚P1.X,内部上拉电阻,输入数据时,要先对其写“1”,1,1,0,截止,单片机的引脚(P1口),P1.0P1.7:准双向I/O口(内置了上拉电阻)输出时一切照常,仅在作输入口用时要先对其 写“1”。,31,简单测控实例原理图,32,P1.3作输入端口,光路通畅,R亮2K光路阻断,R暗 400K,33,JOB3:CLR P1.1;亮绿灯REDO:SETB P1.3;P1.3作输入口必先置1CHECK:JNB P1.3,CHECK;检测通道是否被阻断?LOOP:;有入侵者,报警!AJMP REDO;再跳回去检测,任务:红外防盗报警,P1.3口用于输入状态检测的语句:,红外线光路通畅时,P1.3端低电平红外线光路阻断时,P1.3端高电平,34,单片机的引脚(P0口),P0.0P0.7:双向I/O(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,地址/数据,控制,引脚P0.X,3,4,Vcc,35,2,1,D,Q,CK,/Q,读引脚=1,读锁存器,写锁存器,内部总线,地址/数据,控制,引脚P0.X,3,4,控制=0 时,此脚作输入口(事先必须对它写“1”),0,0,1,0,0,截止,截止,=0,Vcc,单片机的引脚(P0口),P0.0P0.7:双向I/O(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。,36,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,地址/数据,控制,引脚P0.X,3,4,控制=0 时,此脚作输出口(输出引脚必须加上拉电阻),0,0,1,0,0,截止,截止,=0,Vcc,单片机的引脚(P0口),P0.0P0.7:双向I/O(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。,37,2,1,D,Q,CK,/Q,读引脚=0,读锁存器,写锁存器,内部总线,地址/数据,控制=1,引脚P0.X,3,4,控制=1时,此脚作地址/数据复用口:(1)输出地址/数据=0 时,1,0,1,1,=0,导通,截止,=0,Vcc,单片机的引脚(P0口),P0.0P0.7:双向I/O(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。,38,2,1,D,Q,CK,/Q,读引脚=0,读锁存器,写锁存器,内部总线,地址/数据,控制=1,引脚P0.X,3,4,控制=1时,此脚作地址/数据复用口:(2)输出地址/数据=1 时,1,1,0,0,=1,截止,导通,=1,Vcc,单片机的引脚(P0口),P0.0P0.7:双向I/O(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。,39,2,1,D,Q,CK,/Q,读引脚=1,读锁存器,写锁存器,内部总线,地址/数据,控制=1,引脚P0.X,3,4,控制=1时,此脚作地址/数据复用口:(3)输入数据时,输入指令将使引脚与内部总线直通,Vcc,单片机的引脚(P0口),P0.0P0.7:双向I/O(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。,40,单片机的引脚(P2口),P2.0P2.7:双向I/O(内置了上拉电阻)寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8位准双向I/O口使用。,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,地址高8位,控制,引脚 P2.X,3,内部上拉电阻,Vcc,41,2,1,D,Q,CK,/Q,读引脚=0,读锁存器,写锁存器,内部总线,地址高8位,控制,引脚P2.X,控制=0时,此脚作通用输出口:输出=0时,0,0,1,导通,3,内部上拉电阻,0,0,Vcc,=0,=0,单片机的引脚(P2口),P2.0P2.7:双向I/O(内置了上拉电阻)寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8位准双向I/O口使用。,42,2,1,D,Q,CK,/Q,读引脚=0,读锁存器,写锁存器,内部总线,地址高8位,控制=1,引脚P2.X,控制=1 时,此脚作高8位地址A8A15输出口:当输出=1 时,1,0,截止,3,内部上拉电阻,1,=1,Vcc,=1,单片机的引脚(P2口),P2.0P2.7:双向I/O(内置了上拉电阻)寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8位准双向I/O口使用。,43,2,1,D,Q,CK,/Q,读引脚=0,读锁存器,写锁存器,内部总线,地址高8位,控制=1,引脚P2.X,0,1,导通,3,内部上拉电阻,0,=0,Vcc,=0,控制=1 时,此脚作高8位地址A8A15输出口:当输出=0 时,单片机的引脚(P2口),P2.0P2.7:双向I/O(内置了上拉电阻)寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8位准双向I/O口使用。,44,单片机的引脚(P3口),P3.0P3.7:双功能口(内置了上拉电阻)它具有特定的第二功能。在不使用它的第二功能时它就是普通的通用准双向I/O口。,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,第二功能输出,引脚 P3.X,3,内部上拉电阻,Vcc,第二功能输入,4,45,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,第二功能输出(WR,RD,TxD),引脚 P3.X,3,内部上拉电阻,Vcc,4,第二功能输出时,内部自动 D=1,1,1,1,反相器,单片机的引脚(P3口),P3.0P3.7:双功能口(内置了上拉电阻)它具有特定的第二功能。在不使用它的第二功能时它就是普通的通用准双向I/O口。,46,2,1,D,Q,CK,/Q,读引脚,读锁存器,写锁存器,内部总线,此端自动1,引脚 P3.X,3,内部上拉电阻,Vcc,第二功能输入(RxD,T0,T1,INT0,INT1),4,第二功能输入时,信号经缓冲器4 直接进入内总线,1,1,1,0,截止,单片机的引脚(P3口),P3.0P3.7:双功能口(内置了上拉电阻)它具有特定的第二功能。在不使用它的第二功能时它就是普通的通用准双向I/O口。,47,P3口第二功能表(P.31 表2-3),48,51单片机的8个特殊引脚,Vcc,GND:电源端XTAL1,XTAL2:片内振荡电路输入、输出端RESET:复位端 正脉冲有效(宽度8 ms)EA/Vpp:寻址外部ROM控制端。低有效 片内有ROM时应当接高电平。ALE/PROG:地址锁存允许控制端。PSEN:选通外部ROM的读(OE)控制端。低有效,小结,49,51单片机的4个8位的I/O口,P0.0P0.7:8位数据口和输出低8位地址复用口(复用时是双向口;不复用时也是准双向口)P1.0P1.7:通用I/O口(准双向口),P2.0P2.7:输出高8位地址(用于寻址时是输出口;不寻址时是准双向口)P3.0P3.7:具有特定的第二功能(准双向口),注意:在不外扩ROM/RAM时,P0P3均可作通用I/O口使用,而且都是准双向I/O口(例如:AT89C51)!,小结,50,P3口第二功能表(P.31 表2-3),小结,51,存储器、堆栈、SFR,52,程序存储器ROM(Read Only Memory)MASK ROMPROMProgrammable ROMEPROM(UV)Erazible Programmable ROMEEPROM/E2PROMElectrical Erasable Programmable ROM闪速存储器Flash Memory按字节寻址:每个字节(8个位)占一个地址按位寻址:有的存储器每一个位就有一个地址,单片机的存储器几个有关的概念:,53,数据存储器RAM(Random Access Memory)静态存储器 SRAMStatic RAM动态存储器 DRAMDynamic RAM,单片机的存储器几个有关的概念:,54,89C51单片机存储器配置,单片机的存储器系统采用哈佛结构,ROM空间和RAM空间是分开的。片内Flash ROM 4K字节(000HFFFH)片内RAM 128字节(00H7FH)可寻址片外ROM 64K字节(0000HFFFFH)可寻址片外RAM 64K字节(0000HFFFFH),55,89C51单片机存储器配置 ROM,程序存储器编址原则:(P37)先片内,后片外,片内、片外连续,二者一般不重叠。,56,89C51单片机存储器配置 ROM,ROM中7个特殊入口地址(P37),57,89C51单片机存储器配置 RAM,片内RAM 128字节(00H7FH):片内RAM前32个单元是工作寄存器区(00H1FH)片内RAM有128个可按位寻址的位,占16个单元。位地址编号为:00H7FH,分布在20H2FH单元 片内RAM有80个单元是数据缓冲区(30H7FH)(52有208个单元,30HFFH)片内18/21(51/52)个特殊功能寄存器(SFR)中:地址号能被8整除的 SFR中的各位也可按位寻址(P.3940),58,存储器配置(片内RAM),片内RAM 128字节(00H7FH),00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,SFR分布在80H-FFH其中93个位可位寻址,80H,FFH,所有的RAM区(包括位寻址区、工作寄存器区)都可以用于存放数据,故也称为数据缓存寄存器,89C51 128字节,59,片内RAM前32个单元是工作寄存器区(00H1FH),00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,存储器配置(片内RAM),60,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,R0,R2,R1,R3,R4,R5,R6,R7,07H,02H,01H,00H,06H,04H,05H,03H,08H,1FH,工作寄存器区3,工作寄存器区2,工作寄存器区1,工作寄存器区0,0FH,10H,17H,18H,片内RAM前32个单元是工作寄存器区(00H1FH),存储器配置(片内RAM),61,R0,R2,R1,R3,R4,R5,R6,R7,07H,02H,01H,00H,06H,04H,05H,03H,08H,1FH,工作寄存器区3,工作寄存器区2,工作寄存器区1,工作寄存器区0,0FH,10H,17H,18H,工作寄存器选择(通过PSW中第4位、第3位,即RS1、RS0两位的值进行选择),存储器配置(片内RAM),62,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,片内RAM中有128个可按位寻址的位。位地址:00H7FH 分布在:20H2FH单元,存储器配置(片内RAM),63,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,27H,22H,21H,20H,26H,24H,25H,23H,28H,2FH,单元地址,07 06 05 04 03 02 01 00,0F 0E 0D 0C 0B 0A 09 08,17 16 15 14 13 12 11 10,1F 1E 1D 1C 1B 1A 19 18,27 26 25 24 23 22 21 20,2F 2E 2D 2C 2B 2A 29 28,37 36 35 34 33 32 31 30,3F 3E 3D 3C 3B 3A 39 38,47 46 45 44 43 42 41 40,7F 7E 7D 7C 7B 7A 79 78,位地址,总共128个可按位寻址的位,片内RAM中有128个可按位寻址的位。位地址:00H7FH 分布在:20H2FH单元,存储器配置(片内RAM),64,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,27H,22H,21H,20H,26H,24H,25H,23H,28H,2FH,单元地址,07 06 05 04 03 02 01 00,0F 0E 0D 0C 0B 0A 09 08,17 16 15 14 13 12 11 10,1F 1E 1D 1C 1B 1A 19 18,27 26 25 24 23 22 21 20,2F 2E 2D 2C 2B 2A 29 28,37 36 35 34 33 32 31 30,3F 3E 3D 3C 3B 3A 39 38,47 46 45 44 43 42 41 40,7F 7E 7D 7C 7B 7A 79 78,位地址,总共128个可按位寻址的位,存储器配置(片内RAM),注意:MOV C,00HMOV A,00HMOV A,20H的区别,65,堆栈:在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫堆栈。,功用:1)子程序调用和中断服务时CPU自动将当前PC 值压栈保存,返回时自动将PC值弹栈。2)保护现场/恢复现场3)数据传输,66,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,SP栈顶,下一个进栈的数据将存在此,数据进栈,已经进栈的数据存放在此,初始 SP,复位后 SP=07H,数据进栈时:首先SP+1指向08H单元,第一个放进堆栈的数据将放进08H单元,然后SP再根据进栈指令自动增 1,始终指着栈顶,堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。,67,从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,SP栈顶,当前要出栈的数据,数据出栈,SP-1指向下一个将要出栈的数据,初始 SP,堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。,68,从堆栈取出数据时:取出的数据是最近放进去的一个数据,也就是当前栈顶的数据。然后SP再自动减1,仍指着栈顶,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,SP-1 指向新的栈顶,也就是下一个将要出栈的数据,数据出栈,初始 SP,堆栈区由特殊功能寄存器堆栈指针SP管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常放在RAM区的靠后的位置。,69,可寻址片外RAM 64K字节(0000HFFFFH)*片内片外地址可以重叠,存储器配置(片外RAM),70,89C51特殊功能寄存器(SFR),特殊功能寄存器SFR(专用寄存器)专用于控制、选择、管理、存放单片机内部各部分的工作方式、条件、状态、结果的寄存器。,不同的SFR管理不同的硬件模块,负责不同的功能各司其职换言之:要让单片机实现预订的功能,必须有相应的硬件和软件,而软件中最重要的一项工作就是对SFR写命令(要求)。,71,程序计数器PC(Program Counter)PC 不是一个在特殊功能寄存器区的SFR,但其作用又十分重要和特殊!,特点:它是16位的按机器周期自动增1计数器,一切分支/跳转/调用/中断/复位 等操作的本质就是:改变 PC 值,总指向下一条指令所在首地址(当前PC值),特殊功能寄存器(PC),72,89C51有21个字节SFR(89C52有26个字节)P3940 已知的P0、P1、P2、P3等四个8位I/O口分别由名为P0、P1、P2、P3四个SFR代表。,堆栈指针寄存器 SP(Stack Pointer):总是指向栈顶,压栈时先(SP)+1 然后数据进栈;弹栈时数据先出栈 然后(SP)-1。,累加器 ACC:一个被众多指令用得最频繁的特殊功能寄存器(如:运算、数据传输)。,特殊功能寄存器(P0P3,SP,A,B,DPTR),73,副累加器 B:一个经常与 ACC 配合在一起使用的特殊功能寄存器(如:乘法、除法),此外,它也经常当作普通寄存器使用。,特殊功能寄存器(P0P3,SP,A,B,DPTR),数据指针寄存器DPTR:一个16位寄存器,可以暂存片外的16位地址,作间址寄存器使用,对外部存储器和I/O口寻址,也可拆成高低两字节DPH,DPL单独使用。,74,程序状态字寄存器 PSW,CY,AC,F0,RS0,OV,P,RS1,PSW.7,PSW.0,CY(PSW.7)进位/借位标志位。若ACC在运算过程中发生了进位或借位,则CY=1;否则=0。它也是布尔处理器的位累加器,可用于布尔操作。,AC(PSW.6)半进位/借位标志位。若ACC在运算过程中,D3位向D4位发生了进位或借位,则AC=1,否则=0。机器在执行“DA A”指令时自动要判断这一位,我们可以暂时不关心它。,F0(PSW.5)可由用户定义的标志位。,PSW.6,PSW.5,特殊功能寄存器(PSW),75,程序状态字寄存器 PSW(续):,CY,AC,F0,RS0,OV,P,RS1,PSW.7,PSW.0,RS1(PSW.4)、RS0(PSW.3)工作寄存器组选择位。,RS1,RS0=0 1 则选择了工作寄存器组 1 区R0R7分别代表08H 0FH单元。,RS1,RS0=1 0 则选择了工作寄存器组 2 区 R0R7分别代表10H 17H单元。,RS1,RS0=1 1 则选择了工作寄存器组 3 区R0R7分别代表18H 1FH单元。,PSW.4 PSW.3,RS1,RS0=0 0 则选择了工作寄存器组 0 区R0R7分别代表00H 07H单元。,76,片内RAM前32个单元(00H1FH)是工作寄存器区(由PSW中的RS1,RS0决定),00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,R0,R2,R1,R3,R4,R5,R6,R7,07H,02H,01H,00H,06H,04H,05H,03H,08H,1FH,工作寄存器区3,工作寄存器区2,工作寄存器区1,工作寄存器区0,77,程序状态字寄存器 PSW(续):,CY,AC,F0,RS0,OV,P,RS1,PSW.7,PSW.0,OV(PSW.2)溢出标志位。OV=1时特指累加器在进行带符号数(-128+127)运算时出错(超出范围);OV=0时未出错。,PSW.1 未定义。,P(PSW.0)奇偶标志位。P=1表示累加器中“1”的个数为奇数 P=0表示累加器中“1”的个数为偶数 CPU随时监视着ACC中的“1”的个数,并反映在PSW中,PSW.2,PSW.1,78,PC与SFR复位状态表,回顾,79,89C51单片机存储器配置,片内RAM 128字节(00H7FH);片内RAM前32个单元是工作寄存器区(00H1FH)片内RAM有128个可按位寻址的位,占16个单元。位地址编号为:00H7FH 分布在:20H2FH单元片内21个特殊功能寄存器(SFR)中:地址号能被 8整除的 SFR中的各位也可按位寻址可寻址片外RAM 64K字节(0000HFFFFH)可寻址片外ROM 64K字节(0000HFFFFH)片内Flash ROM 4K字节(000HFFFH),小结,80,存储器配置(片内RAM),片内RAM 128字节(00H7FH),00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有的RAM区,普通RAM区,位寻址区,工作寄存器区,SFR分布在80H-FFH其中93个位可位寻址,80H,FFH,所有的RAM区(包括位寻址区、工作寄存器区)都可以用于存放数据,故也称为数据缓存寄存器,128字节,小结,81,单片机存储器配置(片外RAM/ROM),可寻址片外RAM 64K字节(0000HFFFFH);可寻址片外ROM 64K字节(0000HFFFFH);片内 Flash ROM 4K字节(000HFFFH);,FFFFH,0000H,可寻址片外RAM,64K字节,FFFFH,0000H,可寻址片外ROM,64K字节,FFFH,000H,可寻址片内 Flash ROM,4K字节,89C51,7FH,00H,片内 RAM,128字节,FFH,80H,小结,82,低功耗运行方式,83,电源控制寄存器PCON(97H):,SMOD:波特率倍增位,主要用于串行通信。,SMOD,GF1,GF0,IDL,PCON.7,PCON.0,PCON.3,PCON.1,PD,GF1,GF2:通用标志位,由用户自己定义。,PD:掉电方式位,PD1则进入掉电工作方式。,IDL:待机方式位,IDL1则进入待机工作方式。,PCON.2,84,掉电工作方式,当电源控制寄存器PCON的PD为1时,进入掉电工作方式。在该方式下,振荡器停止工作,一切功能停止,但是片内RAM的数据可以保持不变,退出掉电工作方式的方法:硬件复位,进入掉电工作方式的方法:,85,掉电工作方式,待机方式和掉电方式的硬件结构,86,待机工作方式,当电源控制寄存器PCON的IDL为1时,进入待机工作方式。在该方式下,振荡器继续工作,时钟信号仍然提供给中断系统、串行口和定时器/计数器,但是通向CPU的时钟被冻结。,退出待机工作方式有两种方法:1.硬件复位 2.中断唤醒,进入待机工作方式的方法:,实际应用:通常在主程序中完成系统的初始化操 作后,就使CPU进入待机工作方式,系 统所有的任务通过中断来触发完成。,这种程序结构程序在前后台系统结构中称为中断(事件)驱动系统,87,最小系统的设计,88,89,1.单片机的I/O口都是“准双向口”,在把I/O口设置为输入状态时,要先对端口的锁存器写入1。同时P0口作I/O口时,不带有上拉电阻;而P1,P2和P3口作I/O口时,自带上拉电阻。2.单片机的存储器系统采用哈佛结构,程序空间和数据空间是分开的,I/O空间占用数据空间的地址,二者采用相同指令访问,注意它和PC的区别。3.片内RAM空间的地址:0X800XFF和特殊功能寄存器SFR的地址重合,二者采用不同的寻址方式来加以区分。4.对于集成在单片机片内的中断系统,定时/计数器和串行通信等内部资源,都是通过SFR来管理的,这实际上是一种软件管理硬件的方式。,实战经验,90,5.单片机的堆栈指针SP一般指向系统最后一个使用的RAM单元,因此初始化时,要留出足够的堆栈长度,避免堆栈的溢出。同时在入栈时,先把SP加一后,数据再入栈;出栈时,数据先出栈,再把SP减一。6.注意区别单片机的时钟周期和机器周期。时钟周期等于单片机采用的石英晶体振荡频率的倒数,而机器周期等于时钟周期的12倍7.复位电路设计时,并不仅仅要求复位时间大于两个机器周期就可以。因为电压的稳定性问题,一般要求提供几百个ms的复位脉冲。因此在实际中常采用专用的复位芯片来提供标准的复位脉冲,这类芯片一般还提供了电压监控功能。,实战经验,91,8.单片机I/O口线的第二功能是自动选择的,不需要专门的指令去设置。9.单片机的堆栈是向上生长的,即堆栈指针向地址的高端增加,而PC的堆栈则是向下生长的,即堆栈指针向地址的低端增加。10.单片机的时钟电路可以采用石英晶体来构成,也可以采用有源晶振来构成,这里注意晶体和晶振的区别。11.EA接高电平访问片内ROM,接低电平访问片外ROM,由于目前集成在片内ROM的空间已经很大,则在实际使用中一般采用EA接高电平的方式。,实战经验,92,12.单片机的待机模式可以用来构成前后台模式中的“中断(事件)驱动系统”。主程序是一个死循环模式,在主程序中完成系统的初始化后进入待机工作模式,利用系统的中断来完成任务的执行。关于“前后台”工作模式的解释:“前后台”是一种编程模式,它是相对于采用了实时操作系统的编程模式而言的。这种结构的主程序是一个无限循环,该循环调用一些模块完成相关操作,成为“后台程序”,而中断服务程序处理异步事件和时间要求紧迫的事件,成为“前台程序”。,实战经验,93,作业P.43 2,3,4,6,7,94,OVER!,