单片机概述单片机,即集成在一块芯片上的计算机,集成了中央处理器CPU、随机存储器RAM、只读存储器、定时器/计数器以及I/O接口电路等主要计算机部件。单片微型计算机:简称单片机,也可称为微控制器MCU。主要有Intel公司的MCS—48,51,96系列单片机;Motorola公司的MC6801,6805系列单片机;Zilog公司的Z8系列单片机;近年有Atmel公司的AT89系列单片机和Microchip公司的PIC系列单片机等。单片机发展概况各种系列的单片机由于其内部功能、单元组成及指令系统的不尽相同,形成了各具特色的系列产品。其中Intel公司生产的MCS系列单片机目前仍占主导地位。从1976年9月Intel公司推出MCS—48系列单片机以来,世界上的一些著名的器件公司都纷纷推出各自系列的单片机产品。•1976-1978初级8位单片机IntelMCS-48系列•1978-高档8位单片机IntelMCS-51系列:•-51子系列:8031/8051/8751•-52子系列:8032/8052/8752•低功耗型80C31高性能型80C252廉价型89C2051/1051Intel单片机•1983-16位单片机IntelMCS-96系列8098/8096、80C198/80C196•32位单片机8096051系列单片机分类51系列单片机源于Intel公司的MCS—51系列,在Intel公司将MCS—51系列单片机实行技术开放政策之后,许多公司,如Philips、Dallas、Siemens、Atmel、华邦、LG等都以MCS—51中的基础结构8051为基核推出了许多各具特色、具有优异性能的单片机。这样,把这些厂家以8051为基核推出的各种型号的兼容型单片机统称为51系列单片机。Intel公司MCS—51系列单片机中的8051是其中最基础的单片机型号。MCS—51系列AT89系列其它公司的51系列单片机MCS51单片机和8051、8031、89C51等的关系MCS51是指由美国INTEL公司生产的一系列单片机的总称.这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。以后我们将用89C51来完成一系列的实验。第二章MCS-51单片机的组成及工作原理§2-18051单片机基本组成1.中央处理器(CPU)中央处理器(CPU)是单片机的核心,完成运算和控制功能,MCS-51单片机的CPU能处理8位二进制数或代码。2、内部数据存贮器(内部RAM)8051共有256个RAM,其中128个被占有寄存器占用,能作为寄存器供用户使用的只有128个单元,简称内部RAM3、内部程序存贮器(内部ROM)8051共有4K掩膜ROM,用于存放程序,原始数据,表格。称程序存贮器,简称内部ROM4、定时器/计数器8051共有2个16位定时器/计数器,以实现定时或计数功能,并以定时或计数结果对计算机进行控制。5、并行I/O口8051共有8个I/O口P0P1P2P3以实现数据的并行输出,输入。6、串行I/O口MCS-51的一个全双工的串行口,以实现单片机与其它设备之间的串行数据传输。该口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。7、中断控制系统8051共有5个中断源,外中断2个,定时器/计数中断2个,串行中断1个。分为高级和低级两个级别。8、时钟电路MCS-51内部有时钟,但晶振和微调电容需外接。系统允许最高频率为12MHZ§2-28051的内部数据存储器•普林斯顿结构:程序和数据共用一个存储器逻辑空间,统一编址。•哈佛结构:程序与数据分为两个独立存储器逻辑空间,分开编址。•物理上4个存储器地址空间:片内/片外程序存储器空间片内/片外数据存储器空间•逻辑上3个存储器地址空间:64KB程序存储器256B片内数据存储器64KB片外数据存储器MCS-51程序存储器配置•(一)8051程序存储器•64KB程序存储器空间•EA不同电平,选择片内或片外低位存储单元•(二)8051数据存储器1.64KB片外数据存储器空间(与扩展I/O接口共用)2.256B片内数据存储器:1)片内RAM2)特殊功能寄存器SFR特殊存储单元:复位入口:0000H中断入口:0003H~0023H为什么称它为只读存储器呢?在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。一、存储器概述我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM随机读/写存储器RAM可以进行多次信息写入和读出,每次写入后,原来的信息将被新写入的信息所取代。另外,RAM在断电后再通电时,原存的信息全部丢失。它主要用来存放临时的数据和程序。随机读/写存储器RAM只读存储器ROMRAM按生产工艺分,又可以分为双极型RAM和MOSRAM,而MOSRAM又分为静态RAM和动态RAM。(1)双极型RAM:是以晶体管触发器作为基本存储电路,存取速度快,但结构复杂、集成度较低,比较适合用于小容量的高速暂存器。(2)MOSRAM:是以MOS管作为基本集成元件,具有集成度高,功耗低,位价格便宜等优点,现在微型机一般都采用MOSRAM。只读存储器ROM的信息一旦写入后,便不能随机修改。在使用时,只能读出信息,而不能写入,且在掉电后ROM中的信息仍然保留。它主要用来存放固定不变的程序和数据。ROM按生产工艺分,又可以分为以下几种:(1)掩膜ROM:其存储的信息在制造过程中采用一道掩膜工艺生成,一旦出厂,信息就不可改变。(2)可编程只读存储器PROM:其存储的信息可由用户通过特殊手段一次性写入,但只能写入一次。(3)可擦除只读存储器:其存储的信息用户可以多次擦除,并可用专用的编程器重新写入新的信息。可擦除只读存储器又可分为紫外线擦除的EPROM、电擦除的EEPROM和FlashROM。二、内部数据存储器(一)低128个单元片内RAM8051内部RAM有256个单元,通常在空间上分为两个区;低128个单元(00H~7FH)的内部数据RAM块和高128个单元(80H~0FFH)的专用寄存器SFR块。1、工作寄存器(00H~1FH)R0~R7(8位)暂存运算数据和中间结果。4个工作寄存器区,工作寄存器0区~3区。每个区均含8个寄存器R0~R7。用PSW中的两位PSW.4和PSW.3(RS1,RS0位)来切换工作寄存器区,选用一个工作寄存器区进行读写操作。在任一时刻,CPU只能使用其中一组通用寄存器共16个单元,计16×8=128位,位地址为00H~7FH。位寻址区既可作为一般的RAM区进行字节操作,也可对单元的每一位进行位操作,因此称为位寻址区,是存储空间的一部分。表2—1列出了位寻址区的位地址:2、位寻址区(20H~2FH)单元地址MSB位地址LSB2FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H3、用户RAM区(30H~7FH)一般把堆栈放在这里•专用寄存器:•A、B、PSW、DPTR、SP•P0、P1、P2、P3、SBUF、TMOD、TCON、SCON…(二)内部RAM高128单元专用寄存器区(也称为特殊功能寄存器区(SFR)区)占用字节地址:80H~FFH共有22个专用寄存器,程序计数器PC在物理上是独立的,没有地址不属于内部RAM的SFR区;其余的21个专用寄存器都属于内部RAM的SFR区寄存器符号地址寄存器名称·ACCE0H累加器·BF0HB寄存器·PSWD0H程序状态字SP81H堆栈指示器DPL82H数据指针低八位DPH83H数据指针高八位·IEA8H中断允许控制寄存器·IPB8H中断优先控制寄存器·P080HI/O口0·P190HI/O口1·P2A0HI/O口2·P3B0HI/O口3PCON87H电源控制及波特率选择寄存器·SCON98H串行口控制寄存器SBUF99H串行口数据缓冲寄存器·TCON88H定时器控制寄存器TMOD89H定时器方式选择寄存器TL08AH定时器0低8位TL18BH定时器1低8位TH08CH定时器0高8位TH18DH定时器1高8位注:带“·”专用寄存器表示可以位操作。•CPU总是按PC的指示读取程序。PC可自动加1。因此CPU执行程序一般是顺序方式。当发生转移、子程序调用、中断和复位等操作,PC被强制改写,程序执行顺序也发生改变。•复位时,PC=0000H。(1)程序计数器PC(16位)(5)数据指针DPTR(16位)存放片外存储器地址,作为片外存储器的指针。可分成两个8位寄存器DPH、DPL使用。位序D7D6D5D4D3D2D1D0位标志CYACF0RS1RS0OV—P(2)累加器Acc(8位)需要ALU处理的数据和计算结果多数要经过A累加器。(3)寄存器B(8位)与A累加器配合执行乘、除运算。也可用作通用寄存器。(4)程序状态字PSW(8位)存放ALU运算过程的标志状态RS1RS0寄存器组R0~R7地址00组000~07H01组108~0FH10组210~17H11组318~1FHCY——进(借)位标志位AC—辅助进(借)位标志位F0:用户标志位RS1,RS0:寄存器组选择位OV:溢出标志位P:奇偶标志位(6)堆栈指针SP(8位)堆栈是按“先进后出”原则存取数据的存储区。MCS-51堆栈设在片内RAM区。数据入栈/出栈时,SP自动加1/减1,其内容始终为栈顶地址。复位时SP=07H。位序D7D6D5D4D3D2D1D0位符号SMOD———GF1GF0PDIDL(7)电源控制及波特率选择控制寄存器PCONPCON为8位寄存器,主要用于控制单片机工作于低功耗方式(8)并行I/O端口P0~P3(9)串行数据缓冲器SBUF(10)定时器/计数器的专用寄存器T0和T1(11)控制类的专用寄存器IE、IP、TMOD、TCON、SCON寄存器是中断系统、定时器/计数器、串行口的控制寄存器,包含有控制位和状态位(三)专用寄存器的位寻址有11个专用寄存器(字节地址能被8整除的)可以进行位寻址,即可对这些专用寄存器单元的每一位进行位操作,每一位有固定的位地址。§2-3内部程序存储器8051芯内有4KROM掩膜存贮单元,AT89C51芯片内部配置了4KBFlashROM,其地址均是0000H~0FFFH。其中一组特殊单