1、第1章单片机基础知识 单片机及其发展状况单片机及其发展状况 1 1单片机名称的来源单片机名称的来源 根据单片机的物理形态和内容,早期的单片机称为根据单片机的物理形态和内容,早期的单片机称为Single-Chip MicrocomputerSingle-Chip Microcomputer。从仙童公司的第一款单片机。从仙童公司的第一款单片机F-8F-8开始,甚至到开始,甚至到MCS-51MCS-51时期,这些单片机确实准确地体现时期,这些单片机确实准确地体现了了Single-Chip MicrocomputerSingle-Chip Microcomputer的形态和内容。但是,随着的形态和内容
2、。但是,随着单片机发展到单片机发展到MCS-96MCS-96、新一代、新一代80C5180C51、M68HC05M68HC05等系列单片机等系列单片机时,这些单片机面向对象,突出控制功能,在片内集成了许时,这些单片机面向对象,突出控制功能,在片内集成了许多外围电路及外设接口,如多外围电路及外设接口,如A/DA/D、PWMPWM、WDTWDT等,突破了传统等,突破了传统意义的单片机结构,发展成意义的单片机结构,发展成MicrocontrollerMicrocontroller的体系结构,的体系结构,因此,目前国外已经逐步统一称单片机为因此,目前国外已经逐步统一称单片机为MCUMCU(Micro
3、Micro Controller UnitController Unit)。由于它实行嵌入式应用,因此也称为)。由于它实行嵌入式应用,因此也称为嵌入式微控制器。嵌入式微控制器。第1章单片机基础知识 系列单片机简介系列单片机简介 尽管各类单片机很多,但无论从世界范围还是从国内范尽管各类单片机很多,但无论从世界范围还是从国内范围来看,使用最为广泛的还是围来看,使用最为广泛的还是MCS-51MCS-51型单片机,因此本书也型单片机,因此本书也将以将以MCS-51MCS-51型系列为主,来介绍单片机的原理及应用。型系列为主,来介绍单片机的原理及应用。MCS-51MCS-51型系列单片机共有十几种芯片,
4、表型系列单片机共有十几种芯片,表1-11-1列举了比较典列举了比较典型的几种芯片的型号及主要技术性能指标。型的几种芯片的型号及主要技术性能指标。表表1-1:第1章单片机基础知识 子系列片内ROM形式ROM容量RAM 容量计数器并行口串行口中断源制造工艺无ROM掩膜ROMEPROM片内片外片内片外51子系列8031805187514KB60KB128B64KB2164815HMOS80C3180C5187C514KB60KB128B64KBCHMOS52子系列8032805287528KB56KB256B64KB3164817HMOS83C25280C25287C2528KB56KB256B64
5、KBCHMOS第1章单片机基础知识 80C5180C51型单片机属于型单片机属于IntelIntel公司的公司的MCS-51MCS-51系列单片机,系列单片机,MCS-51MCS-51系列单片机采用两种半导体工艺生产。一种是系列单片机采用两种半导体工艺生产。一种是HMOSHMOS工工艺,即高密度短沟道艺,即高密度短沟道MOSMOS工艺。另外一种是工艺。另外一种是CHMOSCHMOS工艺,即互工艺,即互补金属氧化物的补金属氧化物的HMOSHMOS工艺。表工艺。表1-11-1的芯片型号中带有的芯片型号中带有“C C”的的都为都为CHMOSCHMOS工艺,其余的为一般的工艺,其余的为一般的HMOSH
6、MOS工艺。工艺。CHMOSCHMOS是是CMOSCMOS和和HMOSHMOS的结合,除具有的结合,除具有HMOSHMOS高速度、高密度的高速度、高密度的特点外,还具有特点外,还具有CMOSCMOS低功耗的优点。比如低功耗的优点。比如80518051型的功耗为型的功耗为630mW630mW,而,而80C5180C51的功耗只有的功耗只有120mW120mW。第1章单片机基础知识 目前,目前,IntelIntel公司将公司将80C5180C51型单片机的内核使用权以专利互型单片机的内核使用权以专利互换或者出售的形式转让给其他的著名换或者出售的形式转让给其他的著名ICIC制造商,如制造商,如Phi
7、lipsPhilips、ATMELATMEL、AMDAMD、DallasDallas、SiemensSiemens、LGLG、华邦等。这些公司在、华邦等。这些公司在80C5180C51内核基础上,扩展了针对不同需求的外围电路,如内核基础上,扩展了针对不同需求的外围电路,如A/DA/D、PWMPWM、WDTWDT,引入使用方便并且价格便宜的,引入使用方便并且价格便宜的Flash ROMFlash ROM等,使等,使80C5180C51的功能更加齐全、针对性更强,巩固并发展了的功能更加齐全、针对性更强,巩固并发展了IntelIntel公公司单片机的地位,成为当今世界司单片机的地位,成为当今世界8
8、8位单片机的主流。位单片机的主流。第1章单片机基础知识 单片机的特点及应用领域单片机的特点及应用领域单片机的主要特点如下:单片机的主要特点如下:(1 1)很高的性价比。目前许多单片机的价格只要几元人民)很高的性价比。目前许多单片机的价格只要几元人民币。币。(2 2)集成度高,体积小,可靠性好。内部采用总线结构,)集成度高,体积小,可靠性好。内部采用总线结构,减少各芯片间的连线。减少各芯片间的连线。(3 3)控制能力强。单片机的指令丰富,能满足各种工业控)控制能力强。单片机的指令丰富,能满足各种工业控制的要求。制的要求。(4 4)低功耗、低电压,一般在)低功耗、低电压,一般在3V3V6V6V范围
9、内工作,低电压范围内工作,低电压供电的单片机电源下限可达供电的单片机电源下限可达1V1V2V2V,1V1V以下供电的单片机也以下供电的单片机也已诞生,便于生产便携式设备。已诞生,便于生产便携式设备。(5 5)易扩展。可根据需要进行并行或者串行扩展,形成网)易扩展。可根据需要进行并行或者串行扩展,形成网络控制系统。络控制系统。第1章单片机基础知识 由于单片机的特点比较突出,因此,在各个应用领域都由于单片机的特点比较突出,因此,在各个应用领域都可以见到它的身影,主要的应用领域有:可以见到它的身影,主要的应用领域有:(1 1)工业自动化控制。这是最早采用单片机控制的领域之)工业自动化控制。这是最早采
10、用单片机控制的领域之一,如各种测控系统、一,如各种测控系统、PLCPLC等。等。(2 2)智能化家用电器。用单片机控制来替代传统的电子线)智能化家用电器。用单片机控制来替代传统的电子线路控制是当前家用电器的发展趋势,如空调、洗衣机、电视路控制是当前家用电器的发展趋势,如空调、洗衣机、电视机等。机等。(3 3)智能化仪表。采用单片机的智能化仪表,加强了数据)智能化仪表。采用单片机的智能化仪表,加强了数据处理能力和网络数据传送能力,提高了仪表的档次,如各种处理能力和网络数据传送能力,提高了仪表的档次,如各种探测仪表、自动抄表系统等。探测仪表、自动抄表系统等。(4 4)办公自动化设备。目前的办公设备
11、中多数都嵌入了单)办公自动化设备。目前的办公设备中多数都嵌入了单片机系统,如打印机、复印机、扫描仪等。片机系统,如打印机、复印机、扫描仪等。(5 5)军用航空等尖端领域的应用更加突出。)军用航空等尖端领域的应用更加突出。第1章单片机基础知识 Y轴数据送入0832(2)并锁存SJMP MAIN图7-18 TLC1549工作方式1时序SUBB A,Ri;A(R1),(50H)=30H。如果关系不成立,说明通信过程数据出错,给PC机发送“3FH”,要求重发指令,另外从接收到第一个“$”后定时器开始定时,来设定每次总的通信时间,以免双方之间“我等你,你等我”而出现无休止的等待,同时,如一方出现死机或其
12、他原因可以及时结束本次通信,进入重新接收状态。INCR1 ;MOV 38H,#10其次是电路的内部有上拉电阻,与场效应管共同组成输出驱动电路。DPL(82H)代表DPTR低位字节当作为计数器使用时,把计数器计满为零所需要的计数值设定为C,计数初值设定为TC,由此可得到公式:如果程序中没有中断优先级设置指令,则中断源按自然优先级进行排列。ORG0023HRD24_4:LCALLSTOP;在自动控制系统中,各控制参量可能随机地在任何时刻向计算机发出请求,要求进行某种处理。【例3-11】已知累加器A的内容为A7H,R0=30H,(30H)=5BH,Cy=1,则指出执行指令ADD A,R0后的结果和各
13、标志位的状态。在计算机中,除了处理数字信息外,还必须处理用来组织、控制或表示数据的字母和符号,这些字母或符号也必须按照特定的规则用二进制来编码。MOV 2AH,#0;这些数据在程序运行过程中需要被读出来,参与程序的处理过程。1.2 1.2 单片机系统的组成单片机系统的组成 当单片机内部的计算机外围功能单元不能满足对象控制当单片机内部的计算机外围功能单元不能满足对象控制要求的时候,通过系统扩展,在外部并行总线上扩展相应的要求的时候,通过系统扩展,在外部并行总线上扩展相应的计算机外围功能单元所构成的系统,称为单片机系统。这个计算机外围功能单元所构成的系统,称为单片机系统。这个定义强调的是单片机系统
14、的硬件组成,而一个完整的单片机定义强调的是单片机系统的硬件组成,而一个完整的单片机系统应该包括硬件系统和软件系统两大部分,如图系统应该包括硬件系统和软件系统两大部分,如图1-21-2所示。所示。图图1-2 1-2 单片机系统结构框图单片机系统结构框图第1章单片机基础知识 单片机系统的硬件由单片机芯片和外部接口电路及设备组单片机系统的硬件由单片机芯片和外部接口电路及设备组成。而单片机芯片则包括了中央处理器(成。而单片机芯片则包括了中央处理器(CPUCPU)、存储器)、存储器(ROM/RAMROM/RAM)、)、I/OI/O接口及其他功能单元(定时计数器、中断接口及其他功能单元(定时计数器、中断系
15、统、串行接口)。它们通过系统、串行接口)。它们通过ABAB(地址总线)、(地址总线)、DBDB(数据总(数据总线)、线)、CBCB(控制总线)相互连接,如图(控制总线)相互连接,如图1-31-3所示。所示。单片机系统的硬件组成单片机系统的硬件组成图图1-3 1-3 单片机系统的硬件结构图单片机系统的硬件结构图第1章单片机基础知识 1 1微处理器(微处理器(CPUCPU)CPUCPU主要由两部分组成:运算器和控制器。主要由两部分组成:运算器和控制器。(1 1)运算器)运算器:运算器主要完成算术运算和逻辑运算并进行逻辑测试,如零运算器主要完成算术运算和逻辑运算并进行逻辑测试,如零值测试和两个值的比
16、较,通常算术操作产生一个运算结果,值测试和两个值的比较,通常算术操作产生一个运算结果,而一个逻辑操作产生一个判决。运算器主要由以下几部分组而一个逻辑操作产生一个判决。运算器主要由以下几部分组成。成。累加器累加器A A:用来存放参与算术或者逻辑运算的一个操作数:用来存放参与算术或者逻辑运算的一个操作数和运算结果。和运算结果。暂存器暂存器TMPTMP:用来暂时存放参与算术或者逻辑运算的另一:用来暂时存放参与算术或者逻辑运算的另一个操作数。该操作数主要来自其他数据寄存器或者内存单元个操作数。该操作数主要来自其他数据寄存器或者内存单元中。中。第1章单片机基础知识 MOVA,12H;在方式1处于接收时,
17、若SM2=1,则只有收到有效的停止位后,RI才置1。(1)软件结构清晰、简捷、流程合理。A+(Ri)+CyA,(i=0、1)有进位,Cy=1,无进位,Cy=0216位数据传送指令(1条)(5)若同一个四位出现两种修正条件,则只需修正一次即可。【例4-9】两个无符号数大小的比较:有两个无符号数分别放在30H和31H单元,若(30H)(31H),则P1.对端口的操作比RAM复杂,和接口芯片8255A一样,芯片8155 I/O口的工作方式的确定也是通过对8155的命令寄存器写入控制字来实现的,8155控制字的格式如图7-39所示。由于简单I/O芯片没有专门的地址线,但没有地址线就不等于不要地址(实际
18、上,没有地址会造成任何向外部RAM的读、写都会影响该端口)所以我们常常将控制线(、)与地址线“混合”后接到I/O芯片的控制端,使它具有相应的地址,如例2-3中的“或门”就是起到了这种混合作用。图5-4 撤除外部中断请求的电路在上述入口地址区域不能放置用户的程序和建立数据表格,原因是:由于两个中断入口地址间仅有8个单元(如0003H到000BH),用来存放中断发生后的用户程序(一般称中断服务程序)显然是不够的,我们将中断服务程序放在程序存储器的其他“自由”空间,在这些入口地址放一条跳转指令(如:LJMP XXXX,其中“XXXX”就是实际中断服务程序的起始地址或标号),由这条跳转指令去“找到”实
19、际的中断服务程序。上面两个程序中的开头用了ORG程序定位指令,尽管在这样简单的程序中省掉也没什么影响,但对于养成规范的编程习惯是有好处的,否则看到一个具体应用程序时就会无所适从,同时也与第2.外部中断0为遥控输入,设置成边沿中断NOPINC1FH;LJMPPINT0;图6-4 同步通信的数据块TH1=FFH;JNB20h.addr1616位目的地址。SETB TR1;图7-5 动态方式应用实例 算术逻辑单元算术逻辑单元ALUALU:主要完成把传送到微处理器的数据进:主要完成把传送到微处理器的数据进行算术和逻辑运算。行算术和逻辑运算。ALUALU具有两个主要的输入来源,一个累具有两个主要的输入来
20、源,一个累加器,一个来自数据寄存器,它能够完成这两个数的相加和加器,一个来自数据寄存器,它能够完成这两个数的相加和相减,也能够完成某些逻辑运算。相减,也能够完成某些逻辑运算。标志寄存器标志寄存器F F:用来存放:用来存放ALUALU运算结果的标志位,如进位运算结果的标志位,如进位标志、溢出标志等。标志、溢出标志等。例如:将两个数例如:将两个数12H12H和和31H31H相加,在相加之前,操作数相加,在相加之前,操作数12H12H存放在累加器存放在累加器A A中,中,31H31H存放在数据寄存器中,执行两个存放在数据寄存器中,执行两个数相加的控制线发出数相加的控制线发出“加加”操作信号,操作信号
21、,ALUALU就把两个数相加,就把两个数相加,所加结果存入累加器所加结果存入累加器A A中,覆盖原来累加器中,覆盖原来累加器A A中的内容,执行中的内容,执行完后,累加器完后,累加器A A中的内容就是中的内容就是43H43H。第1章单片机基础知识 (2 2)控制器)控制器 控制器主要是协调和控制整个计算机系统的操作,主要控制器主要是协调和控制整个计算机系统的操作,主要由以下几部分组成。由以下几部分组成。程序计数器程序计数器PCPC:为了能够保证程序能够连续地运行下去,:为了能够保证程序能够连续地运行下去,CPUCPU必须具备某种手段来确定一条指令的地址,程序计数器必须具备某种手段来确定一条指令
22、的地址,程序计数器就是执行这项工作。当执行程序时,就是执行这项工作。当执行程序时,CPUCPU将自动修改将自动修改PCPC的内的内容,使之总是指向下一条指令的存放地址。容,使之总是指向下一条指令的存放地址。指令寄存器指令寄存器IRIR:保存当前正在执行的一条指令。当执行:保存当前正在执行的一条指令。当执行一条指令时,先把它从程序存储器中取出,然后再传送到指一条指令时,先把它从程序存储器中取出,然后再传送到指令寄存器。令寄存器。第1章单片机基础知识 指令译码器指令译码器IDID:要执行给定指令的操作,必须给操作码:要执行给定指令的操作,必须给操作码译码,以便确定所要求的操作,指令译码器就是负责这
23、项工译码,以便确定所要求的操作,指令译码器就是负责这项工作。操作码一经译码后就向操作控制器发出具体操作的特定作。操作码一经译码后就向操作控制器发出具体操作的特定信号。信号。时序产生器:用来产生脉冲序列和各种节拍脉冲,每个时序产生器:用来产生脉冲序列和各种节拍脉冲,每个节拍脉冲对应于一种操作,就像是体育老师的口令、交响乐节拍脉冲对应于一种操作,就像是体育老师的口令、交响乐团的指挥一样。团的指挥一样。操作控制器:根据指令译码器的信号,产生相应的操作操作控制器:根据指令译码器的信号,产生相应的操作控制信号,以便启动规定的动作,比如一次内存读写操作,控制信号,以便启动规定的动作,比如一次内存读写操作,
24、一次算术逻辑操作,一次输入一次算术逻辑操作,一次输入/输出操作,指挥并控制输出操作,指挥并控制CPUCPU、内存和输入内存和输入/输出设备之间的数据流向。输出设备之间的数据流向。相对控制器而言,运算器的动作是接受控制器的命令而相对控制器而言,运算器的动作是接受控制器的命令而动作的,即运算器所进行的所有操作都是由控制器发出的控动作的,即运算器所进行的所有操作都是由控制器发出的控制信号来指挥的。制信号来指挥的。第1章单片机基础知识 2 2总线总线 总线(总线(BUSBUS)是计算机各部件之间传送信息的公共通道。)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是微机中
25、有内部总线和外部总线两类。内部总线是CPUCPU内部之内部之间的连线,外部总线是指间的连线,外部总线是指CPUCPU与其他部件之间的连线。外部与其他部件之间的连线。外部总线有三种:数据总线总线有三种:数据总线DBDB(Data BusData Bus)、地址总线)、地址总线ABAB(Address BusAddress Bus)和控制总线)和控制总线CBCB(Control BusControl Bus)。)。(1 1)地址总线()地址总线(ABAB):地址总线宽度根据寻址范围来确定):地址总线宽度根据寻址范围来确定的,当寻址范围是的,当寻址范围是4KB4KB212B212B时,需要的地址线宽
26、度为时,需要的地址线宽度为1212位,位,由于由于80C5180C51单片机的寻址范围最多可达单片机的寻址范围最多可达64KB64KB,因此地址总线,因此地址总线宽度为宽度为1616位,由位,由P0P0口经地址锁存器提供低口经地址锁存器提供低8 8位地址(位地址(A0A0A7A7););P2P2口直接提供高口直接提供高8 8位地址(位地址(A8A8A15A15)。因地址信号是)。因地址信号是由由CPUCPU发出的,故地址总线是单方向的。发出的,故地址总线是单方向的。(2 2)数据总线()数据总线(DBDB):由于):由于80C5180C51单片机为单片机为8 8位机,故数据位机,故数据总线宽度
27、为总线宽度为8 8位,用于传送数据和指令,由位,用于传送数据和指令,由P0P0口提供。口提供。(3 3)控制总线()控制总线(CBCB):控制总线随时掌控各种部件的状态,):控制总线随时掌控各种部件的状态,并根据需要向有关部件发出控制命令。并根据需要向有关部件发出控制命令。第1章单片机基础知识 3 3存储器存储器 存储器的主要功能就是用来存放程序代码和数据。存储器的主要功能就是用来存放程序代码和数据。(1 1)存储器的分类)存储器的分类 按照存储器的存取功能分,可分为:按照存储器的存取功能分,可分为:随机存取存储器(随机存取存储器(Random Access MemoryRandom Acce
28、ss Memory,RAMRAM)。它可)。它可以随机写入和读出,读写速度快,但是断电后,存储的以随机写入和读出,读写速度快,但是断电后,存储的数据就要丢失。主要用来存放各种处理数据。数据就要丢失。主要用来存放各种处理数据。只读存储器(只读存储器(Read Only MemoryRead Only Memory,ROMROM)。它在一般)。它在一般情况下只能读不能写,当然,在满足一定条件下也可以情况下只能读不能写,当然,在满足一定条件下也可以完成写入操作,否则,读的数据又从何而来呢?它的另完成写入操作,否则,读的数据又从何而来呢?它的另外一个特点就是掉电不丢失,能长期保存数据。从写入外一个特点
29、就是掉电不丢失,能长期保存数据。从写入方式来看,方式来看,ROMROM也有很多分类,主要有:掩膜也有很多分类,主要有:掩膜ROMROM、EPROMEPROM、EEPROMEEPROM、FLASHROMFLASHROM和和OTPROMOTPROM(一次性编程(一次性编程ROMROM)。)。第1章单片机基础知识 按照存储器结构分,可分为:按照存储器结构分,可分为:普林斯顿结构。一般微机只有一个地址空间,普林斯顿结构。一般微机只有一个地址空间,ROMROM和和RAMRAM可以随意安排在这一地址范围内不同的空间,即可以随意安排在这一地址范围内不同的空间,即ROMROM和和RAMRAM的地址在同一个队列
30、里分配不同的地址空间。的地址在同一个队列里分配不同的地址空间。CPUCPU访问存储器时,一个地址对应唯一的存储空间,可以是访问存储器时,一个地址对应唯一的存储空间,可以是ROMROM,也可以是,也可以是RAMRAM,并用同一种指令访问。,并用同一种指令访问。哈佛结构。如哈佛结构。如80C5180C51的存储器结构分程序存储器空间的存储器结构分程序存储器空间和数据存储器空间,总共有和数据存储器空间,总共有4 4个物理存储空间,即片内程个物理存储空间,即片内程序存储器空间、片外程序存储器空间、片内数据存储器序存储器空间、片外程序存储器空间、片内数据存储器空间、片外数据存储器空间,并用不同的指令访问
31、程序空间、片外数据存储器空间,并用不同的指令访问程序存储器和数据存储器,这种程序存储器和数据存储器分存储器和数据存储器,这种程序存储器和数据存储器分开的结构就称为哈佛结构。开的结构就称为哈佛结构。第1章单片机基础知识 (2 2)存储器的操作)存储器的操作 存储器的操作分为读操作和写操作。存储器的操作分为读操作和写操作。例如,将数据存储器例如,将数据存储器30H30H中的内容中的内容03H03H读出到累加器读出到累加器A A中。中。其步骤如下:其步骤如下:CPUCPU将要读存储空间的地址码将要读存储空间的地址码30H30H送到地址总线上,选通送到地址总线上,选通地址为地址为30H30H的存储单元
32、。的存储单元。CPUCPU的控制器发出的控制器发出“读读”信号,建立存储器到信号,建立存储器到CPUCPU的数据的数据流向。流向。存储器将地址为存储器将地址为30H30H的存储单元中的内容的存储单元中的内容03H03H释放到数据释放到数据总线上。总线上。CPUCPU将数据总线上的数据将数据总线上的数据03H03H读入到累加器读入到累加器A A中。中。注意:读操作不影响原来单元内容,即注意:读操作不影响原来单元内容,即30H30H中的内容还是中的内容还是03H03H,类似计算机操作中的,类似计算机操作中的“复制复制”。第1章单片机基础知识 例如,将数据例如,将数据10H10H送到地址为送到地址为
33、40H40H的内部数据存储单元中。的内部数据存储单元中。其步骤如下:其步骤如下:CPUCPU将要写入的存储空间的地址码将要写入的存储空间的地址码40H40H送到地址总线上,送到地址总线上,选通地址为选通地址为40H40H的存储单元。的存储单元。将数据将数据10H10H送到数据总线上。送到数据总线上。CPUCPU控制器发出控制器发出“写写”信号,建立信号,建立CPUCPU到存储器的数据流到存储器的数据流向。向。存储器将数据存储器将数据10H10H送入到地址为送入到地址为40H40H的存储单元中。的存储单元中。注意:写操作要改变原来单元的内容,类似计算机操作中的注意:写操作要改变原来单元的内容,类
34、似计算机操作中的“粘贴粘贴”,如果,如果40H40H单元中原来的内容是单元中原来的内容是20H20H,经过这次写操,经过这次写操作后,作后,40H40H单元中的内容就改为单元中的内容就改为10H10H。第1章单片机基础知识(3 3)堆栈)堆栈 堆栈就是在单片机堆栈就是在单片机RAMRAM中,专门划出一个区域用来临时中,专门划出一个区域用来临时存放一些重要数据码或者地址码。对于堆栈,应主要掌握以存放一些重要数据码或者地址码。对于堆栈,应主要掌握以下几点。下几点。栈底地址:用来确定堆栈的深度,一般可在程序初始化栈底地址:用来确定堆栈的深度,一般可在程序初始化部分通过对堆栈指针部分通过对堆栈指针SP
35、 SP 的赋值来确定,如的赋值来确定,如MOV SP,#60HMOV SP,#60H,就,就是将堆栈的栈底设定为是将堆栈的栈底设定为60H60H(深度为(深度为32B32B)。)。堆栈指针:用来指出当前栈顶的存储单元的地址。堆栈指针:用来指出当前栈顶的存储单元的地址。堆栈原则:堆栈操作遵循堆栈原则:堆栈操作遵循“先进后出先进后出”的原则。的原则。第1章单片机基础知识 如图如图1-41-4是一堆栈的结构图。通过这个图可以了解以下是一堆栈的结构图。通过这个图可以了解以下几点:几点:这个堆栈的栈底为这个堆栈的栈底为50H50H,在程序初始化过程中可以通过指,在程序初始化过程中可以通过指令令MOV S
36、P,#50HMOV SP,#50H来指定,同时确定堆栈深度为来指定,同时确定堆栈深度为51H51H7FH7FH,在,在具体使用中的堆栈深度根据实际需要保存的数据个数来确定。具体使用中的堆栈深度根据实际需要保存的数据个数来确定。当前堆栈指针当前堆栈指针SPSP的值为的值为54H54H,即当前栈顶为,即当前栈顶为54H54H。这这4 4个数据的压栈顺序为个数据的压栈顺序为10H10H、14H14H、58H58H、64H64H,根据,根据“先先进后出进后出”原则,这原则,这4 4个数据的出栈顺序为个数据的出栈顺序为64H64H、58H58H、14H14H、10H10H。从上面几点看,堆栈与手枪弹夹的
37、结构和工作原理十分从上面几点看,堆栈与手枪弹夹的结构和工作原理十分相似。相似。第1章单片机基础知识 图图1-4 1-4 堆栈结构示意图堆栈结构示意图第1章单片机基础知识 地址锁存线,高电平有效。(3)SCL:时钟输入。5简述单片机内部数据存储器的结构。定时器T1计数单元TH1、TL1JZLOOP2;INCR1;ADD A,#data;MOV DPTR,#PORT_4;当0,IO/1时,可以对8155片内3个I/O端口以及命令/状态寄存器和定时/计数器进行操作。MOV A,50H;从仙童公司的第一款单片机F-8开始,甚至到MCS-51时期,这些单片机确实准确地体现了Single-Chip Mic
38、rocomputer的形态和内容。另外,散转程序也可以连续用“CJNE”指令来实现,只是程序显得“肥”,不够精简。在需要同时驱动的继电器数量比较多时,可以选用专用的驱动芯片ULN2003A/ULN2003,其内部含有7路独立的驱动电路(还包含了继电器线包回路的续流二极管),使用起来十分方便。若将定时/计数器用于计数功能,则外部事件脉冲必须从P3.SQWE=0使SQW恒为低电平。fosc/64或fosc/32A(direct)A,如ANL A,50H16个数据是否发完判断对于独立按键式键盘程序,按键不做编码也可以。SET=0时,每秒后数据更新一次;图8-8 TC9148 发射芯片典型应用图(2)
39、各功能程序实现模块化、系统化。4 4输入输入/输出设备及其接口电路输出设备及其接口电路 单片机系统的输入单片机系统的输入/输出设备也称作输出设备也称作I/OI/O设备,比如键盘、设备,比如键盘、鼠标、显示器、微型打印机等。输入鼠标、显示器、微型打印机等。输入/输出(输出(I/OI/O)接口由大)接口由大规模集成电路组成的规模集成电路组成的I/OI/O器件构成,用来连接主机和相应的器件构成,用来连接主机和相应的I/OI/O设备(如:键盘、鼠标、显示器、打印机等),使得这设备(如:键盘、鼠标、显示器、打印机等),使得这些设备和主机之间传送的数据、信息在形式上和速度上都能些设备和主机之间传送的数据、
40、信息在形式上和速度上都能匹配。不同的匹配。不同的I/OI/O设备必须配置与其相适应的设备必须配置与其相适应的I/OI/O接口。通常,接口。通常,这些接口电路集成在一块芯片上。如这些接口电路集成在一块芯片上。如8255A8255A、81558155、82538253、DAC0832DAC0832、ADC0809ADC0809等扩展芯片。等扩展芯片。第1章单片机基础知识 单片机系统软件组成单片机系统软件组成 只配备硬件设备的单片机系统,并不能完成我们所需要只配备硬件设备的单片机系统,并不能完成我们所需要实现的功能,硬件是实现功能的载体,而软件是硬件的灵魂,实现的功能,硬件是实现功能的载体,而软件是
41、硬件的灵魂,目前用来设计软件的语言分为三类。目前用来设计软件的语言分为三类。1 1机器语言机器语言 机器语言的主要特点是:机器语言的主要特点是:(1 1)由一组二进制码组成,直接能被计算机识别并执行。)由一组二进制码组成,直接能被计算机识别并执行。(2 2)不同的微处理器,采用不同的机器语言。)不同的微处理器,采用不同的机器语言。(3 3)可读性差,直观性差,容易出错,目前基本不采用。)可读性差,直观性差,容易出错,目前基本不采用。第1章单片机基础知识 2 2汇编语言汇编语言 汇编语言的主要特点是:汇编语言的主要特点是:(1 1)用助记符代替机器语言中的操作码。)用助记符代替机器语言中的操作码
42、。(2 2)汇编语言翻译成机器语言的方法有两种:一种是手工)汇编语言翻译成机器语言的方法有两种:一种是手工查表汇编,一种是机器汇编。由于机器汇编方便,目前基本查表汇编,一种是机器汇编。由于机器汇编方便,目前基本上都是采用机器汇编。上都是采用机器汇编。(3 3)不同的微处理器采用不同的汇编语言。)不同的微处理器采用不同的汇编语言。(4 4)较直观,可读性好,占用内存少,速度快。)较直观,可读性好,占用内存少,速度快。第1章单片机基础知识 3.3.高级语言高级语言高级语言的主要特点是:高级语言的主要特点是:(1 1)采用类似人类自然语言的程序设计语言。)采用类似人类自然语言的程序设计语言。(2 2
43、)通过专门的编译程序翻译成机器语言。)通过专门的编译程序翻译成机器语言。(3 3)通用性强,移植性好,不随微处理器的不同而不同。)通用性强,移植性好,不随微处理器的不同而不同。(4 4)目前较流行的有)目前较流行的有C51C51、PL/MPL/M和和BASICBASIC语言。语言。三种语言各有特点,本书介绍的是汇编语言,虽然不同三种语言各有特点,本书介绍的是汇编语言,虽然不同类型单片机的汇编语言有所不同,但还是有很多相似之处,类型单片机的汇编语言有所不同,但还是有很多相似之处,可以举一反三。同时,在掌握汇编语言的基础上,再去掌握可以举一反三。同时,在掌握汇编语言的基础上,再去掌握高级语言的编程
44、,能达到事半功倍的效果。高级语言的编程,能达到事半功倍的效果。第1章单片机基础知识 1.3 1.3 单片机中数的表示及编码单片机中数的表示及编码 在日常生活中,我们经常使用的是十进制数,而在单片在日常生活中,我们经常使用的是十进制数,而在单片机中,二进制机器编码是它的基本语言,考虑到二进制在书机中,二进制机器编码是它的基本语言,考虑到二进制在书写和阅读方面的缺点,在单片机软件编写过程中,常引入十写和阅读方面的缺点,在单片机软件编写过程中,常引入十六进制数来表示。六进制数来表示。如何进行十进制、二进制、十六进制之间的相互转换,如何进行十进制、二进制、十六进制之间的相互转换,是基本的数字处理能力,
45、这里不再详述。对此有疑问的初学是基本的数字处理能力,这里不再详述。对此有疑问的初学者,可以参考有关的数字电路基础的数据,本书主要介绍正者,可以参考有关的数字电路基础的数据,本书主要介绍正负数在计算机中的表示方法和有关编码知识。负数在计算机中的表示方法和有关编码知识。第1章单片机基础知识 正数和负数在单片机中的表示方法正数和负数在单片机中的表示方法 在日常数字表示中,有符号数的正负性可以用在日常数字表示中,有符号数的正负性可以用“+”、“-”来表示,但是在计算机数字表示中,有符号数的正负根据其来表示,但是在计算机数字表示中,有符号数的正负根据其最高位是最高位是“0 0”还是还是“1 1”来区分。
46、如在来区分。如在8 8位微机中,位微机中,D7D7位表示位表示这个数的符号,是这个数的符号,是“1 1”,表示负数,是,表示负数,是“0 0”,表示正数,其,表示正数,其余位表示数值位的大小,如图余位表示数值位的大小,如图1-51-5所示。所示。图1-5 8位有符号数的表示方法第1章单片机基础知识 【例例1-1】指出指出N1和和N2的值。的值。第1章单片机基础知识 解:解:由于由于N1N1的的D7D7位为位为1 1,是负数,后面的数值位的值为,是负数,后面的数值位的值为6 6,则,则N1=N1=-6-6;由于由于N2N2的的D7D7位为位为0 0,是正数,后面的数值位的值为,是正数,后面的数值
47、位的值为7 7,则,则N2=+7N2=+7。那么,在计算机中,那么,在计算机中,-6-6和和+7+7的存储形式真的如此吗?我们来的存储形式真的如此吗?我们来看一下下面的例子。看一下下面的例子。【例例1-21-2】求求S=N1+N2=-6+7S=N1+N2=-6+7。解:根据例解:根据例1-11-1的结果,的结果,-6=1000 0110B-6=1000 0110B,+7=0000 0111B+7=0000 0111B,则运算过程如下:则运算过程如下:10000110B N110000110B N1+00000111B N2+00000111B N2 10001101B S=-13 100011
48、01B S=-13第1章单片机基础知识 S=-13S=-13,很明显,结果错误,那么问题出在哪里呢?主,很明显,结果错误,那么问题出在哪里呢?主要是因为有符号数在计算机中的表示方法出现错误。在计算要是因为有符号数在计算机中的表示方法出现错误。在计算机中,有符号数的表示方法有机中,有符号数的表示方法有3 3种:原码、反码和补码。我种:原码、反码和补码。我们上面两个例子采用的都是原码,但是,计算机中,负数是们上面两个例子采用的都是原码,但是,计算机中,负数是以补码形式存储并参与运算的。下面我们来具体了解正负数以补码形式存储并参与运算的。下面我们来具体了解正负数的原码、反码和补码。的原码、反码和补码
49、。第1章单片机基础知识 1 1正数的原码、反码、补码正数的原码、反码、补码正数的表示最简单,它的原码、反码和补码都一样,即正数的表示最简单,它的原码、反码和补码都一样,即【X X】原原 =【X X】反反 =【X X】补补 =X=X【例例1-31-3】X=+9X=+9,求其原码、反码、补码。,求其原码、反码、补码。解:解:+9=00001001B+9=00001001B,则,则【+9+9】原原 =【+9+9】反反 =【+9+9】补补 =00001001B=00001001B第1章单片机基础知识 2 2负数的原码、反码和补码负数的原码、反码和补码负数的原码:符号位为负数的原码:符号位为1 1,其余
50、位为数值位。,其余位为数值位。【例例1-41-4】X=-9X=-9,求,求X X的原码。的原码。解:符号位为解:符号位为1 1,数值位为,数值位为9=00010019=0001001所以,所以,【-9-9】原原 =10001001B=10001001B。负数的反码:原码的符号位不变,其余位取反。负数的反码:原码的符号位不变,其余位取反。【例例1-51-5】X=-9X=-9,求,求X X的反码。的反码。解:解:【-9-9】原原 =10001001B=10001001B,根据符号位不变,其余位取反,根据符号位不变,其余位取反的方法可得,的方法可得,【-9-9】反反 =11110110B=11110