《片机基础知识E书联盟》由会员分享,可在线阅读,更多相关《片机基础知识E书联盟(599页珍藏版)》请在金锄头文库上搜索。
1、第1章单片机基础知识 第第1 1章章 单片机基础知识单片机基础知识1.1 概 述1.2 单片机系统的组成单片机系统的组成 1.3 单片机中数的表示及编码1.4 习 题沾瘤崩巢煌造瞒往檬回摄屈揍集窃碍宾烧汀围隘荧腾龙胯晾白畏忍跃冰晴片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1.1.2 1.1.2 单片机及其发展状况单片机及其发展状况 1 1单片机名称的来源单片机名称的来源 根据单片机的物理形态和内容,早期的单片机称为根据单片机的物理形态和内容,早期的单片机称为Single-Chip MicrocomputerSingle-Chip Microcomputer。从仙童公司的
2、第一款单片机。从仙童公司的第一款单片机F-8F-8开始,甚至到开始,甚至到MCS-51MCS-51时期,这些单片机确实准确地体现时期,这些单片机确实准确地体现了了Single-Chip MicrocomputerSingle-Chip Microcomputer的形态和内容。但是,随着的形态和内容。但是,随着单片机发展到单片机发展到MCS-96MCS-96、新一代、新一代80C5180C51、M68HC05M68HC05等系列单片机等系列单片机时,这些单片机面向对象,突出控制功能,在片内集成了许时,这些单片机面向对象,突出控制功能,在片内集成了许多外围电路及外设接口,如多外围电路及外设接口,如
3、A/DA/D、PWMPWM、WDTWDT等,突破了传统等,突破了传统意义的单片机结构,发展成意义的单片机结构,发展成MicrocontrollerMicrocontroller的体系结构,的体系结构,因此,目前国外已经逐步统一称单片机为因此,目前国外已经逐步统一称单片机为MCUMCU(Micro Micro Controller UnitController Unit)。由于它实行嵌入式应用,因此也称为)。由于它实行嵌入式应用,因此也称为嵌入式微控制器。嵌入式微控制器。玛握徊竿实仆型号涣巷催邓杜蘸乘报骗渗阳食弃孰盎蜡敢贬惰身士眶郭康片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知
4、识 1.1.3 80C511.1.3 80C51系列单片机简介系列单片机简介 尽管各类单片机很多,但无论从世界范围还是从国内范尽管各类单片机很多,但无论从世界范围还是从国内范围来看,使用最为广泛的还是围来看,使用最为广泛的还是MCS-51MCS-51型单片机,因此本书也型单片机,因此本书也将以将以MCS-51MCS-51型系列为主,来介绍单片机的原理及应用。型系列为主,来介绍单片机的原理及应用。MCS-51MCS-51型系列单片机共有十几种芯片,表型系列单片机共有十几种芯片,表1-11-1列举了比较典列举了比较典型的几种芯片的型号及主要技术性能指标。型的几种芯片的型号及主要技术性能指标。 表表
5、1-1:废葬牙排俗话傲硫株舱懒皂妙谎藐遮剖刃垮简综白猛薪右酝绎叙签贰玻吁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 子系列片内ROM形式ROM容量RAM 容量计数器并行口串行口中断源制造工艺无ROM掩膜ROMEPROM片内片外片内片外51子系列8031805187514KB60KB128B64KB2164815HMOS80C3180C5187C514KB60KB128B64KBCHMOS52子系列8032805287528KB56KB256B64KB3164817HMOS83C25280C25287C2528KB56KB256B64KBCHMOS蛇钦网梅麓氰娇舰包甥彝湾设
6、占啪喧潍枕痈弃编斑亥墓伪砖盔悲则拯俺坍片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 80C5180C51型单片机属于型单片机属于IntelIntel公司的公司的MCS-51MCS-51系列单片机,系列单片机,MCS-51MCS-51系列单片机采用两种半导体工艺生产。一种是系列单片机采用两种半导体工艺生产。一种是HMOSHMOS工工艺,即高密度短沟道艺,即高密度短沟道MOSMOS工艺。另外一种是工艺。另外一种是CHMOSCHMOS工艺,即互工艺,即互补金属氧化物的补金属氧化物的HMOSHMOS工艺。表工艺。表1-11-1的芯片型号中带有的芯片型号中带有“C C”的的都为都为C
7、HMOSCHMOS工艺,其余的为一般的工艺,其余的为一般的HMOSHMOS工艺。工艺。CHMOSCHMOS是是CMOSCMOS和和HMOSHMOS的结合,除具有的结合,除具有HMOSHMOS高速度、高密度的高速度、高密度的特点外,还具有特点外,还具有CMOSCMOS低功耗的优点。比如低功耗的优点。比如80518051型的功耗为型的功耗为630mW630mW,而,而80C5180C51的功耗只有的功耗只有120mW120mW。累状垦甸类圆漏米哼怕戒骑畴浴钾震烛很不臃贝虽梆祟苛汤事嗅舶地拳马片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 目目前前,IntelIntel公公司司将将
8、80C5180C51型型单单片片机机的的内内核核使使用用权权以以专专利利互互换换或或者者出出售售的的形形式式转转让让给给其其他他的的著著名名ICIC制制造造商商,如如PhilipsPhilips、ATMELATMEL、AMDAMD、DallasDallas、SiemensSiemens、LGLG、华华邦邦等等。这这些些公公司司在在80C5180C51内内核核基基础础上上,扩扩展展了了针针对对不不同同需需求求的的外外围围电电路路,如如A/DA/D、PWMPWM、WDTWDT,引引入入使使用用方方便便并并且且价价格格便便宜宜的的Flash Flash ROMROM等等,使使80C5180C51的的
9、功功能能更更加加齐齐全全、针针对对性性更更强强,巩巩固固并并发发展展了了IntelIntel公公司单片机的地位,成为当今世界司单片机的地位,成为当今世界8 8位单片机的主流。位单片机的主流。通官佯劈霞棘憋蟹敞赛亿汾敝契祷弱误左醛籽戌琶扁识仅糜耐宅盂乒卉研片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1.1.4 1.1.4 单片机的特点及应用领域单片机的特点及应用领域单片机的主要特点如下:单片机的主要特点如下:(1 1)很高的性价比。目前许多单片机的价格只要几元人民)很高的性价比。目前许多单片机的价格只要几元人民币。币。(2 2)集成度高,体积小,可靠性好。内部采用总线结构,
10、)集成度高,体积小,可靠性好。内部采用总线结构,减少各芯片间的连线。减少各芯片间的连线。(3 3)控制能力强。单片机的指令丰富,能满足各种工业控)控制能力强。单片机的指令丰富,能满足各种工业控制的要求。制的要求。(4 4)低功耗、低电压,一般在)低功耗、低电压,一般在3V3V6V6V范围内工作,低电压范围内工作,低电压供电的单片机电源下限可达供电的单片机电源下限可达1V1V2V2V,1V1V以下供电的单片机也以下供电的单片机也已诞生,便于生产便携式设备。已诞生,便于生产便携式设备。(5 5)易扩展。可根据需要进行并行或者串行扩展,形成网)易扩展。可根据需要进行并行或者串行扩展,形成网络控制系统
11、。络控制系统。巳井阴娶厂冬岔锹岳品熄炕镇炳沛翰预速窖臼煌滤柬波背菌池特暴羹臆昧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 由于单片机的特点比较突出,因此,在各个应用领域都由于单片机的特点比较突出,因此,在各个应用领域都可以见到它的身影,主要的应用领域有:可以见到它的身影,主要的应用领域有:(1 1)工业自动化控制。这是最早采用单片机控制的领域之)工业自动化控制。这是最早采用单片机控制的领域之一,如各种测控系统、一,如各种测控系统、PLCPLC等。等。(2 2)智能化家用电器。用单片机控制来替代传统的电子线)智能化家用电器。用单片机控制来替代传统的电子线路控制是当前家用电器
12、的发展趋势,如空调、洗衣机、电视路控制是当前家用电器的发展趋势,如空调、洗衣机、电视机等。机等。(3 3)智能化仪表。采用单片机的智能化仪表,加强了数据)智能化仪表。采用单片机的智能化仪表,加强了数据处理能力和网络数据传送能力,提高了仪表的档次,如各种处理能力和网络数据传送能力,提高了仪表的档次,如各种探测仪表、自动抄表系统等。探测仪表、自动抄表系统等。(4 4)办公自动化设备。目前的办公设备中多数都嵌入了单)办公自动化设备。目前的办公设备中多数都嵌入了单片机系统,如打印机、复印机、扫描仪等。片机系统,如打印机、复印机、扫描仪等。(5 5)军用航空等尖端领域的应用更加突出。)军用航空等尖端领域
13、的应用更加突出。旋福迭迸肢志渗脂喧挚烤纯僵品寂妻转煽龋支尔作膳肢川拂石窒芋摔离匙片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1.2 1.2 单片机系统的组成单片机系统的组成 当单片机内部的计算机外围功能单元不能满足对象控制当单片机内部的计算机外围功能单元不能满足对象控制要求的时候,通过系统扩展,在外部并行总线上扩展相应的要求的时候,通过系统扩展,在外部并行总线上扩展相应的计算机外围功能单元所构成的系统,称为单片机系统。这个计算机外围功能单元所构成的系统,称为单片机系统。这个定义强调的是单片机系统的硬件组成,而一个完整的单片机定义强调的是单片机系统的硬件组成,而一个完整的单
14、片机系统应该包括硬件系统和软件系统两大部分,如图系统应该包括硬件系统和软件系统两大部分,如图1-21-2所示。所示。图图1-2 1-2 单片机系统结构框图单片机系统结构框图偶佳卉碾罪度辑所邓炊皋纂弹铃谨逝忧亮彩形婆噪霸剁风扎蜀倔嘉凯逢篓片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 单片机系统的硬件由单片机芯片和外部接口电路及设备组单片机系统的硬件由单片机芯片和外部接口电路及设备组成。而单片机芯片则包括了中央处理器(成。而单片机芯片则包括了中央处理器(CPUCPU)、存储器)、存储器(ROM/RAMROM/RAM)、)、I/OI/O接口及其他功能单元(定时计数器、中断接口及其
15、他功能单元(定时计数器、中断系统、串行接口)。它们通过系统、串行接口)。它们通过ABAB(地址总线)、(地址总线)、DBDB(数据总(数据总线)、线)、CBCB(控制总线)相互连接,如图(控制总线)相互连接,如图1-31-3所示。所示。1.2.1 1.2.1 单片机系统的硬件组成单片机系统的硬件组成图图1-3 1-3 单片机系统的硬件结构图单片机系统的硬件结构图搁碰塘裔绍暑筒沿走抛般蹋痹柏测魂震品肮别拥激冈惮呻滴贵惭毙爷蓟腮片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1 1微处理器(微处理器(CPUCPU) CPU CPU主要由两部分组成:运算器和控制器。主要由两部分组成
16、:运算器和控制器。(1 1)运算器)运算器: :运算器主要完成算术运算和逻辑运算并进行逻辑测试,如零运算器主要完成算术运算和逻辑运算并进行逻辑测试,如零值测试和两个值的比较,通常算术操作产生一个运算结果,值测试和两个值的比较,通常算术操作产生一个运算结果,而一个逻辑操作产生一个判决。运算器主要由以下几部分组而一个逻辑操作产生一个判决。运算器主要由以下几部分组成。成。 累加器累加器A A:用来存放参与算术或者逻辑运算的一个操作数:用来存放参与算术或者逻辑运算的一个操作数和运算结果。和运算结果。 暂存器暂存器TMPTMP:用来暂时存放参与算术或者逻辑运算的另一:用来暂时存放参与算术或者逻辑运算的另
17、一个操作数。该操作数主要来自其他数据寄存器或者内存单元个操作数。该操作数主要来自其他数据寄存器或者内存单元中。中。津郁荣棋抒穗酷行旷蘸旗钮违沸矿呢悄死使膜盖杏泛得寺紊搅坑硷粗困疥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 算术逻辑单元算术逻辑单元ALUALU:主要完成把传送到微处理器的数据进:主要完成把传送到微处理器的数据进行算术和逻辑运算。行算术和逻辑运算。ALUALU具有两个主要的输入来源,一个累具有两个主要的输入来源,一个累加器,一个来自数据寄存器,它能够完成这两个数的相加和加器,一个来自数据寄存器,它能够完成这两个数的相加和相减,也能够完成某些逻辑运算。相减,也能
18、够完成某些逻辑运算。 标志寄存器标志寄存器F F:用来存放:用来存放ALUALU运算结果的标志位,如进位运算结果的标志位,如进位标志、溢出标志等。标志、溢出标志等。 例如:将两个数例如:将两个数12H12H和和31H31H相加,在相加之前,操作数相加,在相加之前,操作数12H12H存放在累加器存放在累加器A A中,中,31H31H存放在数据寄存器中,执行两个存放在数据寄存器中,执行两个数相加的控制线发出数相加的控制线发出“加加”操作信号,操作信号,ALUALU就把两个数相加,就把两个数相加,所加结果存入累加器所加结果存入累加器A A中,覆盖原来累加器中,覆盖原来累加器A A中的内容,执行中的内
19、容,执行完后,累加器完后,累加器A A中的内容就是中的内容就是43H43H。藩浮滋旬旷伯注倚灶肖穿垢庄绊跌券长建铂看嫩笔环凭舟少辜湿寅邦陇疤片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2 2)控制器)控制器 控制器主要是协调和控制整个计算机系统的操作,主要控制器主要是协调和控制整个计算机系统的操作,主要由以下几部分组成。由以下几部分组成。 程序计数器程序计数器PCPC:为了能够保证程序能够连续地运行下去,:为了能够保证程序能够连续地运行下去,CPUCPU必须具备某种手段来确定一条指令的地址,程序计数器必须具备某种手段来确定一条指令的地址,程序计数器就是执行这项工作。当执
20、行程序时,就是执行这项工作。当执行程序时,CPUCPU将自动修改将自动修改PCPC的内的内容,使之总是指向下一条指令的存放地址。容,使之总是指向下一条指令的存放地址。 指令寄存器指令寄存器IRIR:保存当前正在执行的一条指令。当执行:保存当前正在执行的一条指令。当执行一条指令时,先把它从程序存储器中取出,然后再传送到指一条指令时,先把它从程序存储器中取出,然后再传送到指令寄存器。令寄存器。忽铲熟领邻判察骤茹蜒唬躁靖斧丛屯戎赌顿砂佛盾伟饱追搁废犯盎魄蔷条片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 指令译码器指令译码器IDID:要执行给定指令的操作,必须给操作码:要执行给定指
21、令的操作,必须给操作码译码,以便确定所要求的操作,指令译码器就是负责这项工译码,以便确定所要求的操作,指令译码器就是负责这项工作。操作码一经译码后就向操作控制器发出具体操作的特定作。操作码一经译码后就向操作控制器发出具体操作的特定信号。信号。 时序产生器:用来产生脉冲序列和各种节拍脉冲,每个时序产生器:用来产生脉冲序列和各种节拍脉冲,每个节拍脉冲对应于一种操作,就像是体育老师的口令、交响乐节拍脉冲对应于一种操作,就像是体育老师的口令、交响乐团的指挥一样。团的指挥一样。 操作控制器:根据指令译码器的信号,产生相应的操作操作控制器:根据指令译码器的信号,产生相应的操作控制信号,以便启动规定的动作,
22、比如一次内存读写操作,控制信号,以便启动规定的动作,比如一次内存读写操作,一次算术逻辑操作,一次输入一次算术逻辑操作,一次输入/ /输出操作,指挥并控制输出操作,指挥并控制CPUCPU、内存和输入内存和输入/ /输出设备之间的数据流向。输出设备之间的数据流向。 相对控制器而言,运算器的动作是接受控制器的命令而相对控制器而言,运算器的动作是接受控制器的命令而动作的,即运算器所进行的所有操作都是由控制器发出的控动作的,即运算器所进行的所有操作都是由控制器发出的控制信号来指挥的。制信号来指挥的。应酉勺恰册绞雍按副答晋滑亏爵倍球蹈豌辉狼实绦剁炬郝盖否气伍淬糕诸片机基础知识-E书联盟片机基础知识-E书联
23、盟第1章单片机基础知识 2 2总线总线 总线(总线(BUSBUS)是计算机各部件之间传送信息的公共通道。)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是微机中有内部总线和外部总线两类。内部总线是CPUCPU内部之内部之间的连线,外部总线是指间的连线,外部总线是指CPUCPU与其他部件之间的连线。外部与其他部件之间的连线。外部总线有三种:数据总线总线有三种:数据总线DBDB(Data BusData Bus)、地址总线)、地址总线ABAB(Address BusAddress Bus)和控制总线)和控制总线CBCB(Control BusControl Bus)
24、。)。(1 1)地址总线()地址总线(ABAB):地址总线宽度根据寻址范围来确定):地址总线宽度根据寻址范围来确定的,当寻址范围是的,当寻址范围是4KB4KB212B212B时,需要的地址线宽度为时,需要的地址线宽度为1212位,位,由于由于80C5180C51单片机的寻址范围最多可达单片机的寻址范围最多可达64KB64KB,因此地址总线,因此地址总线宽度为宽度为1616位,由位,由P0P0口经地址锁存器提供低口经地址锁存器提供低8 8位地址(位地址(A0A0A7A7););P2P2口直接提供高口直接提供高8 8位地址(位地址(A8A8A15A15)。因地址信号是)。因地址信号是由由CPUCP
25、U发出的,故地址总线是单方向的。发出的,故地址总线是单方向的。(2 2)数据总线()数据总线(DBDB):由于):由于80C5180C51单片机为单片机为8 8位机,故数据位机,故数据总线宽度为总线宽度为8 8位,用于传送数据和指令,由位,用于传送数据和指令,由P0P0口提供。口提供。(3 3)控制总线()控制总线(CBCB):控制总线随时掌控各种部件的状态,):控制总线随时掌控各种部件的状态,并根据需要向有关部件发出控制命令。并根据需要向有关部件发出控制命令。程价木者豌东龟周栖揉辈嘶隧招龄更刽楞羚根烈饰颂她形蹲臣霄息这咳工片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3
26、3存储器存储器 存储器的主要功能就是用来存放程序代码和数据。存储器的主要功能就是用来存放程序代码和数据。(1 1)存储器的分类)存储器的分类 按照存储器的存取功能分,可分为:按照存储器的存取功能分,可分为:随机存取存储器(随机存取存储器(Random Access MemoryRandom Access Memory,RAMRAM)。它可)。它可以随机写入和读出,读写速度快,但是断电后,存储的以随机写入和读出,读写速度快,但是断电后,存储的数据就要丢失。主要用来存放各种处理数据。数据就要丢失。主要用来存放各种处理数据。 只读存储器(只读存储器(Read Only MemoryRead Only
27、 Memory,ROMROM)。它在一般)。它在一般情况下只能读不能写,当然,在满足一定条件下也可以情况下只能读不能写,当然,在满足一定条件下也可以完成写入操作,否则,读的数据又从何而来呢?它的另完成写入操作,否则,读的数据又从何而来呢?它的另外一个特点就是掉电不丢失,能长期保存数据。从写入外一个特点就是掉电不丢失,能长期保存数据。从写入方式来看,方式来看,ROMROM也有很多分类,主要有:掩膜也有很多分类,主要有:掩膜ROMROM、EPROMEPROM、EEPROMEEPROM、FLASHROMFLASHROM和和OTPROMOTPROM(一次性编程(一次性编程ROMROM)。)。某衣抗缝类
28、瓜懦鹊碟铁欺愈诚匀醒啤慧治强仍涣肚奔控冷剖碳卖荐后介尊片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 按照存储器结构分,可分为:按照存储器结构分,可分为: 普林斯顿结构。一般微机只有一个地址空间,普林斯顿结构。一般微机只有一个地址空间,ROMROM和和RAMRAM可以随意安排在这一地址范围内不同的空间,即可以随意安排在这一地址范围内不同的空间,即ROMROM和和RAMRAM的地址在同一个队列里分配不同的地址空间。的地址在同一个队列里分配不同的地址空间。CPUCPU访问存储器时,一个地址对应唯一的存储空间,可以是访问存储器时,一个地址对应唯一的存储空间,可以是ROMROM,也可
29、以是,也可以是RAMRAM,并用同一种指令访问。,并用同一种指令访问。 哈佛结构。如哈佛结构。如80C5180C51的存储器结构分程序存储器空间的存储器结构分程序存储器空间和数据存储器空间,总共有和数据存储器空间,总共有4 4个物理存储空间,即片内程个物理存储空间,即片内程序存储器空间、片外程序存储器空间、片内数据存储器序存储器空间、片外程序存储器空间、片内数据存储器空间、片外数据存储器空间,并用不同的指令访问程序空间、片外数据存储器空间,并用不同的指令访问程序存储器和数据存储器,这种程序存储器和数据存储器分存储器和数据存储器,这种程序存储器和数据存储器分开的结构就称为哈佛结构。开的结构就称为
30、哈佛结构。锤铬脯伸蒋实挛噪蠢癌脂弧定夺插敢竞混澄炯宠持筛令姿巍析正执萎争哇片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2 2)存储器的操作)存储器的操作 存储器的操作分为读操作和写操作。存储器的操作分为读操作和写操作。 例如,将数据存储器例如,将数据存储器30H30H中的内容中的内容03H03H读出到累加器读出到累加器A A中。中。其步骤如下:其步骤如下: CPU CPU将要读存储空间的地址码将要读存储空间的地址码30H30H送到地址总线上,选通送到地址总线上,选通地址为地址为30H30H的存储单元。的存储单元。 CPU CPU的控制器发出的控制器发出“读读”信号,建立
31、存储器到信号,建立存储器到CPUCPU的数据的数据流向。流向。 存储器将地址为存储器将地址为30H30H的存储单元中的内容的存储单元中的内容03H03H释放到数据释放到数据总线上。总线上。 CPU CPU将数据总线上的数据将数据总线上的数据03H03H读入到累加器读入到累加器A A中。中。 注意:读操作不影响原来单元内容,即注意:读操作不影响原来单元内容,即30H30H中的内容还是中的内容还是03H03H,类似计算机操作中的,类似计算机操作中的“复制复制”。债冶帆疼帚安便觉陕俗执问浇洋投警巴上抗婶萎宝早止疡秘拱叔咳阳活渔片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 例如,将
32、数据例如,将数据10H10H送到地址为送到地址为40H40H的内部数据存储单元中。的内部数据存储单元中。其步骤如下:其步骤如下: CPU CPU将要写入的存储空间的地址码将要写入的存储空间的地址码40H40H送到地址总线上,送到地址总线上,选通地址为选通地址为40H40H的存储单元。的存储单元。 将数据将数据10H10H送到数据总线上。送到数据总线上。 CPU CPU控制器发出控制器发出“写写”信号,建立信号,建立CPUCPU到存储器的数据流到存储器的数据流向。向。 存储器将数据存储器将数据10H10H送入到地址为送入到地址为40H40H的存储单元中。的存储单元中。注意:写操作要改变原来单元的
33、内容,类似计算机操作中的注意:写操作要改变原来单元的内容,类似计算机操作中的“粘贴粘贴”,如果,如果40H40H单元中原来的内容是单元中原来的内容是20H20H,经过这次写操,经过这次写操作后,作后,40H40H单元中的内容就改为单元中的内容就改为10H10H。抉对丑呐挽徐枫咆阶斌丸择絮贷梨鳃辜衰乔氟姜沂掘凄庸赔希百站捅卧坐片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3 3)堆栈)堆栈 堆栈就是在单片机堆栈就是在单片机RAMRAM中,专门划出一个区域用来临时中,专门划出一个区域用来临时存放一些重要数据码或者地址码。对于堆栈,应主要掌握以存放一些重要数据码或者地址码。对于
34、堆栈,应主要掌握以下几点。下几点。 栈底地址:用来确定堆栈的深度,一般可在程序初始化栈底地址:用来确定堆栈的深度,一般可在程序初始化部分通过对堆栈指针部分通过对堆栈指针SP SP 的赋值来确定,如的赋值来确定,如MOV SP,#60HMOV SP,#60H,就,就是将堆栈的栈底设定为是将堆栈的栈底设定为60H60H(深度为(深度为32B32B)。)。 堆栈指针:用来指出当前栈顶的存储单元的地址。堆栈指针:用来指出当前栈顶的存储单元的地址。 堆栈原则:堆栈操作遵循堆栈原则:堆栈操作遵循“先进后出先进后出”的原则。的原则。否企跋谤咯跑犹涅缴朝个抖华垂省缝大瓜监誓官坚妹涛须欣骂霞丝泅跨号片机基础知识
35、-E书联盟片机基础知识-E书联盟第1章单片机基础知识 如图如图1-41-4是一堆栈的结构图。通过这个图可以了解以下是一堆栈的结构图。通过这个图可以了解以下几点:几点: 这个堆栈的栈底为这个堆栈的栈底为50H50H,在程序初始化过程中可以通过指,在程序初始化过程中可以通过指令令MOV SP,#50HMOV SP,#50H来指定,同时确定堆栈深度为来指定,同时确定堆栈深度为51H51H7FH7FH,在,在具体使用中的堆栈深度根据实际需要保存的数据个数来确定。具体使用中的堆栈深度根据实际需要保存的数据个数来确定。 当前堆栈指针当前堆栈指针SPSP的值为的值为54H54H,即当前栈顶为,即当前栈顶为5
36、4H54H。 这这4 4个数据的压栈顺序为个数据的压栈顺序为10H10H、14H14H、58H58H、64H64H,根据,根据“先先进后出进后出”原则,这原则,这4 4个数据的出栈顺序为个数据的出栈顺序为64H64H、58H58H、14H14H、10H10H。 从上面几点看,堆栈与手枪弹夹的结构和工作原理十分从上面几点看,堆栈与手枪弹夹的结构和工作原理十分相似。相似。藻蘑浮舌毋再俏网口硫凤浇躇悬宠淄谨舞厌喉动歧圆顺寝年计阀康曰愤恰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图1-4 1-4 堆栈结构示意图堆栈结构示意图糖亨厅炽拒踏贺况黑渴捍辐题拒锡认谱毕寓蜜齐类税徐小白
37、划托噶郑人漳片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4 4输入输入/ /输出设备及其接口电路输出设备及其接口电路 单片机系统的输入单片机系统的输入/ /输出设备也称作输出设备也称作I/OI/O设备,比如键盘、设备,比如键盘、鼠标、显示器、微型打印机等。输入鼠标、显示器、微型打印机等。输入/ /输出(输出(I/OI/O)接口由大)接口由大规模集成电路组成的规模集成电路组成的I/OI/O器件构成,用来连接主机和相应的器件构成,用来连接主机和相应的I/OI/O设备(如:键盘、鼠标、显示器、打印机等),使得这设备(如:键盘、鼠标、显示器、打印机等),使得这些设备和主机之间传送
38、的数据、信息在形式上和速度上都能些设备和主机之间传送的数据、信息在形式上和速度上都能匹配。不同的匹配。不同的I/OI/O设备必须配置与其相适应的设备必须配置与其相适应的I/OI/O接口。通常,接口。通常,这些接口电路集成在一块芯片上。如这些接口电路集成在一块芯片上。如8255A8255A、81558155、82538253、DAC0832DAC0832、ADC0809ADC0809等扩展芯片。等扩展芯片。暗箩契椎佃姨闲拐又需证溉延褐菜矮谣释爽锅半列夯啼磁丹刹利驻遥壬夺片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1.2.2 1.2.2 单片机系统软件组成单片机系统软件组成
39、只配备硬件设备的单片机系统,并不能完成我们所需要只配备硬件设备的单片机系统,并不能完成我们所需要实现的功能,硬件是实现功能的载体,而软件是硬件的灵魂,实现的功能,硬件是实现功能的载体,而软件是硬件的灵魂,目前用来设计软件的语言分为三类。目前用来设计软件的语言分为三类。1 1机器语言机器语言 机器语言的主要特点是:机器语言的主要特点是:(1 1)由一组二进制码组成,直接能被计算机识别并执行。)由一组二进制码组成,直接能被计算机识别并执行。(2 2)不同的微处理器,采用不同的机器语言。)不同的微处理器,采用不同的机器语言。(3 3)可读性差,直观性差,容易出错,目前基本不采用。)可读性差,直观性差
40、,容易出错,目前基本不采用。舞如谚议剪桶倾对姓锣键绵摄棉憾甲辱窝他勇拿惕粮净泳抚窒鹃圾喘旱莫片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2 2汇编语言汇编语言 汇编语言的主要特点是:汇编语言的主要特点是:(1 1)用助记符代替机器语言中的操作码。)用助记符代替机器语言中的操作码。(2 2)汇编语言翻译成机器语言的方法有两种:一种是手工)汇编语言翻译成机器语言的方法有两种:一种是手工查表汇编,一种是机器汇编。由于机器汇编方便,目前基本查表汇编,一种是机器汇编。由于机器汇编方便,目前基本上都是采用机器汇编。上都是采用机器汇编。(3 3)不同的微处理器采用不同的汇编语言。)不同
41、的微处理器采用不同的汇编语言。(4 4)较直观,可读性好,占用内存少,速度快。)较直观,可读性好,占用内存少,速度快。前棚州荫湿尔轰鼓匠晰胺拳例圭溢尘亿逗桃礁亮框狡恼隋惜抡沉迫咙垃镑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.3.高级语言高级语言高级语言的主要特点是:高级语言的主要特点是:(1 1)采用类似人类自然语言的程序设计语言。)采用类似人类自然语言的程序设计语言。(2 2)通过专门的编译程序翻译成机器语言。)通过专门的编译程序翻译成机器语言。(3 3)通用性强,移植性好,不随微处理器的不同而不同。)通用性强,移植性好,不随微处理器的不同而不同。(4 4)目前较
42、流行的有)目前较流行的有C51C51、PL/MPL/M和和BASICBASIC语言。语言。 三种语言各有特点,本书介绍的是汇编语言,虽然不同三种语言各有特点,本书介绍的是汇编语言,虽然不同类型单片机的汇编语言有所不同,但还是有很多相似之处,类型单片机的汇编语言有所不同,但还是有很多相似之处,可以举一反三。同时,在掌握汇编语言的基础上,再去掌握可以举一反三。同时,在掌握汇编语言的基础上,再去掌握高级语言的编程,能达到事半功倍的效果。高级语言的编程,能达到事半功倍的效果。梆崔劈遂已泥焰稀锣铂帧壹蓬袒陈丫酵蚁获般猖给财念缮腻搀症钻翠浩绦片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识
43、 1.3 1.3 单片机中数的表示及编码单片机中数的表示及编码 在日常生活中,我们经常使用的是十进制数,而在单片在日常生活中,我们经常使用的是十进制数,而在单片机中,二进制机器编码是它的基本语言,考虑到二进制在书机中,二进制机器编码是它的基本语言,考虑到二进制在书写和阅读方面的缺点,在单片机软件编写过程中,常引入十写和阅读方面的缺点,在单片机软件编写过程中,常引入十六进制数来表示。六进制数来表示。 如何进行十进制、二进制、十六进制之间的相互转换,如何进行十进制、二进制、十六进制之间的相互转换,是基本的数字处理能力,这里不再详述。对此有疑问的初学是基本的数字处理能力,这里不再详述。对此有疑问的初
44、学者,可以参考有关的数字电路基础的数据,本书主要介绍正者,可以参考有关的数字电路基础的数据,本书主要介绍正负数在计算机中的表示方法和有关编码知识。负数在计算机中的表示方法和有关编码知识。瞬矫蛹腾柿阐续弓剪蔬耀禾酿奶图赁烩候箔绽挑层小甫驱磕亭手镇谣瞎用片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1.3.1 1.3.1 正数和负数在单片机中的表示方法正数和负数在单片机中的表示方法 在日常数字表示中,有符号数的正负性可以用在日常数字表示中,有符号数的正负性可以用“+ +”、“- -”来表示,但是在计算机数字表示中,有符号数的正负根据来表示,但是在计算机数字表示中,有符号数的正负
45、根据其最高位是其最高位是“0 0”还是还是“1 1”来区分。如在来区分。如在8 8位微机中,位微机中,D7D7位位表示这个数的符号,是表示这个数的符号,是“1 1”,表示负数,是,表示负数,是“0 0”,表示正,表示正数,其余位表示数值位的大小,如图数,其余位表示数值位的大小,如图1-51-5所示。所示。图1-5 8位有符号数的表示方法郧双拭膊志贮痹尚伤诣渊苑贬粘呼扑般衅吉康源廊赤拍嘎揽楷骂檬猖馏鸳片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例1-1】指出】指出N1和和N2的值。的值。涡掷头酚厕砚氏睹嫡嘱梅掺过则逼悉宦手檀牲扼瑰洪丁烩洋轧切璃抽骄泥片机基础知识-E书
46、联盟片机基础知识-E书联盟第1章单片机基础知识 解:解:由于由于N1N1的的D7D7位为位为1 1,是负数,后面的数值位的值为,是负数,后面的数值位的值为6 6,则,则N1= N1= -6-6;由于由于N2N2的的D7D7位为位为0 0,是正数,后面的数值位的值为,是正数,后面的数值位的值为7 7,则,则N2=+7N2=+7。那么,在计算机中,那么,在计算机中,-6-6和和+7+7的存储形式真的如此吗?我们来的存储形式真的如此吗?我们来看一下下面的例子。看一下下面的例子。【例【例1-21-2】求】求S=N1+N2=-6+7S=N1+N2=-6+7。解:根据例解:根据例1-11-1的结果,的结果
47、,-6=1000 0110B-6=1000 0110B,+7=0000 0111B+7=0000 0111B,则运算过程如下:则运算过程如下: 10000110B N1 10000110B N1+00000111B N2+00000111B N2 10001101B S=-13 10001101B S=-13翼拷胸声轧挖卓韧婿抢契到伟递打神局姨框封滨嘱狐末邻稚桶袋拴呸痢靴片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 S=-13S=-13,很明显,结果错误,那么问题出在哪里呢?主,很明显,结果错误,那么问题出在哪里呢?主要是因为有符号数在计算机中的表示方法出现错误。在计算要是
48、因为有符号数在计算机中的表示方法出现错误。在计算机中,有符号数的表示方法有机中,有符号数的表示方法有3 3种:原码、反码和补码。我种:原码、反码和补码。我们上面两个例子采用的都是原码,但是,计算机中,负数是们上面两个例子采用的都是原码,但是,计算机中,负数是以补码形式存储并参与运算的。下面我们来具体了解正负数以补码形式存储并参与运算的。下面我们来具体了解正负数的原码、反码和补码。的原码、反码和补码。 倔谷冒躇挑晦斩膘丧感缘党馏匣揭攻馋颇桐然蘑田犹笔叉扒锌淡亭众快瘸片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1 1正数的原码、反码、补码正数的原码、反码、补码正数的表示最简单
49、,它的原码、反码和补码都一样,即正数的表示最简单,它的原码、反码和补码都一样,即【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煞牵宿舱流尊募箭牙官酿圭稳赦逮凿佬篙印纹仕拄椒人烃韦脾穗纂汗澳了片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2 2负数的原码、反码和补码负数的原码、反
50、码和补码负数的原码:符号位为负数的原码:符号位为1 1,其余位为数值位。,其余位为数值位。【例【例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,根据符号位不变,其余位取反,根据符号位不变,
51、其余位取反的方法可得,的方法可得,【-9-9】反】反 =11110110B =11110110B负数的补码:反码加负数的补码:反码加1 1,即【,即【X X】补】补 = =【X X】反】反 +1 +1。【例【例1-61-6】X=-9X=-9,求,求X X的补码。的补码。解:【解:【-9-9】原】原 =10001001B =10001001B,【,【-9-9】反】反 = 11110110B = 11110110B,根据,根据补码等于反码加补码等于反码加1 1,则,则【-9-9】补】补 = =【-9-9】反】反 +1 = 11110110B+1=11110111B +1 = 11110110B+1
52、=11110111B昂芒尺仇骑乍用酪喜脂跪蹬星师托炯把咬挖睛喻洛弛咱厘嘛谰腐传丰挨厂片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3 3零的原码、反码和补码零的原码、反码和补码零的原码:由于零分为零的原码:由于零分为+0+0和和-0-0,则其原码有两种:,则其原码有两种:【+0+0】原】原 = 00000000B = 00000000B【-0-0】原】原 = 10000000B = 10000000B零的反码也有两种:零的反码也有两种:【+0+0】反】反 = 00000000B = 00000000B【-0-0】反】反 = 11111111B = 11111111B零点补码
53、:由于零点补码:由于+0+0的补码等于原码,的补码等于原码,-0-0的补码等于其反码加的补码等于其反码加1 1,所以,不管是,所以,不管是+0+0还是还是-0-0,它的补码只有一个:,它的补码只有一个:【+0+0】补】补 = =【-0-0】补】补 = 00000000B = 00000000B综上所述,归纳如下。综上所述,归纳如下。对于正数:对于正数: 【X X】原】原 = =【X X】反】反 = =【X X】补】补 = X = X对于负数:【对于负数:【X X】反】反 = =【X X】原】原 数值位取反,符号位不变数值位取反,符号位不变【X X】补】补 = =【X X】反】反 +1 +1螺泵
54、美喜婿妇壳即盲散庇鱼间蛰类瘪星菏圃胆趾跋初武旋伏括傍瘟查凯萎片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 学会了补码的运算,我们回过来看例学会了补码的运算,我们回过来看例1-21-2,采用补码运算,采用补码运算,【-6-6】补】补 = 11111010B = 11111010B【+7+7】补】补 = 00000111B = 00000111B则则S=-6+7S=-6+7的运算如下:的运算如下: 11111010B N1 11111010B N1+00000111B N2+00000111B N2 00000001B S=1 00000001B S=1结果正确,至此,大家应该
55、明白在计算机中,有符号数的运结果正确,至此,大家应该明白在计算机中,有符号数的运算采用的是数的补码形式。算采用的是数的补码形式。颐谬雕声栽茶钠惹址咽莽骆坷硕寐祟捏儒块弃礁绸肮缆娃携伎伸澡褥肚略片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1.3.2 1.3.2 常用编码常用编码 1 1BCDBCD码码 采用二进制码对每一个十进制数进行编码,称为采用二进制码对每一个十进制数进行编码,称为BCDBCD码,用码,用【】【】BCDBCD表示,例如:表示,例如:51=51=【0101 00010101 0001】BCDBCD,在这里,【,在这里,【0101 00010101 0001
56、】BCDBCD不能认不能认为是二进制码为是二进制码01010001B01010001B,因为,因为01010001B01010001B的十进制为的十进制为8181,而,而【0101 00010101 0001】BCDBCD的十进制为的十进制为5151,显然存在区别。具体的十,显然存在区别。具体的十进制与进制与BCDBCD码之间的关系如表码之间的关系如表1-21-2所示。所示。 表表1-2 8421BCD1-2 8421BCD编码表编码表十 进 制 数8421BCD码十 进 制 数8421BCD码00000501011000160110200107011130011810004010091001
57、曳很昔安属锤渍汰钥妙庞牟诡休惰哮弦瓣伴丘受萌钙锌蓖羽攒熬抬历猜磅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2 2BCDBCD码的加法运算码的加法运算BCDBCD码的加法运算与二进制码的加法运算规则一样,但有时码的加法运算与二进制码的加法运算规则一样,但有时候会出错,例如:候会出错,例如: 【0101 10010101 1001】BCD 59BCD 59+ +【0010 10000010 1000】BCD 28BCD 28 【1000 00011000 0001】BCD 81BCD 81显然,运算结果是错误的,因为在运算过程中,低四位向高显然,运算结果是错误的,因为在运算
58、过程中,低四位向高四位有进位,所以要进行修正,具体的修正条件和方法如下:四位有进位,所以要进行修正,具体的修正条件和方法如下:(1 1)低四位向高四位有进位,低四位加)低四位向高四位有进位,低四位加6 6修正。修正。(2 2)高四位向更高位有进位,高四位加)高四位向更高位有进位,高四位加6 6修正。修正。(3 3)低四位出现非法)低四位出现非法BCDBCD码,低四位加码,低四位加6 6修正。修正。(4 4)高四位出现非法)高四位出现非法BCDBCD码,高四位加码,高四位加6 6修正。修正。(5 5)同一个四位出现两种修正条件,则只需修正一次即可。)同一个四位出现两种修正条件,则只需修正一次即可
59、。幢绿蛆诞洼扶勃诛跋肉御隘尼缠据渭蓉讥绽酮芥春陋痕粗兆尉北督挣映溪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例1-71-7】已知】已知X=X=【0110 00010110 0001】BCDBCD,Y=Y=【0010 01100010 0110】BCDBCD,求,求S=X+YS=X+Y。解:解: 【0110 00010110 0001】BCD XBCD X(6161)+ +【0010 01100010 0110】BCD YBCD Y(2626) 【1000 01111000 0111】BCD SBCD S(8787)不满足要修正的条件,无需修正,结果正确。不满足要修
60、正的条件,无需修正,结果正确。音惶削俞涡井彦倘郎须坛偶飘逸匡腐帧恐徐巡烁蟹拄绞妊檬君酷浸暂备圾片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例1-81-8】已知】已知X=X=【0100 10000100 1000】BCDBCD,Y=Y=【0101 10010101 1001】BCDBCD,求,求S=X+YS=X+Y。解:解:【0100 10000100 1000】BCD XBCD X(4848)+ +【0101 10010101 1001】BCD YBCD Y(5959)【1010 00011010 0001】BCD BCD ;满足(;满足(1 1)、()、(4 4)
61、修正条件,进)修正条件,进行加行加6 6修正修正+ 0110 0110 + 0110 0110 【0001 0000 01110001 0000 0111】BCD SBCD S(107107)结果:结果:S=S=【00010000 011100010000 0111】BCD BCD ,由于高四位加,由于高四位加6 6后,向更后,向更高位有进位高位有进位1 1,其实也就是向百位有进位,所以最后的结果,其实也就是向百位有进位,所以最后的结果应为应为107107。怀奉江熔擒赐炯洁猩斌鹃淆射胳硬瞪瞩珠绦刺玉焰姻讥识掩钙蒲来港皂糖片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3 3B
62、CDBCD码减法码减法 BCD BCD码在进行减法运算时,也会出现需要修正的现象,码在进行减法运算时,也会出现需要修正的现象,其修正条件和方法如下:其修正条件和方法如下:(1 1)低四位向高四位有借位,低四位减)低四位向高四位有借位,低四位减6 6修正。修正。(2 2)高四位向更高位有借位,高四位减)高四位向更高位有借位,高四位减6 6修正。修正。(3 3)低四位出现非法)低四位出现非法BCDBCD码,低四位减码,低四位减6 6修正。修正。(4 4)高四位出现非法)高四位出现非法BCDBCD码,高四位减码,高四位减6 6修正。修正。(5 5)若同一个四位出现两种修正条件,则只需修正一次即)若同
63、一个四位出现两种修正条件,则只需修正一次即可。可。绵耐秸谆街淄栅翠腊掂接拐际较嘉屁凳共鲤酞乖惠括桥澄告圣产满鄂竿纂片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例1-91-9】已知】已知X=X=【0010 00100010 0010】BCDBCD,Y=Y=【0001 00010001 0001】BCDBCD,求,求S=X-YS=X-Y。解:解:【0010 00100010 0010】BCD XBCD X(2222)- -【0001 00010001 0001】BCD YBCD Y(1111)【0001 00010001 0001】BCD SBCD S(1111);不满
64、足修正条件,无需修正);不满足修正条件,无需修正磅疚削颊陇漓贺蹈寅理喉括考退隧娱剖刃酞劝忿卉晒舔霄焙舶瞥没诚否逸片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例1-101-10】已知】已知X=X=【0010 00010010 0001】BCDBCD,Y=Y=【0101 10010101 1001】BCDBCD,求,求S=X-YS=X-Y。解:解:【0010 00010010 0001】BCD XBCD X(2121)- -【0101 10010101 1001】BCD YBCD Y(5959)【1100 10001100 1000】BCD BCD ;满足(;满足(1
65、1)、()、(2 2)、()、(4 4)修正)修正条件,进行减条件,进行减6 6修正修正- 0110 0110 - 0110 0110 1(1(借位借位) )【0110 00100110 0010】BCD SBCD S(6262)BCDBCD码是无符号数,这里的结果码是无符号数,这里的结果S=62S=62,不符合条件,但是,不符合条件,但是,由于向更高位(百位)借位了,所以,结果应该是由于向更高位(百位)借位了,所以,结果应该是62-100 = 62-100 = -38-38。 掇鬼周盆痉哨砰颅球赎乌膛胰吧矮捉陷命棒园净燥批叔邀泳辅矣竹沼泉胃片机基础知识-E书联盟片机基础知识-E书联盟第1章单
66、片机基础知识 4 4ASCIIASCII码码 在计算机中,除了处理数字信息外,还必须处理用来组在计算机中,除了处理数字信息外,还必须处理用来组织、控制或表示数据的字母和符号,这些字母或符号也必须织、控制或表示数据的字母和符号,这些字母或符号也必须按照特定的规则用二进制来编码。按照特定的规则用二进制来编码。 目前这种编码规则普遍采用的是目前这种编码规则普遍采用的是ASCIIASCII码(码(American American Standard Code for Information InterchangeStandard Code for Information Interchange,美国信
67、息,美国信息交换标准码),由交换标准码),由7 7位二进制码组成,可以表示位二进制码组成,可以表示128128个字符,个字符,包括数字(包括数字(0 09 9)、大小写英文字母、标点符号和控制字符,)、大小写英文字母、标点符号和控制字符,具体如表具体如表1-31-3所示。所示。嚎阳晃淬窒老蓑姻渭趣高淬矽卑彰藕胚瞥店亮页俱誓穴祝侠娩必脯戳满钨片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 表表1-3 ASCII编码表编码表 之郑贿淆夜发记迸殆扶谴戊升住施吁羚窝理峡轨梅泞混冲寡橡扮警烤赎艰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 根据此表,我们应该掌握以下
68、几点:根据此表,我们应该掌握以下几点:(1 1)根据已知道某个数字、字母、标点符号或控制字符,)根据已知道某个数字、字母、标点符号或控制字符,能够找出其能够找出其ASCIIASCII码。码。(2 2)大写英文字母的)大写英文字母的ASCIIASCII码比小写英文字母的码比小写英文字母的ASCIIASCII码小码小20H20H,如,如,“A A”的的ASCIIASCII码为码为41H41H,“a a”的的ASCIIASCII码为码为61H61H。(3 3)数字)数字0 09 9的的ASCIIASCII码为码为30H30H39H39H。炯钦裳旨娥赎陀黑瞬曾涯醋廷倒劳侍娩腋龄吨晰绝范帮与认遗札丁衍句
69、亦片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1.4 1.4 习习 题题 1 1PCPC机和单片机都是属于微型机,它们之间有什么区机和单片机都是属于微型机,它们之间有什么区别?别?2 2简述单片机的特点及主要应用领域,并举例说明。简述单片机的特点及主要应用领域,并举例说明。3 3MCS-51MCS-51单片机的单片机的5151子系列和子系列和5252子系列有哪些主要区别?子系列有哪些主要区别?4 4单片机系统的硬件组成由哪几部分组成?并说明各个部单片机系统的硬件组成由哪几部分组成?并说明各个部分的主要功能。分的主要功能。5 5什么叫总线?总线可以分为哪几种?什么叫总线?总
70、线可以分为哪几种?6 6堆栈的操作原则是什么?如何来确定堆栈的栈底地址?堆栈的操作原则是什么?如何来确定堆栈的栈底地址?7 7机器语言、汇编语言和高级语言各有什么优缺点?机器语言、汇编语言和高级语言各有什么优缺点?8 8在在8 8位单片机中,有符号数的正负号如何表示?位单片机中,有符号数的正负号如何表示?9 9原码、反码、补码之间的换算关系是怎么样的?原码、反码、补码之间的换算关系是怎么样的?1010什么叫什么叫BCDBCD码?码?BCDBCD码和二进制码之间有何区别?码和二进制码之间有何区别?反肌剩伏奥遏俺佬准聚野醛恤成右筏翅望寓夫容孪涪贮强搔礁肖鹊烽甄蚕片机基础知识-E书联盟片机基础知识-
71、E书联盟第1章单片机基础知识 1111分别求出下列各数的原码、反码和补码,分别用二分别求出下列各数的原码、反码和补码,分别用二进制和十六进制数表示。进制和十六进制数表示。(1 1)+37+37(2 2)-54-54(3 3)+121+121(4 4)-216-2161212将下列数转换成将下列数转换成BCDBCD码。码。(1 1)123123(2 2)864864(3 3)56.7556.75(4 4)3493491313已知十进制数已知十进制数X X、Y Y,求,求S=X+YS=X+Y,用十六进制表示。,用十六进制表示。(1 1)X=45X=45,Y=89Y=89;(2 2)X=-65X=-
72、65,Y=78Y=78;(3 3)X=-76X=-76,Y=34Y=34。董欣率驱笛按霜译斋炎迎田裔锯星择汽僵港陌娃疹冠较酒扬韵趣咙藐丑朵片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1414已知已知BCDBCD码码X X、Y Y,求,求S=X+YS=X+Y,T=X-YT=X-Y。(1 1)X=X=【0011 01000011 0100】BCDBCD,Y=Y=【0101 00100101 0010】BCD BCD (2 2)X=X=【0101 01100101 0110】BCDBCD,Y=Y=【0010 10010010 1001】BCD BCD (3 3)X=X=【100
73、0 01101000 0110】BCDBCD,Y=Y=【0100 00100100 0010】BCD BCD 1515查表写出下列字符的查表写出下列字符的ASCIIASCII码。码。(1 1)D D(2 2)7 7(3 3)?)?(4 4)e e钳慑伍墙冗讯夫雀津角譬炸窘史靛绸玫龚众妥幸腹誓颜径恋喷敌刚就戳遏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 第2章 MCS-51单片机硬件与系统扩展2.1 MCS-51外部引脚2.2 P0、P1、P2、P3口的内部结构及使用2.3 单片机内部硬件资源2.4 时钟与复位电路2.5 单片机系统扩展2.6 习 题驱忘梢诲佃扦亦傈陋吟或煎
74、冲仪垢峦玖蔬沈震浙酬丢捎蹬阿酶卿盛吁黍皿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 对对于于硬硬件件系系统统设设计计人人员员来来说说,掌掌握握单单片片机机硬硬件件资资源源是是十十分分重重要要的的,只只有有熟熟悉悉了了单单片片机机的的硬硬件件“家家底底”,才才能能合合理理安安排排、正正确确使使用用现现有有资资源源,并并做做到到物物尽尽其其用用。MCS-51MCS-51单单片片机机是是美美国国IntelIntel公公司司的的产产品品,但但在在实实际际应应用用时时常常常常选选用用美美国国ATMELATMEL公公司司的的产产品品,如如AT89C51/52AT89C51/52(40
75、40脚脚)和和AT89C2051AT89C2051(2020脚脚)。ATMELATMEL公公司司ATAT系系列列单单片片机机相相当当于于IntelIntel公公司司单单片片机机的的FlashFlash版版本本,两两者者硬硬件件结结构构相相同同,指指令令兼兼容容,但但FlashFlash版版本本可可以以使使程程序序的的修修改改、调调整整更更加加方方便便,所所以以ATMELATMEL公公司司的的产产品品几几乎乎成成了了MSC-51MSC-51系列单片机的主流。系列单片机的主流。滑室扮截盯重嫌泣尘厚故撰旺鬃郑定赋盲连排比彝骸窄流新擒神翟夕五犬片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基
76、础知识 2.1 MCS-512.1 MCS-51外部引脚外部引脚 AT89C51/52 AT89C51/52的外部有的外部有4040个脚(与个脚(与8051/87518051/8751相同,如图相同,如图2-12-1所示),这些管脚根据功能可以将它们分成三大组:所示),这些管脚根据功能可以将它们分成三大组:阳矩惨劈象许茄益榜鼎疙米栖泽酵删秀赡衫橱撅卿杨痕踏滨普眨离鄙舌删片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1 1系统工作必需的引脚(系统工作必需的引脚(5 5个脚)个脚)VCCVCC(4040脚)、脚)、VSSVSS(2020脚):电源脚):电源5V5V和地(和地(A
77、T89LVAT89LV系列芯片系列芯片可以工作在可以工作在2.7V2.7V6V6V)。)。RST/VPDRST/VPD(9 9脚):脚):RSTRST即为即为RESETRESET的缩写,的缩写,VPDVPD为备用电源。为备用电源。该引脚为单片机的上电复位或掉电保护端。当单片机振荡器该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,可以使工作时,该引脚上出现持续两个机器周期的高电平,可以使单片机回复到初始状态(复位)。上电时,考虑到振荡器有单片机回复到初始状态(复位)。上电时,考虑到振荡器有一定的起振时间,该引脚上高电平必须持续一定的起振时间,该引
78、脚上高电平必须持续10 ms10 ms以上才能以上才能保证有效复位。保证有效复位。XTAL1XTAL1、XTAL2XTAL2:接晶振,实际使用时还需加两个:接晶振,实际使用时还需加两个30pF30pF的补偿的补偿电容,常用晶振频率有电容,常用晶振频率有6MHz6MHz、12 MHz12 MHz和和11.0592 MHz11.0592 MHz,AT89C51/52AT89C51/52最高工作频率达最高工作频率达24 MHz24 MHz。上述管脚的电压或波形不满足要求的话,系统无法工作,一上述管脚的电压或波形不满足要求的话,系统无法工作,一般表现为无法启动。般表现为无法启动。刮棒油脆瞎四硅五净肪伶
79、胃馅逐嫁烩腹昧心投章唇以限苯擦镁酉丸春墓凯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2 2与外部电路联络的脚(与外部电路联络的脚(3232个脚)个脚)P0P0:在扩展时作为数据总线:在扩展时作为数据总线/ /地址低地址低8 8位线,扩展不用时可以位线,扩展不用时可以作为用户作为用户I/OI/O线。线。P1P1:仅作用户:仅作用户I/OI/O口。口。P2P2:在扩展时作为地址高:在扩展时作为地址高8 8位线,扩展不用时作为用户位线,扩展不用时作为用户I/OI/O线。线。P3P3:首先保证第二功能(如表:首先保证第二功能(如表2-12-1所示),若第二功能不用,所示),若第
80、二功能不用,则可作为用户则可作为用户I/OI/O线。线。帧饵磺轧霹卡伤慷丫小蛆孵魁圈和袜坐津快扣咖性侦液倔敛聊牛泄羌旭挺片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 搞齿匆癣詹纫递重蠢似庇冠辆铂俯幸界蕉痰娥鄙垢微盈件短犊编梦疙落像片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3 3控制脚(控制脚(3 3个脚)个脚)(1 1)/VPP/VPP(3131脚):为片内、片外脚):为片内、片外ROMROM选择控制脚,具体如选择控制脚,具体如图图2-22-2所示,早期的所示,早期的80318031等内部没有等内部没有ROMROM,故使用时接地,目,故使用时接地,目
81、前前AT89C51/52AT89C51/52内部均有内部均有ROMROM(FlashFlash),所以使用时直接接),所以使用时直接接VCCVCC。对于。对于EPROMEPROM型单片机(如型单片机(如87518751),在编程期间该脚用于),在编程期间该脚用于提供编程电压(提供编程电压(VPPVPP)。)。图2-2 MCS-51程序存储器结构鲸纺兼吁佛举稽讶丽卸月尽剔偷袄烤善俞蜒颜椿豢稚垦申空又闸瘫蔬总羽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2 2)ALE/PROGALE/PROG(3030脚):地址锁存有效信号输出端。脚):地址锁存有效信号输出端。ALEALE
82、在在每个机器周期内输出两个脉冲,在访问片外程序存储器期间,每个机器周期内输出两个脉冲,在访问片外程序存储器期间,下降沿用于控制锁存下降沿用于控制锁存P0P0输出的低输出的低8 8位地址;在不访问片外程位地址;在不访问片外程序存储器期间,可作为对外输出的时钟脉冲或用于定时目的,序存储器期间,可作为对外输出的时钟脉冲或用于定时目的,但要注意,在访问片外数据存储器期间,但要注意,在访问片外数据存储器期间,ALEALE脉冲会跳空一脉冲会跳空一个,此时作为时钟输出就不妥了。对于片内含有个,此时作为时钟输出就不妥了。对于片内含有EPROMEPROM的机的机型,在编程期间,该引脚用作编程脉冲型,在编程期间,
83、该引脚用作编程脉冲PROGPROG的输入端。的输入端。娄瞩朝泅补窜长被憾嵌枕捆买洲驯剖郎阴挛牢肺密陆锗蹬胯齿暂肾恋辐掺片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3 3)()(2929脚):片外程序存储器读选通信号输出端,低电脚):片外程序存储器读选通信号输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机平有效。当从外部程序存储器读取指令或常数期间,每个机器周期该信号两次有效,以通过数据总线器周期该信号两次有效,以通过数据总线P0P0口读回指令或常口读回指令或常数。要注意的是该脚与外部数据存储器的读、写无关。数。要注意的是该脚与外部数据存储器的读、写无关。
84、用于控制的脚其实还有用于控制的脚其实还有P3P3口的、,它们用于外部数据存储器口的、,它们用于外部数据存储器及及I/OI/O的读、写控制。尽管控制线数量不多,但在应用系统的读、写控制。尽管控制线数量不多,但在应用系统中担当着十分重要的角色,在系统扩展部分我们可以体会这中担当着十分重要的角色,在系统扩展部分我们可以体会这一点。一点。诉罐樊嘘些碧疥钳占盘响捐拇涸渤还蕾针郴谬瀑帧仁简蓟霍蕾初纪迭庸挖片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.2 P02.2 P0、P1P1、P2P2、P3P3口的内部结构及使用口的内部结构及使用 2.2.1 P0 2.2.1 P0口的内部结构
85、及使用特点口的内部结构及使用特点由图由图2-32-3可见,电路中包含一个数据输出锁存器、两个三态可见,电路中包含一个数据输出锁存器、两个三态数据输入缓冲器、一个数据输出的驱动电路和一个输出控制数据输入缓冲器、一个数据输出的驱动电路和一个输出控制电路。当对电路。当对P0P0口口进行进行写操作时,由锁存器和驱动电路构成数写操作时,由锁存器和驱动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据输出时据输出通路。由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需再加数据锁存电路。可以与外设直接连接,而不需再加数据锁存电路。图2-3 P0口一位结构图详变秧厕性硬崖定悠硅郧翌膜纶笛
86、尘伊割蕾靶港瞅迢阐鸡澄秉伺盏胳剿募片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在在P0P0口的内部有一个多路转接电路口的内部有一个多路转接电路MUXMUX,在控制信号的,在控制信号的作用下,多路转接电路可以分别接通锁存器输出或地址作用下,多路转接电路可以分别接通锁存器输出或地址/ /数数据线,使据线,使P0P0口作为外部扩展时的数据总线口作为外部扩展时的数据总线/ /兼地址低兼地址低8 8位线。位线。另外,另外,P0P0口结构的一大特点(不同于口结构的一大特点(不同于P1P1、P2P2、P3P3口)为输出口)为输出电路是漏极开路电路,当电路是漏极开路电路,当P0P0口进行
87、一般的口进行一般的I/OI/O输出时必须外输出时必须外接上拉电阻才能有高电平输出。当接上拉电阻才能有高电平输出。当P0P0口进行一般的口进行一般的I/OI/O输入输入时,必须先向电路中的锁存器写入时,必须先向电路中的锁存器写入“1 1”,使场效应管,使场效应管V2V2截截止,以避免止,以避免V2V2导通对引脚读入的影响。导通对引脚读入的影响。磷枷悼驶垮偶箭促孜哗磊货暑映康惰措喇钦瑶快唇榔铲蹿蓄度绎簧丫劳园片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.2.2 P12.2.2 P1口的内部结构及使用特点口的内部结构及使用特点 因因为为P1P1口口通通常常是是作作为为通通用用
88、I/OI/O口口使使用用的的,所所以以在在电电路路结结构构上上与与P0P0口口有有一一些些不不同同之之处处,如如图图2-42-4所所示示。首首先先它它不不再再需需要要多多路路转转接接电电路路MUXMUX;其其次次是是电电路路的的内内部部有有上上拉拉电电阻阻,与与场场效效应应管管共共同同组组成成输输出出驱驱动动电电路路。为为此此,P1P1口口作作为为输输出出口口使使用用时,无需再外接上拉电阻。时,无需再外接上拉电阻。图2-4 P1口一位结构图脐芬汽吧私粟狞鹿嘻抽苛轻载询萄器赠洼赣警悄凋坦骄种盘凯未废赛打贪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.2.3 P22.2.3
89、 P2口的内部结构及使用特点口的内部结构及使用特点如如图图2-52-5所所示示,P2P2口口电电路路比比P1P1口口电电路路多多了了一一个个多多路路转转接接电电路路MUXMUX,这这又又正正好好与与P0P0口口一一样样。P2P2口口可可以以作作为为通通用用I/OI/O口口使使用用,这这时时多多路路转转接接电电路路开开关关倒倒向向锁锁存存器器Q Q端端,同同时时又又可可作作为为高高位位地址线使用,此时多路转接电路开关应倒向地址线使用,此时多路转接电路开关应倒向“地址地址”位置。位置。图2-5 P2口一位结构图完陶癸驳区盯锋诌阂樊知盆酚裸掌辨庶爹盆超目犹昼八霹特首杠胡库苛徊片机基础知识-E书联盟片
90、机基础知识-E书联盟第1章单片机基础知识 2.2.4 P32.2.4 P3口的内部结构及使用特点口的内部结构及使用特点 P3 P3口的特点在于,为适应引脚信号第二功能的需要,增口的特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。由于第二功能信号有输入和输出两加了第二功能控制逻辑。由于第二功能信号有输入和输出两类,因此分两种情况说明,结构如图类,因此分两种情况说明,结构如图2-62-6所示。对于第二功所示。对于第二功能为输出的信号引脚,当作为能为输出的信号引脚,当作为I/OI/O使用时,第二功能信号引使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数线应保
91、持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。据输出通路的畅通。图2-6 P3口一位结构图由镜娶葱璃容抚仙摹二怂波闲速九捅扁朴侩蜒写敦终啦尔赌痘檬竞联窖单片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 对于第二功能为输入的信号引脚,在口线的输入通路上对于第二功能为输入的信号引脚,在口线的输入通路上增加了一个缓冲器,输入的第二功能信号就从这个缓冲器的增加了一个缓冲器,输入的第二功能信号就从这个缓冲器的输出端取得。而作为输出端取得。而作为I/OI/O使用的数据输入,仍取自三态缓冲使用的数据输入,仍取自三态缓冲器的输出端。不管是作为输入口使用还是第二功能信号输入,
92、器的输出端。不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线都应保持高输出电路中的锁存器输出和第二功能输出信号线都应保持高电平。电平。P3P3口作为输入使用时,也必须先写口作为输入使用时,也必须先写“1 1”,让输出电路的场,让输出电路的场效应管截止。效应管截止。剿茄霉卞掇段晃档承燎该拌腑冬界方唱盒拄唆允秆储掉刀邦蹭邀溜悸橱壳片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.2.5 P02.2.5 P0、P1P1、P2P2、P3P3作作I/OI/O使用实例使用实例1 1驱动驱动LEDLED实例实例 驱动驱动LEDLED,几乎是每个应用系统
93、中都会碰到的,分为低,几乎是每个应用系统中都会碰到的,分为低电平点亮和高电平点亮两种。在高电平时,由于端口内部结电平点亮和高电平点亮两种。在高电平时,由于端口内部结构决定了输出的电流不到构决定了输出的电流不到1mA1mA(使用时常常会在这里出错,(使用时常常会在这里出错,认为既然是高电平就一定能点亮认为既然是高电平就一定能点亮LEDLED),而允许输入的电流),而允许输入的电流可以达可以达20mA 20mA 左右,因此两种驱动左右,因此两种驱动LEDLED的电路在结构上会有较的电路在结构上会有较大差别。大差别。图图2-72-7(a a)是低电平驱动)是低电平驱动LEDLED的电路,的电路,LE
94、DLED上的电流可以用以上的电流可以用以下公式计算:下公式计算:I = (5-1.8) / R+5VR3+5V其中其中1.8V1.8V是普通型是普通型LEDLED的压降。图的压降。图2-72-7(b b)是高电平驱动)是高电平驱动LEDLED的电路,电流由的电路,电流由R3R3决定。图决定。图2-72-7(c c)是错误的高电平驱动电)是错误的高电平驱动电路(输出电流太小)。路(输出电流太小)。买莱港撼姓瞄滴什缀撰兔姑航箔抢稀岔卜鳃恃组把攻宣翻卷展拴嗓憎片韧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-7 驱动LED电路挝汤燎皮人调句档茅炙贮察蝶茸辩竹酚顽较盆瓶肝寸亡
95、遭镣侗碾丽诽旋膀片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-7 驱动LED电路(续)没皖酌育撇虞巫伺光死嘉耍苞缴户种祭钻磅昭兴渣或邦胳公坚脾倾校菜讼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2 2驱动继电器实例驱动继电器实例 继电器的驱动,从电平角度来说也有高电平驱动和低电继电器的驱动,从电平角度来说也有高电平驱动和低电平驱动两种,但实际使用的继电器的工作电压都是平驱动两种,但实际使用的继电器的工作电压都是9 V9 V、12 12 V V甚至更高,所以除了考虑驱动电流是否足够(继电器所需甚至更高,所以除了考虑驱动电流是否足够(继电器所需的驱动
96、电流可用继电器的标称工作电压除以标称电阻来估算,的驱动电流可用继电器的标称工作电压除以标称电阻来估算,常见的大约在常见的大约在40 mA40 mA60 mA60 mA,所以不管哪种结构都需要三极,所以不管哪种结构都需要三极管等电流放大电路)外,还要考虑低电平、高电平哪种驱动管等电流放大电路)外,还要考虑低电平、高电平哪种驱动更容易实现。更容易实现。咕忌球纠伟鸟卿童孕赶佯很宵咕初侣吻望咆孤刘疆躲硫洲丛钩逝册售嗓贵片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图2-82-8(a a)是常常会犯错误的所谓低电平驱动电路,尽)是常常会犯错误的所谓低电平驱动电路,尽管低电平时继电器
97、确实能工作,但当输出为高电平而想使继管低电平时继电器确实能工作,但当输出为高电平而想使继电器截止时,结果却无法跳开,好像被粘住一样,原因是电器截止时,结果却无法跳开,好像被粘住一样,原因是CPUCPU输出的高电平只有输出的高电平只有5 V5 V,而继电器的供电有,而继电器的供电有12 V12 V,而且这,而且这时继电器的供电时继电器的供电12 V12 V将有可能使将有可能使CPUCPU损坏(在使用芯片时不损坏(在使用芯片时不允许输入端的电压超过电源电压)。图允许输入端的电压超过电源电压)。图2-82-8(b b)是用高电平)是用高电平驱动的电路,图驱动的电路,图2-82-8(c c)是低电平驱
98、动。在需要同时驱动的)是低电平驱动。在需要同时驱动的继电器数量比较多时,可以选用专用的驱动芯片继电器数量比较多时,可以选用专用的驱动芯片ULN2003A/ULN2003ULN2003A/ULN2003,其内部含有,其内部含有7 7路独立的驱动电路(还包路独立的驱动电路(还包含了继电器线包回路的续流二极管),使用起来十分方便。含了继电器线包回路的续流二极管),使用起来十分方便。摊潮祖壤厚兵墨篓琶臼霄凑吐择遮颓侍痢裙硬遍荒舵淫缸彻遂畴币鳞溢窟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (a) (b)递互颂潞冒竣涉馈名陕奶恬寇蜘压技口寡马虹错弦困督瓷钓搐颠杖圣哪恋片机基础知识-
99、E书联盟片机基础知识-E书联盟第1章单片机基础知识 (c)图2-8 驱动继电器电路要桑悯培腆广顺戮眠制灯妨伦扦档烘局式廉械犹付仙租致起坤乘约契夹盼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3 3光耦器件的接口电路光耦器件的接口电路 单片机应用在强电系统时,为提高抗干扰能力,隔离输单片机应用在强电系统时,为提高抗干扰能力,隔离输出级带来的干扰和不安全性,常常使用光耦器件作为接口,出级带来的干扰和不安全性,常常使用光耦器件作为接口,常用光耦器件的内部结构如图常用光耦器件的内部结构如图2-92-9所示。所示。图2-9 常用光耦内部结构裳浆寞永焰霓氟皮锐酬汕嚼么慨泅悦珍群瞅疙枚
100、总纳蝴托妓羚训贰删捂网片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 光光耦耦器器件件的的接接口口实实例例如如图图2-102-10所所示示。图图中中的的74077407是是用用来来增加驱动能力的增加驱动能力的P1P1口为低电平时光耦导通,负载得电而工作。口为低电平时光耦导通,负载得电而工作。图2-10 光耦接口应用实例询烫交真晒既擂啸杖括忍詹优敞铬辨莽衙天仁浦邪寥弦坟玖竭悸赣曲夫溺片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.3 2.3 单片机内部硬件资源单片机内部硬件资源图图2-112-11是是MCS-51MCS-51单片机的内部结构框图,从图中可以
101、看出,单片机的内部结构框图,从图中可以看出,单片机内部主要包括:单片机内部主要包括: 图2-11 单片机内部结构框图钢樟惺疆宵磨书吞侵榆赔理臀侗高光宝阵盟嚏憾怕逗耸犀拒罪秆东壤话窄片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1 1)一个)一个8 8位位CPUCPU(含运算器、控制器)。(含运算器、控制器)。(2 2)一个片内振荡器及时钟电路。)一个片内振荡器及时钟电路。(3 3)片内存储器()片内存储器(RAMRAM和和ROMROM,AT89CAT89C系列是系列是FlashFlash)。)。(4 4)特殊功能寄存器()特殊功能寄存器(SFRSFR)。)。(5 5)4
102、4个个8 8位并行位并行I/OI/O口(口(P0P0、P1P1、P2P2、P3P3)。)。(6 6)一个全双工可编程串行口。)一个全双工可编程串行口。(7 7)定时器)定时器/ /计数器中断系统。计数器中断系统。皖字畜之噎窘鼎释香咯稼贪焉棠衙漏磺壤憨撒兜物镊惊连谱物鞋筹闻敦幌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.3.1 2.3.1 片内程序存储器片内程序存储器 在在MCS-51MCS-51单片机系列中,单片机系列中,80318031、80328032内部没有程序存储内部没有程序存储器,器,8051/8751/AT89C518051/8751/AT89C51内部有
103、内部有4K4K的程序存储器,的程序存储器,8052/8752/AT89C528052/8752/AT89C52内部有内部有8K8K的程序存储器。的程序存储器。程序存储器有不同版本,有些是程序存储器有不同版本,有些是ROMROM,如,如8051/80528051/8052等;有些等;有些是是EPROMEPROM,如,如8751/87528751/8752等;有些是等;有些是FlashFlash,如,如AT89C51/AT89C52AT89C51/AT89C52等。等。程序存储器主要用来存放程序,同时也常常用来存放数据表程序存储器主要用来存放程序,同时也常常用来存放数据表格(通过格(通过DBDB指
104、令建立数码管字型表等),在具体存放程序和指令建立数码管字型表等),在具体存放程序和建立数据表格时应该注意,程序存储器的部分空间的使用是建立数据表格时应该注意,程序存储器的部分空间的使用是有规定的,主要如下。有规定的,主要如下。嘶版晾羔澄诈洋树糙斟序继切故级握曰抖咱诗则眉渝坏否荚手隧钟而磋抉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1 1)0000H0000H:称为复位入口地址,系统复位后,程序计数器:称为复位入口地址,系统复位后,程序计数器PCPC的内容为的内容为0000H0000H,程序就从,程序就从0000H0000H开始重新执行。开始重新执行。(2 2)0003
105、H0003H:外部中断:外部中断0 0入口地址,当外部中断入口地址,当外部中断0 0发生且被响发生且被响应后,应后,CPUCPU将停止原来的程序(会自动记录停止时的程序位将停止原来的程序(会自动记录停止时的程序位置,以便置,以便“回来回来”后能后能“继续工作继续工作”),程序直接转入),程序直接转入0003H0003H这个入口地址,进而执行中断后需要执行的任务,这个入口地址,进而执行中断后需要执行的任务,0003H0003H又称为外部中断又称为外部中断0 0矢量地址。矢量地址。(3 3)000BH000BH:定时器:定时器T0T0中断入口地址。中断入口地址。(4 4)0013H0013H:外部
106、中断:外部中断1 1入口地址。入口地址。(5 5)001BH001BH:定时器:定时器T1T1中断入口地址。中断入口地址。(6 6)0023H0023H:串行口中断入口地址。:串行口中断入口地址。湍墩腿八疹轩郡邱涪禾猿月橇荒骆隘密蒲其瞄因瑞捂流旨泰啮沼妙帜帝撞片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在在上上述述入入口口地地址址区区域域不不能能放放置置用用户户的的程程序序和和建建立立数数据据表表格格,原原因因是是:由由于于两两个个中中断断入入口口地地址址间间仅仅有有8 8个个单单元元(如如0003H0003H到到000BH000BH),用用来来存存放放中中断断发发生生后
107、后的的用用户户程程序序(一一般般称称中中断断服服务务程程序序)显显然然是是不不够够的的,我我们们将将中中断断服服务务程程序序放放在在程程序序存存储储器器的的其其他他“自自由由”空空间间,在在这这些些入入口口地地址址放放一一条条跳跳转转指指令令(如如:LJMP LJMP XXXXXXXX,其其中中“XXXXXXXX”就就是是实实际际中中断断服服务务程程序序的的起起始始地地址址或或标标号号),由这条跳转指令去由这条跳转指令去“找到找到”实际的中断服务程序。实际的中断服务程序。休骆忙恍盼去铅球月辣摈韶耍辨潍榷尤爆会刘撞脾祸涨躬玛疙鄂醉菜闭腿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础
108、知识 2.3.2 2.3.2 片内部数据存储器片内部数据存储器图图2-122-12是单片机内部数据存储器结构框图,对于是单片机内部数据存储器结构框图,对于8031/8051/8751/AT89C518031/8051/8751/AT89C51,内部有,内部有128 B128 B(00H00H7 FH7 FH)的数)的数据存储器,据存储器,80H80H地址以上的空间离散分布着地址以上的空间离散分布着SFRSFR(特殊功能寄(特殊功能寄存器),没有用户可用的存器),没有用户可用的RAMRAM;对于;对于8032/8052/8752/AT89C528032/8052/8752/AT89C52,内部有
109、,内部有256B256B数据存储器,数据存储器,00H00H7FH7FH的单元与的单元与80518051等相同,但在等相同,但在80H80H地址以上的空间则既有地址以上的空间则既有SFRSFR(采用寄存器或直接寻址),同时也有用户可用的(采用寄存器或直接寻址),同时也有用户可用的RAMRAM(采用寄存器间接寻址)。(采用寄存器间接寻址)。 图2-12 内部数据存储器结构夷栋蓖嵌匝凤拒魂驰霓娠哀涵慈升疑庐恩完胯姆意煽琶苹壳博希京怎景区片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1 1通用工作寄存器区通用工作寄存器区 地址地址00H00H1FH1FH的空间为通用工作寄存器区,
110、的空间为通用工作寄存器区,3232个单元又个单元又可以分成可以分成4 4个组,分别如下。个组,分别如下。(1 1)00H00H07H07H:工作寄存器:工作寄存器0 0组,符号为组,符号为R0R0R7R7。(2 2)08H08H0FH0FH:工作寄存器:工作寄存器1 1组,符号为组,符号为R0R0R7R7。(3 3)10H10H17H17H:工作寄存器:工作寄存器2 2组,符号为组,符号为R0R0R7R7。(4 4)18H18H1FH1FH:工作寄存器:工作寄存器3 3组,符号为组,符号为R0R0R7R7。上述上述4 4个组的寄存器符号都为个组的寄存器符号都为R0R0R7R7,也就是说,一个符
111、号,也就是说,一个符号(如(如R0R0)可以对应)可以对应4 4个单元(如个单元(如00H00H、08H08H、10H10H、18H18H),使),使用时是否会混淆呢?当然不会,因为在使用的任何时候只能用时是否会混淆呢?当然不会,因为在使用的任何时候只能选中一个组,到底使用哪个组,由特殊功能寄存器选中一个组,到底使用哪个组,由特殊功能寄存器PSWPSW来指来指定(见定(见SFRSFR部分介绍)。部分介绍)。社看履苯规灯挚柳晴蚜忍棵经妻彝缆声掺绽猿恭督张菠牲假几急劲牙心凌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2 2位寻址区位寻址区 什么是位寻址区呢?可以这么来理解,这
112、些区除了每个单什么是位寻址区呢?可以这么来理解,这些区除了每个单元都有确定的单元地址外,单元内的元都有确定的单元地址外,单元内的8 8位数的每个位置也有地址。位数的每个位置也有地址。要理解这点我们不妨打个比方:一个单元好像一间宿舍,单元要理解这点我们不妨打个比方:一个单元好像一间宿舍,单元的地址对应宿舍的房间号,而位则对应宿舍内的床,位地址正的地址对应宿舍的房间号,而位则对应宿舍内的床,位地址正好对应床铺号,位寻址区的地址如表好对应床铺号,位寻址区的地址如表2-22-2所示。所示。单元地址MSB 位 地 址 LSB2FH7F7E7D7C7B7A79782EH77767574737271702D
113、H6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H0706050403020100疥廷赫追艳从绩傈惭棒鹅逼沈镊谜抉善庄嗓惟拽无店踊球航坑纫土科抱位片机基础
114、知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 位寻址区比普通用户位寻址区比普通用户RAMRAM相比具有的优点是,它具有位相比具有的优点是,它具有位寻址功能,常常用来做标记,同时利用位操作功能可以使程寻址功能,常常用来做标记,同时利用位操作功能可以使程序更加简单,除了位寻址区有位地址之外,特殊功能寄存序更加简单,除了位寻址区有位地址之外,特殊功能寄存(SFRSFR)中地址末位是)中地址末位是0H0H或或8H8H的的1212个单元也有位地址。个单元也有位地址。在使用位地址时,容易与单元地址混淆,如地址在使用位地址时,容易与单元地址混淆,如地址“20H20H”,既可以理解成单元的地址,也
115、可以理解成既可以理解成单元的地址,也可以理解成24H24H单元中的一个单元中的一个位地址(见表位地址(见表2-22-2倒数第倒数第5 5行),具体是指单元地址还是位地行),具体是指单元地址还是位地址,除了看文字表述外,在指令中看指令的类型和含义就可址,除了看文字表述外,在指令中看指令的类型和含义就可知道了。知道了。桓吁掣饯析冤迸吼锥桔户锚纤兰擅馋纪眶狱妨哦盘裳寐秤离铜壮戊崔绚颗片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3 3用户用户RAMRAM区区 30H 30H7FH7FH之间是普通的用户之间是普通的用户RAMRAM。对于。对于8032/8052/8752/AT89C
116、528032/8052/8752/AT89C52还包括还包括80H80HFFHFFH空间,这里的单元空间,这里的单元没有通用寄存器中的符号(即具有寄存器寻址功能),也没没有通用寄存器中的符号(即具有寄存器寻址功能),也没有位寻址区中的位地址,每个单元只有一个特定的地址与之有位寻址区中的位地址,每个单元只有一个特定的地址与之相对应。需要强调的是,相对应。需要强调的是,30H30H7FH7FH可以采用直接寻址和寄存可以采用直接寻址和寄存器间接寻址,而器间接寻址,而80H80HFFHFFH只能通过寄存器间接寻址,不能采只能通过寄存器间接寻址,不能采用直接寻址。用直接寻址。选沃澳郑昌厂蘑禄支釜趾侗冒胆
117、矣南询溶枉姐颇丸谗绥斤髓鸦林奄拆刽堆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4 4特殊功能寄存器区特殊功能寄存器区 特殊功能寄存器简称特殊功能寄存器简称SFRSFR(Special Function Special Function RegisterRegister),在单片机中扮演着十分重要的角色。它们离散),在单片机中扮演着十分重要的角色。它们离散地分布在地址为地分布在地址为80H80HFFHFFH的空间中,特殊功能寄存器地址表的空间中,特殊功能寄存器地址表如表如表2-32-3所示,这里先介绍几个常用的特殊功能寄存器,其所示,这里先介绍几个常用的特殊功能寄存器,其
118、余的在相关章节应用时介绍。余的在相关章节应用时介绍。仑姑匡钮托抛徘抵媚停谚收苔袭严箩傅惶司较惠笨务比孪掘淡抒脏闪迸贩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 别揪催颖备痛土序澳柿地浓曝泞省脉岭乎匿检炔氧捞自谊歼甜程己我凋模片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1 1)累加器)累加器ACCACC(E0HE0H):累加器):累加器ACCACC(AccumulatorAccumulator)为)为8 8位位寄存器,助记符记作寄存器,助记符记作A A,是最常用、最繁忙的专用寄存器,是最常用、最繁忙的专用寄存器,所有的运算结果最终都放在所有的运算结果
119、最终都放在ACCACC中,许多功能的实现必须由中,许多功能的实现必须由A A来完成,如与外部来完成,如与外部RAMRAM的数据传送等。的数据传送等。(2 2)寄存器)寄存器B B(F0HF0H):寄存器):寄存器B B是一个专门为乘法、除法运是一个专门为乘法、除法运算设置的,在乘法、除法运算中由算设置的,在乘法、除法运算中由A A和和B B来完成,所以寄存器来完成,所以寄存器B B又称为乘法除法寄存器。又称为乘法除法寄存器。(3 3)程序状态寄存器)程序状态寄存器PSWPSW(D0HD0H):):PSWPSW(Program Status Program Status WordWord)用来存
120、放程序运行后的各种标志或状态,供程序查询)用来存放程序运行后的各种标志或状态,供程序查询或判断用。内部或判断用。内部8 8位的具体定义如下:位的具体定义如下:D7HD6HD5HD4HD3HD2HD1HD0HCyACF0RS1RS0OVF1P项矽蝉窘豺旺洼拴塞掉穗坟隧嵌蛛随隧粗踏狞馈瑞喘踢沁园挖浸砂构辑胶片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 CyCy(PSW.7PSW.7)进位标志位。进位标志位。CyCy是是PSWPSW中最常用的标志位。中最常用的标志位。其功能有二:一是存放算术运算的进位标志,在进行加或减其功能有二:一是存放算术运算的进位标志,在进行加或减运算时,如
121、果操作结果的最高位有进位或借位时,运算时,如果操作结果的最高位有进位或借位时,CyCy由硬件由硬件置置“1 1”,否则被清,否则被清“0 0”;二是在位操作中,作累加位使用。;二是在位操作中,作累加位使用。ACAC(PSW.6PSW.6)辅助进位标志位。在进行加减运算中,当辅助进位标志位。在进行加减运算中,当低低4 4位向高位向高4 4位进位或借位时,位进位或借位时,ACAC由硬件置由硬件置“1 1”,否则,否则ACAC位位被清被清“0 0”。在。在BCDBCD码调整中也要用到码调整中也要用到ACAC位状态。位状态。F0F0(PSW.5PSW.5)用户标志位。这是一个供用户定义的标志用户标志位
122、。这是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向。位,需要利用软件方法置位或复位,用以控制程序的转向。服壶奴恐掳锣妨谜带杉已哀矛沼细思世尸议低宦讨缔霞酸赌忙苦壮氯恶未片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 RS1RS1和和RS0RS0(PSW.4PSW.4,PSW.3PSW.3)寄存器组选择位。它们被用寄存器组选择位。它们被用于选择于选择CPUCPU当前使用的通用寄存器组号,其对应关系如表当前使用的通用寄存器组号,其对应关系如表2-42-4所示。所示。RS1 RS0寄 存 器 组片内RAM地址0 0第0组00H07H0 1第1组08H0FH
123、1 0第2组10H17H1 1第3组18H1FH表2-4 寄存器组选择表帽榜寺丝习把惺灶驾耀辰腺拯颠间既窍滁渗瓤纂强斌矣慧骋稗挡壳珍袱癌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 OVOV:做加法或减法时,由硬件置位或清零,以指示运算结果:做加法或减法时,由硬件置位或清零,以指示运算结果是否溢出。是否溢出。OV=1OV=1反映运算结果超出了累加器的数值范围(无反映运算结果超出了累加器的数值范围(无符号数的范围为符号数的范围为0 0255255,以补码形式表示一个有符号数的范,以补码形式表示一个有符号数的范围为围为-128-128+127+127)。进行无符号数的加法或减法
124、时,)。进行无符号数的加法或减法时,OVOV的值的值与进位位与进位位C C的值相同;进行有符号数的加法时,如最高位、的值相同;进行有符号数的加法时,如最高位、次高位之一有进位,或做减法时,如最高位、次高位之一有次高位之一有进位,或做减法时,如最高位、次高位之一有借位,借位,OVOV被置位,即被置位,即OVOV的值为最高位和次高位的异或的值为最高位和次高位的异或(C7C7C6C6)。)。P P(PSW.0PSW.0)奇偶标志位。表明累加器奇偶标志位。表明累加器A A中内容的奇偶性,中内容的奇偶性,如果如果A A中有奇数个中有奇数个“1 1”,则,则P P置置“1 1”,否则置,否则置“0 0”。
125、凡是。凡是改变累加器改变累加器A A中内容的指令均会影响中内容的指令均会影响P P标志位。此标志位对串标志位。此标志位对串行通信中的数据传输有重要的意义,在串行通信中常采用奇行通信中的数据传输有重要的意义,在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。偶校验的办法来校验数据传输的可靠性。邑站菌放币蹈屯痞促库乳厉觉堑棒代盐滤照防零猛朋脉因融式篓盯仗军刊片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4 4)数据指针)数据指针DPTRDPTR(83H83H、82H82H):数据指针是单片机中唯):数据指针是单片机中唯一一个用户可操作的一一个用户可操作的1616位寄存器
126、。编程时,位寄存器。编程时,DPTRDPTR既可以按既可以按1616位寄存器使用,也可以将两个位寄存器使用,也可以将两个8 8位寄存器分开使用,即:位寄存器分开使用,即:DPHDPH(83H83H)代表代表DPTRDPTR高位字节高位字节DPLDPL(82H82H)代表代表DPTRDPTR低位字节低位字节DPTRDPTR通常在访问外部数据存储器、外部通常在访问外部数据存储器、外部I/OI/O端口时作地址指端口时作地址指针使用(把地址赋值给针使用(把地址赋值给DPTRDPTR),也在程序存储器进行查表时),也在程序存储器进行查表时作基址,作基址,DPTRDPTR的寻址范围为的寻址范围为64 KB
127、64 KB(216216)。)。帘婪矮从隶瑚机肯玲经合灰芭击蠕滞祭甭碌枣唯汾痹械仁班歉峪吁港殉凿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5 5)堆栈指针)堆栈指针SPSP(81H81H):堆栈操作是在内存):堆栈操作是在内存RAMRAM区专门开区专门开辟出来的按照辟出来的按照“先进后出先进后出”原则进行数据存取的一种工作方原则进行数据存取的一种工作方式,主要用于子程序调用及返回、中断处理断点的保护及返式,主要用于子程序调用及返回、中断处理断点的保护及返回,它在完成子程序嵌套和多重中断处理中是必不可少的。回,它在完成子程序嵌套和多重中断处理中是必不可少的。为保证逐级正
128、确返回,进入栈区的为保证逐级正确返回,进入栈区的“断点断点”数据应遵循数据应遵循“先先进后出进后出”的原则。的原则。SPSP用来指示堆栈所处的位置,在进行操作用来指示堆栈所处的位置,在进行操作之前,先用指令给之前,先用指令给SPSP赋值,以规定栈区在赋值,以规定栈区在RAMRAM区的起始地址区的起始地址(栈底层)。当数据推入栈区后,(栈底层)。当数据推入栈区后,SPSP的值也自动随之变化。的值也自动随之变化。MCS-51MCS-51单片机系统复位后,单片机系统复位后,SPSP初始化为初始化为07H07H(在通用寄存器(在通用寄存器区区0 0组组R7R7),实际编程时,最好先将),实际编程时,最
129、好先将SPSP设置到设置到RAMRAM地址的高端,地址的高端,如对于如对于8031/8051/8751/AT89C518031/8051/8751/AT89C51等,设置在等,设置在60H60H以上。对于以上。对于8032/8052/8752/AT89C528032/8052/8752/AT89C52则设置成则设置成A0HA0H等。如等。如SPSP不在不在RAMRAM地址地址的高端,则很容易破坏用户放在的高端,则很容易破坏用户放在RAMRAM中的临时数据,程序调中的临时数据,程序调试时,这种错误相对比较隐蔽,不太容易被发现。试时,这种错误相对比较隐蔽,不太容易被发现。搽蛆豫钡宪坎监猛铅急思咬芦
130、抡盎哉短殴竹甲快欲意鹊犁标渔标匝秒窍赶片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 综上所述,片内数据存储器可以用表综上所述,片内数据存储器可以用表2-52-5表示。表示。表表2-5 MCS-51 2-5 MCS-51 片内片内RAMRAM结构结构地 址 范 围功能或名称80HFFHSFR、数据缓冲区30H7FH数据缓冲区20H2FH位寻址区18H1FH工作寄存器3组,R0R710H17H工作寄存器2组,R0R708H0FH工作寄存器1组,R0R700H07H工作寄存器0组,R0R7皖梆档腻湾象况哥酶倒宫噬凌缴疽遵瞧工赎炒咕卑之竣兼祭菌冠敦滥莹镜片机基础知识-E书联盟片机基
131、础知识-E书联盟第1章单片机基础知识 (6 6)程序计数器)程序计数器PCPC:PCPC(Program CounterProgram Counter)是一个)是一个1616位专位专用寄存器,可寻址范围是用寄存器,可寻址范围是0000H0000H0FFFFH0FFFFH,共,共64 KB64 KB。PCPC用于用于存放存放CPUCPU下一条要执行的指令地址,下一条要执行的指令地址,CPU CPU 要执行哪条指令时,要执行哪条指令时,就把该条指令所在的单元的地址送上地址总线。在顺序执行就把该条指令所在的单元的地址送上地址总线。在顺序执行程序中,当程序中,当PCPC的内容被送到地址总线后会自动加的
132、内容被送到地址总线后会自动加1 1,即,即(PC) (PC)+1(PC) (PC)+1,又指向,又指向CPU CPU 下一条要执行的指令地址。需下一条要执行的指令地址。需要注意的是用户无法通过指令改变要注意的是用户无法通过指令改变PCPC中的数值,也即中的数值,也即PCPC是不是不可操作的。可操作的。腕箕时炽而兵诚眉靠帝高妻钝舀锯集诸哩遗江守度钥培传滓宙爪架靴肌酵片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.4.1 2.4.1 时钟与时序时钟与时序1 1时钟时钟 单片机内部每个部件要想协调一致地工作,必须在统一单片机内部每个部件要想协调一致地工作,必须在统一口令口令时钟
133、信号的控制下工作。单片机工作所需要的时钟时钟信号的控制下工作。单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。图信号有两种产生方式,即内部时钟方式和外部时钟方式。图2-132-13(a a)是内部时钟方式:单片机内部有一个用于构成振)是内部时钟方式:单片机内部有一个用于构成振荡器的高增益反相放大器,引脚荡器的高增益反相放大器,引脚XTAL1XTAL1和和XTAL2XTAL2分别是此放大分别是此放大器的输入端和输出端,这个放大器与作为反馈元件的片外晶器的输入端和输出端,这个放大器与作为反馈元件的片外晶振一起构成自激振荡器。在该图中,电容振一起构成自激振荡器。在该图中,电容
134、C1C1和和C2C2取取30 pF30 pF左左右,晶体的振荡频率范围是右,晶体的振荡频率范围是1.2 MHz1.2 MHz12 MHz12 MHz(AT89C51/52AT89C51/52最高工作频率达最高工作频率达24 MHz24 MHz),晶体振荡频率高,则系统的时钟),晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。在通常应用情况下,频率也高,单片机运行速度也就快。在通常应用情况下,MCS-51MCS-51单片机使用振荡频率为单片机使用振荡频率为6 MHz6 MHz或或12 MHz12 MHz,在通信系统,在通信系统中则常用中则常用11.0592 MHz11.0592 MH
135、z,这样可使误差最小。,这样可使误差最小。 润指财俐座舟沫惋巢止涕返涯畏偶修横肖交蠕恕弃蚊瞥英脂报物绥类刹玲片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图2-132-13(b b)是外部时钟方式:时钟信号来自外部的振)是外部时钟方式:时钟信号来自外部的振荡电路(大多数情况是来自另外单片机的时钟信号,以保持荡电路(大多数情况是来自另外单片机的时钟信号,以保持多片多片CPUCPU工作同步),外接的工作同步),外接的TTLTTL门电路和上拉电阻对波形进门电路和上拉电阻对波形进行波整形。需要说明的是,对于行波整形。需要说明的是,对于CHMOSCHMOS的单片机(如的单片机(如8
136、0C5180C51),),外部时钟的引入方法有些不同,即信号引到外部时钟的引入方法有些不同,即信号引到XTAL1XTAL1,而,而XTAL2XTAL2则悬空(则悬空(NCNC)。)。(a)内部时钟方式 (b)外部时钟方式图2-13 时钟信号的产生方式肪绢尖渺品柒贩峦姓接结缺渣矩淫承企嗡租映寞旗抹墒基药痒鞠顺岳锦折片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2时序时序 每执行一条指令,每执行一条指令,CPUCPU的控制器就要发出一系列特定的的控制器就要发出一系列特定的控制信号,这些信号在时间上有严格的顺序,我们称之为时控制信号,这些信号在时间上有严格的顺序,我们称之为时序。
137、在此我们先来讲述几个与时钟信号有关的周期的概念。序。在此我们先来讲述几个与时钟信号有关的周期的概念。(1 1)时钟周期:所谓时钟周期,就是时钟频率的倒数,即)时钟周期:所谓时钟周期,就是时钟频率的倒数,即1/fosc1/fosc,如选用,如选用6 MHz6 MHz晶振时,时钟周期为晶振时,时钟周期为1/6 s1/6 s。(2 2)状态周期:是振荡频率经过片内二分频后的信号周期,)状态周期:是振荡频率经过片内二分频后的信号周期,也即等于也即等于2 2倍的时钟周期,表示为倍的时钟周期,表示为2/fosc2/fosc。(3 3)机器周期:是机器完成一个基本操作所需的时间,一)机器周期:是机器完成一个
138、基本操作所需的时间,一个机器周期由个机器周期由6 6个状态周期组成,从数量上等于个状态周期组成,从数量上等于12/fosc12/fosc。机。机器周期是非常重要的概念,在以后与时间有关的计算中,我器周期是非常重要的概念,在以后与时间有关的计算中,我们可以看到都是以机器周期为基本单位的。们可以看到都是以机器周期为基本单位的。(4 4)指令周期:是指机器完成一条指令所需的时间,由于)指令周期:是指机器完成一条指令所需的时间,由于指令功能的不同,完成所需要的时间也就不同,指令周期在指令功能的不同,完成所需要的时间也就不同,指令周期在1 14 4倍的机器周期内,如选用倍的机器周期内,如选用12 MHz
139、12 MHz晶振时,最快的指令只晶振时,最快的指令只需要需要1 s1 s时间(时间(12/fosc12/fosc)。)。锭稻漫茅十安淀曙谨基除瘦呕戊言臆给伤湛纸麻楞园爵脓叭叁疟老喜灌涵片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图2-142-14、图、图2-152-15给出了单片机在部分操作时的时序给出了单片机在部分操作时的时序。图2-14 MCS-51的取指/执行时序荒殖兜英筑每迄吐则鸿潘倍刻彼抨碴募烈赴叹二沦拇韧紊耗老秋炬锈肥冒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-15 读ROM时的时序这谢拇惰蝶窃灼滩艺霜尼俊速短劲靛募暑靠衷盒故豫
140、养壁眼团使检泅扁楷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.4.2 2.4.2 复位复位 单片机复位是使单片机复位是使CPUCPU和系统中的其他功能部件都处在一和系统中的其他功能部件都处在一个确定的初始状态,例如复位后个确定的初始状态,例如复位后PC=0000HPC=0000H,使单片机从,使单片机从0000H0000H单元取指令开始运行。单片机复位的条件是:必须使单元取指令开始运行。单片机复位的条件是:必须使RST/VPDRST/VPD(9 9脚)加上持续两个机器周期(即脚)加上持续两个机器周期(即2424个振荡周期)的高电个振荡周期)的高电平。复位包括上电复位(
141、相当于计算机的冷启动)、手动复平。复位包括上电复位(相当于计算机的冷启动)、手动复位(相当于计算机的热启动)和自动复位。在无人值守的系位(相当于计算机的热启动)和自动复位。在无人值守的系统中往往需要死机后的自动复位,即采用看门狗技术的自动统中往往需要死机后的自动复位,即采用看门狗技术的自动复位。在复位。在PICPIC等单片机中,芯片已经内置看门狗,等单片机中,芯片已经内置看门狗,MCS-51MCS-51则则需要外接看门狗专用芯片来实现自动复位。图需要外接看门狗专用芯片来实现自动复位。图2-162-16、图、图2-172-17分别给出了上述三种复位电路,对于看门狗复位电路,必须分别给出了上述三种
142、复位电路,对于看门狗复位电路,必须由软件配合才能正常工作。由软件配合才能正常工作。羊贬误嫌犬小蛮崔畏羚沸撰善呢庭淖椽去鞍懂屑百戚忻跳峨狠湛遇甭敬姓片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在在MCS-51MCS-51单片机系列中,单片机系列中,80318031、80328032内部没有程序存储内部没有程序存储器,器,8051/8751/AT89C518051/8751/AT89C51内部有内部有4K4K的程序存储器,的程序存储器,8052/8752/AT89C528052/8752/AT89C52内部有内部有8K8K的程序存储器。的程序存储器。(a)上电复位 (b)手动
143、复位图2-16 上电复位、手动复位煞勇溅韶郴蒸媚啤犬屿愉继逗订错馅锰志褪陛徽厅胎研兢蔚肌述允抚釉霉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-17 看门狗(自动)复位木坤婪函捶睦傲酮赁通仓煌夕拷果捂乘缕伸传钨畅睦灾霜筛信根兵沽漾园片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.3.1 2.3.1 片内程序存储器片内程序存储器复位后机器将从初始状态开始工作,各主要寄存器状态也被复位后机器将从初始状态开始工作,各主要寄存器状态也被复位,具体如下。复位,具体如下。其中:其中:* * 表示无关位。表示无关位。RAMRAM中的数据,若是上电复位则是随中的
144、数据,若是上电复位则是随机的,若是手动复位或看门狗复位,则保持不变机的,若是手动复位或看门狗复位,则保持不变。瞄拐伊萝跑妓鲁资额犬叫这褂句歧喉所儒沉寺伞吮崇嘛珠发借腰言剂宙搽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.5 2.5 单片机系统扩展单片机系统扩展 单片机本身已经包含了单片机本身已经包含了RAMRAM、ROMROM(部分(部分8031/80328031/8032没有)没有)和和I/OI/O端口等,因此从某种意义上说,单个芯片加上振荡、端口等,因此从某种意义上说,单个芯片加上振荡、复位就可以构成一个应用系统。然而在很多时候,仅有这些复位就可以构成一个应用系统。
145、然而在很多时候,仅有这些资源还不能满足实际要求,比如,在一个数据采集系统中,资源还不能满足实际要求,比如,在一个数据采集系统中,128 B128 B的的RAMRAM(除了寄存器实际能用的不到(除了寄存器实际能用的不到128 B128 B)是远远不)是远远不能满足要求的,这样,在单片机的外部需要另外构建新的能满足要求的,这样,在单片机的外部需要另外构建新的RAMRAM系统,所做的这些工作称为系统扩展。系统扩展一般包系统,所做的这些工作称为系统扩展。系统扩展一般包括括RAMRAM、ROMROM、I/OI/O的扩展,当选用的扩展,当选用AT89C51/52AT89C51/52等时,等时,ROMROM
146、的扩的扩展往往可以省却。展往往可以省却。 在一个实际的单片机应用系统中,其硬件部分可以包括在一个实际的单片机应用系统中,其硬件部分可以包括两大部分:基本部分(又称最小系统)和扩展部分。基本部两大部分:基本部分(又称最小系统)和扩展部分。基本部分是任何一个系统所必需的,电路结构上没多少变化;扩展分是任何一个系统所必需的,电路结构上没多少变化;扩展部分是根据具体要实现的功能来设计的,目前这方面的资料部分是根据具体要实现的功能来设计的,目前这方面的资料很多,只要掌握其基本原理和方法,结合现有资料,经过分很多,只要掌握其基本原理和方法,结合现有资料,经过分析、取舍、修改,硬件系统的设计也就变得简单了。
147、析、取舍、修改,硬件系统的设计也就变得简单了。鞠我欠快倒目戌认灿戊品瞒窜佑甭旷挣胸佐广颗莹盒订枕簧赘弓梆历金伍片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.5.1 2.5.1 基本部分的组成基本部分的组成图图2-18 2-18 最小系统最小系统(1 1)电源电路:因为单片机是比较复杂的数字系统,要求)电源电路:因为单片机是比较复杂的数字系统,要求电源电压稳定、纹波系数小,在有电机控制的系统中一定要电源电压稳定、纹波系数小,在有电机控制的系统中一定要消除电机工作时对电源的干扰,以免系统不稳,如电机单独消除电机工作时对电源的干扰,以免系统不稳,如电机单独供电。目前大多数单片
148、机工作电压都是供电。目前大多数单片机工作电压都是5 V5 V,所以电源部分,所以电源部分设计常用设计常用78057805稳压,并配以充足的滤波电容。(稳压,并配以充足的滤波电容。(2 2)复位电)复位电路:如前所述,根据不同场合及要求进行选择。路:如前所述,根据不同场合及要求进行选择。(3 3)晶振电路:如前所述,可以用内部时钟方式和外部时)晶振电路:如前所述,可以用内部时钟方式和外部时钟方式,一般独立系统都采用内部时钟方式。钟方式,一般独立系统都采用内部时钟方式。(4 4)带)带ROMROM的的CPUCPU:MCS-51MCS-51单片机系统常选用单片机系统常选用ATMELATMEL公司的产
149、公司的产品,如品,如AT89C51/52/2051AT89C51/52/2051等。等。基本部分的框图如图基本部分的框图如图2-182-18所示。所示。于况闸默互辣脚寿蚂堑锄葬枢黔募居痊杠蹈跌及调姚羡额糜涸锁蒜购聊恰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-18 最小系统蓑频筏碌蔬憎玄掩愈肘蓄户梁丈绑明骗过谜廉竞淤砷淬役肯丽夫窍霄长逢片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.5.2 2.5.2 系统的扩展系统的扩展 当单片机自身的硬件资源不够用时,必须采用扩展的办当单片机自身的硬件资源不够用时,必须采用扩展的办法来满足实际要求,系统扩展
150、的任务实际是用三组总线(数法来满足实际要求,系统扩展的任务实际是用三组总线(数据总线、地址总线、控制总线)将外部的芯片或电路与据总线、地址总线、控制总线)将外部的芯片或电路与CPUCPU连起来构成一个整体,在程序的控制下完成连起来构成一个整体,在程序的控制下完成CPUCPU与外部芯片与外部芯片或电路之间的数据传送、信息的获取和行为控制等。或电路之间的数据传送、信息的获取和行为控制等。二具勿纯念揭蔗吝刀破摹霓彰俊弦本畅淋浪眨氓字七怎铂悟渺话免团连泣片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 系统扩展主要依靠系统扩展主要依靠CPUCPU的的P0P0、P1P1、P2P2、P3P
151、3及其他控制线,及其他控制线,具体方法如下。具体方法如下。(1 1)数据总线的连接方法:)数据总线的连接方法:CPU RAM ROM I/OCPU RAM ROM I/O P0.0 P0.0P0.7 P0.7 对应的数据线对应的数据线(2 2)地址总线的连接:分为低)地址总线的连接:分为低8 8位和高位和高8 8位(高位(高8 8位很多时候位很多时候没有全部用掉)。没有全部用掉)。锁存器锁存器 CPU RAM ROM CPU RAM ROM 低低8 8位位 P0.0 P0.0P0.7 P0.7 对应的地址对应的地址低低8 8位线位线高高8 8位位 P2.0 P2.02.7 2.7 对应的地址对
152、应的地址高高8 8位线位线息埋红光挥铀蚌澈孪辙伪押泄点驼悄谩性甫筛缨曲燥敦忍怔鄂岗繁猖视皱片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3 3)控制线的连接方法:)控制线的连接方法: CPU RAM ROM CPU RAM ROM ALE ALE 锁存器的控制脚锁存器的控制脚注:注:I/OI/O的地址线和控制线在后面的的地址线和控制线在后面的I/OI/O扩展例子中说明。扩展例子中说明。上面的规则可以用图上面的规则可以用图2-192-19来表示:来表示:图2-19 系统扩展示意图盅症秤才意镶囚军凑彻绍肛洗兢拜抢瘩酌耶猫烙惩笛敖楔荧菱晨济阁叮看片机基础知识-E书联盟片机基础知
153、识-E书联盟第1章单片机基础知识 图图2-20 RAM 61162-20 RAM 6116管脚图管脚图2 2RAMRAM扩展扩展 在很多场合,芯片内部的在很多场合,芯片内部的RAMRAM往往是不够用的,所以扩往往是不够用的,所以扩展展RAMRAM是我们常常要做的工作,下面介绍两个例子。是我们常常要做的工作,下面介绍两个例子。【例【例2-12-1】61166116的扩展:在的扩展:在RAMRAM、ROMROM的型号中隐含了重要的的型号中隐含了重要的信息,后面二位或三位除以信息,后面二位或三位除以8 8就可得到它们的容量(单位是就可得到它们的容量(单位是KBKB),如),如RAM 6116RAM
154、6116,16/8KB = 2 KB =216/8KB = 2 KB =2210 B = 211 B210 B = 211 B,同时可以知道共有同时可以知道共有1111(从(从211 B211 B而知)根地址线,可以记作而知)根地址线,可以记作A0A0、A1A1、A10A10。图。图2-202-20是是61166116的管脚图,的管脚图,I/OnI/On是数据总是数据总线。根据上述扩展思想,可以画出线。根据上述扩展思想,可以画出RAM 6116RAM 6116与与CPUCPU的连接图,的连接图,如图如图2-212-21所示。所示。 图2-20 RAM 6116管脚图词清育贷并药佩禄乏棍瓮悠芜蚕
155、遮阅遏踞约理左踩癣献曾双咸罗挪值再笔片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-21 RAM 6116扩展图赐辙块觉汕疹牢歧游渠噪氢菱跺汲幽于济钞翻齐屡能功啥缴挨目臃羔溶撬片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 芯片扩展完后,我们用地址表来分析芯片扩展完后,我们用地址表来分析RAM 6116RAM 6116存储器的存储器的地址,地址表的第地址,地址表的第1 1行是行是CPUCPU提供的所有地址线:高提供的所有地址线:高8 8位地址位地址(P2P2口提供)和低口提供)和低8 8位地址(位地址(P0P0口提供);第口提供);第2 2行是行是RA
156、M 6116RAM 6116对应的地址线连接情况,其中没连的用对应的地址线连接情况,其中没连的用“x x”表示;第表示;第3 3行是行是地址线变量取最小值(全部取地址线变量取最小值(全部取“0 0”)的地址,也就是初始)的地址,也就是初始地址;第地址;第4 4行是地址线变量取最大值(全部取行是地址线变量取最大值(全部取“1 1”)的地址,)的地址,即末地址。由于即末地址。由于“x x”代表无关项,在取值时可以取代表无关项,在取值时可以取“0 0”,也可以取也可以取“1 1”,所以理论上,所以理论上RAM 6116RAM 6116的地址是非常多的,的地址是非常多的,但尽管如此,在取值时,水平方向
157、的但尽管如此,在取值时,水平方向的“x x”可以取不同值,可以取不同值,而垂直方向必须取一致的值。为便于计算,常常将而垂直方向必须取一致的值。为便于计算,常常将“x x”全全部取部取“0 0”或者全部取或者全部取“1 1”。在表。在表2-62-6中,我们将中,我们将“x x”全部全部取取“1 1”,形成的地址范围是:,形成的地址范围是:7800H7800H7FFFH7FFFH。恼枕烦舒惶连匠冯漏穿彝抉除吗匝镍浮愈倘由瀑翟绕邹踩敢奈扦阀统皖虚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 表表2-6 6116地址表地址表P2.7P2.6P2.5P2.4P2.3P2.2P2.1P
158、2.0P0.7P0.6P0.5P0.4P0. 3P0.2P0.1P0.0x x x xA10A9A8A7A6A5A4A3A2A1A00x x x x 0 0 0 0 0 0 0 0 0 0 00 x x x x 1 1 1 1 1 1 1 1 1 1 1在小上面例子中,是芯片的片选端,对多数芯片是低电在小上面例子中,是芯片的片选端,对多数芯片是低电平选中(看符号上有没有一横,有就说明是低电平选中)平选中(看符号上有没有一横,有就说明是低电平选中)。在系统扩展过程中,片选端的处理是相对较难的,我。在系统扩展过程中,片选端的处理是相对较难的,我们可以按照下面的方法处理:们可以按照下面的方法处理:窒
159、钥嫉偿羔殴巾横祖舷键厘里诬肃随厦泉眠筐桨硷绽棠啸跟笨曼巢酝滤居片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1 1)同种芯片()同种芯片(RAMRAM与与I/OI/O属于同种)只有单个时,片选端属于同种)只有单个时,片选端直接接地或者接直接接地或者接P2P2口多余的地址线。口多余的地址线。(2 2)同种芯片()同种芯片(RAMRAM与与I/OI/O属于同种)有多个时,片选端分属于同种)有多个时,片选端分别接到别接到P2P2口多余的地址线,这种方法称为口多余的地址线,这种方法称为“线选法线选法”,也可,也可以用剩余以用剩余P2P2口的线进行译码后分别接到芯片片选端,即口的线
160、进行译码后分别接到芯片片选端,即“采采用译码法用译码法”。(3 3)不同种()不同种(RAMRAM与与ROMROM属于不同种)芯片的片选信号可以属于不同种)芯片的片选信号可以共用。共用。【例【例2-22-2】两片】两片62646264的扩展:根据以上所述,的扩展:根据以上所述,RAM 6264RAM 6264的容的容量为量为64/8KB = 8KB = 213 B64/8KB = 8KB = 213 B,地址线为,地址线为A12A12、A13A13、A0A0,其管脚如图其管脚如图2-222-22所示。按照扩展基本思想,两片所示。按照扩展基本思想,两片62646264与与CPUCPU的连接图如图
161、的连接图如图2-232-23所示。所示。62646264(1 1)、()、(2 2)片选端)片选端CS2CS2都直都直接接接接VCCVCC(+5 V+5 V),),62646264(1 1)的接空余地址线)的接空余地址线P2.7P2.7,62646264(2 2)的接空余地址线)的接空余地址线P2.6P2.6,采用的是线选法。从图中,采用的是线选法。从图中可以分别列出它们的地址表格,如表可以分别列出它们的地址表格,如表2-72-7、表、表2-82-8所示。所示。阻名腐防砾董首熄蹬演苗趟榆敖熙矿虚爷溢掇因农独佳里涧茹捕长藏掉切片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2
162、-22 RAM 6264管脚图萍减誊概贡馅岗徽夹憎啪韩疼差手柠护膨扒祥塞阉运毕脱很总址贝珐瞧踢片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-23 两片RAM 6264扩展图曙及踩碰汰钾渺饭钦嘲俭舟臣鸯糕反喊惜雕谰至振久味傍芒荚倦意抽擎刷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 表表2-7 6264(1)地址表)地址表表表2-8 6264(2)地址表)地址表摘骄艾垫甸氟斋轰炮霞副鱼玄干屋潭述展笔隔戌艺厩宴聊过制戌杠膜遭窒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 注意:在线选法计算地址的时候,尽管对于注意:在线选法计算地址的
163、时候,尽管对于62646264(1 1)来说,)来说,P2.6P2.6是与其无关的,但必须恒取是与其无关的,但必须恒取“1 1”,见表,见表2-72-7,因为在选,因为在选中芯片中芯片62646264(1 1)时,)时,62646264(2 2)不能被选中,否则造成地址)不能被选中,否则造成地址重叠,读、写时数据出错。同样地,在表重叠,读、写时数据出错。同样地,在表2-82-8中,中,P2.7P2.7必须必须恒取恒取“1 1”。所以:所以:芯片芯片62646264(1 1)的地址范围为:)的地址范围为:7800H7800H7FFFH7FFFH(x x取取“1 1”)。)。芯片芯片6264626
164、4(2 2)的地址范围为:)的地址范围为:B800HB800HBFFFHBFFFH(x x取取“1 1”)。)。线选法的优点是不用增加额外器件,电路简单,但芯片之间线选法的优点是不用增加额外器件,电路简单,但芯片之间地址可能不连续(如例地址可能不连续(如例2-22-2,地址不连续会大大增加程序的,地址不连续会大大增加程序的难度),存储空间也得不到充分利用。难度),存储空间也得不到充分利用。秉护服拴栗檬伎九堤啄梨汗潮睬瞻知夏哪挫剖水铅悦馏滑铀讨辰蹋闸蘸斗片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3 3ROMROM扩展扩展 由于目前的由于目前的CPU AT89C51/52C
165、PU AT89C51/52内部已经有了内部已经有了4KB/8KB4KB/8KB的程序的程序存储器,所以实际应用时,存储器,所以实际应用时,ROMROM的扩展很少碰到了,下面举的扩展很少碰到了,下面举一个例子,主要为了说明片选端的一个例子,主要为了说明片选端的“译码法译码法”用法和地址计用法和地址计算,如图算,如图2-242-24所示。所示。图2-24 两片ROM 2764译码法扩展图张束悬豪栽坦兜惧瘫奠谎康淮拴以萌卓笛萄步艺漂绎滴说婚德智兹少徊侣片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 芯片芯片27642764(1 1)的片选来自,片选为)的片选来自,片选为“0 0”时
166、必须满足时必须满足“P2.7 P2.6 P2.5P2.7 P2.6 P2.5”= =“0 0 00 0 0”(参考有关(参考有关74LS13874LS138的功的功能表),所以地址表如表能表),所以地址表如表2-92-9所示。所示。 表2-9 2764(1)地址表所以:芯片2764(1)的地址为:0000H1FFFH。芯片2764(2)的片选来自,片选为“0”时必须满足“P2.7 P2.6 P2.5”=“0 0 1”(参考有关74LS138的功能表),所以地址表如表2-10所示。不喉筹按搭皱址绞渤擂逛慧夸殴姨斑吵匙瓶筐珐示慷伶创弄雾蠢稗烂艰捷片机基础知识-E书联盟片机基础知识-E书联盟第1章单
167、片机基础知识 表2-10 2764(2)地址表所以芯片所以芯片27642764(2 2)的地址为:)的地址为:2000H2000H3FFFH3FFFH。译码法硬件线路稍复杂,但可以充分利用地址空间,使地址译码法硬件线路稍复杂,但可以充分利用地址空间,使地址能够连续,采用全译码(指没有空余的地址线,如例能够连续,采用全译码(指没有空余的地址线,如例2-22-2)还可避免地址重叠现象,当然部分译码因为还有其他线未参还可避免地址重叠现象,当然部分译码因为还有其他线未参加译码,也会产生地址重叠现象。加译码,也会产生地址重叠现象。屑砷佃渔现掳阐汞魂多增庸宠泅裕派微墨沁橇检即菌互拦逞冗王磕伺符谚片机基础知
168、识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4 4I/OI/O端口扩展端口扩展 单片机本身有单片机本身有P0P0、P1P1、P2P2、P3P3四个四个I/OI/O端口,但在上面端口,但在上面RAMRAM、ROMROM的扩展中发现,的扩展中发现,P0P0口已经全部作为数据线口已经全部作为数据线/ /地址低地址低8 8位,位,P2P2口做地址的高位使用了,口做地址的高位使用了,P3P3口也用掉了部分线口也用掉了部分线 (、(、),所以在有),所以在有RAMRAM等扩展的系统中,真正的等扩展的系统中,真正的I/OI/O线已经所剩无线已经所剩无几了,因此几了,因此I/OI/O扩展也几乎成了
169、必做的工作。扩展也几乎成了必做的工作。 在实际在实际I/OI/O扩展中,根据系统要求,可以将扩展中,根据系统要求,可以将I/OI/O扩展分为扩展分为简单数字电路芯片(简单数字电路芯片(TTLTTL、CMOSCMOS锁存器、缓冲器电路)的锁存器、缓冲器电路)的I/OI/O扩展和相对复杂的可编程芯片(扩展和相对复杂的可编程芯片(82558255、81558155)的扩展,另外)的扩展,另外一种是比较特殊的利用单片机串行口的扩展方法,将在第一种是比较特殊的利用单片机串行口的扩展方法,将在第6 6章介绍。章介绍。 除了用串行口扩展除了用串行口扩展I/OI/O外,其余两种外,其余两种I/OI/O扩展都将
170、占用外扩展都将占用外部数据存储器的地址,因为它们与外部部数据存储器的地址,因为它们与外部RAMRAM使用相同的地址使用相同的地址线和相同的读、写控制线。线和相同的读、写控制线。挨坤卢期讽浆柔原糜幂眨歇毁檀壮堵钟房欧墙宋检稼讳抡赞貌瑶附务缆升片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1 1)用简单数字电路芯片的)用简单数字电路芯片的I/OI/O扩展扩展可以作为可以作为I/OI/O扩展的常见扩展的常见TTLTTL芯片有芯片有74LS37374LS373、74LS27774LS277、74LS24474LS244、74LS57474LS574等。在实际应用中,根据芯片特点等
171、。在实际应用中,根据芯片特点及输入、输出量的特征,应选择合适的扩展芯片。下及输入、输出量的特征,应选择合适的扩展芯片。下面给出两例简单面给出两例简单I/OI/O的扩展。的扩展。【例【例2-32-3】如图】如图2-252-25所示是用所示是用74LS57474LS574设计的输出接口,设计的输出接口,数据线由数据线由P0P0口提供,地址线由口提供,地址线由P2.7P2.7引出,与信号经过引出,与信号经过或门后作为或门后作为74LS57474LS574的的CLKCLK信号。此时地址的计算仅跟信号。此时地址的计算仅跟P2.7P2.7有关,空余线取有关,空余线取“1 1”时端口地址为时端口地址为7FF
172、FH7FFFH。漱锭秘歉詹仗挞相件腿夹娱坛捶面永依稻碌阁洲碳姑怀魔徘却水茨窘寐未片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图2-25 用74LS574扩展的输出口悔让油供向螺胸帕增糖肺梯漱法吟磊酉踪西鸡阉社韦揭眩恐陕绊欲腆函跪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例2-42-4】如图】如图2-262-26所示是用所示是用74LS24474LS244和和74LS27374LS273扩展的输入、扩展的输入、输出口,输出口,74LS24474LS244和和74LS27374LS273都是在都是在P2.0P2.0为为0 0时被选通的,所时被选通
173、的,所以二者的口地址都为以二者的口地址都为FEFFHFEFFH,由于控制线的不同,由于控制线的不同,74LS27374LS273只只在写的时候工作,在写的时候工作,74LS24474LS244则在读的时候工作。则在读的时候工作。图2-26 74LS273、74LS244扩展吗徒酋驱寝歧尹于蔬癸念钟貌碗甘镶搁祸护争燎坐虾主唱官郧杰掖亚峨檄片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 从例从例2-32-3和例和例2-42-4可发现简单可发现简单I/OI/O扩展的基本规律:数据线的扩展的基本规律:数据线的连接方法与连接方法与RAMRAM、ROMROM一样;由于简单一样;由于简单I
174、/OI/O芯片没有专门的地芯片没有专门的地址线,但没有地址线就不等于不要地址(实际上,没有地址址线,但没有地址线就不等于不要地址(实际上,没有地址会造成任何向外部会造成任何向外部RAMRAM的读、写都会影响该端口)所以我们的读、写都会影响该端口)所以我们常常将控制线(、)与地址线常常将控制线(、)与地址线“混合混合”后接到后接到I/OI/O芯片的控芯片的控制端,使它具有相应的地址,如例制端,使它具有相应的地址,如例2-32-3中的中的“或门或门”就是起就是起到了这种混合作用。至于是用什么门电路,取决于控制信号到了这种混合作用。至于是用什么门电路,取决于控制信号和门电路本身的工作的逻辑关系。和门
175、电路本身的工作的逻辑关系。(2 2)可编程芯片的)可编程芯片的I/OI/O扩展扩展常用的可编程常用的可编程I/OI/O扩展芯片有并行接口扩展芯片有并行接口82558255、多功能接口、多功能接口81558155等,关于它们的扩展及使用请参考第等,关于它们的扩展及使用请参考第7 7章章“常用接口及常用接口及应用实例应用实例”中的介绍。中的介绍。域农她稼图揩瑶痛诡太覆响擂报敢限神带万供羡臆岸象纶防侧遭虫剩辗来片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2.6 2.6 习习 题题1 1AT89C51AT89C51有哪些控制脚,各有什么作用?有哪些控制脚,各有什么作用?2 2AT
176、89C51 ROMAT89C51 ROM空间中,空间中,0000H0000H0023H0023H单元有什么作用?单元有什么作用?3 3简述简述P0P0、P1P1、P2P2、P3P3的功能和使用要求。的功能和使用要求。4 4简述简述P3P3口的第二功能。口的第二功能。5 5简述单片机内部数据存储器的结构。简述单片机内部数据存储器的结构。80H80H以上地址的单元以上地址的单元是什么?如何使用?是什么?如何使用?6 6通用工作寄存器区共通用工作寄存器区共3232个单元,而寄存器名(符号)只个单元,而寄存器名(符号)只有有8 8个,请问使用时如何将它们对应起来?个,请问使用时如何将它们对应起来?7
177、7什么是位地址?字节地址什么是位地址?字节地址20H20H与位地址与位地址20H20H有什么区别?有什么区别?8 8简述特殊功能寄存器简述特殊功能寄存器A A、B B的作用。的作用。逆谬屿寐芹劫集铣爷蓉臼曲涨隐复翟皋春晚综淀褪娇盔滞峨褥姚兑参治杜片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 9 9特殊功能寄存器特殊功能寄存器PSWPSW有什么用?简述内部常用位的含义。有什么用?简述内部常用位的含义。1010什么是堆栈?什么是堆栈指针?编程时一般如何处理什么是堆栈?什么是堆栈指针?编程时一般如何处理SPSP寄存器?寄存器?1111什么是什么是DPTRDPTR寄存器,在访问外部
178、寄存器,在访问外部RAMRAM时,时,DPTRDPTR内部装的内部装的是什么?是什么?1212单片机中的单片机中的PCPC是指什么?其内部数据是什么?是指什么?其内部数据是什么?1313什么是时钟周期、机器周期和指令周期?如晶振用什么是时钟周期、机器周期和指令周期?如晶振用12 12 MHzMHz,请计算时钟周期、机器周期。,请计算时钟周期、机器周期。1414MCS-51MCS-51单片机时钟有哪几种接法?单片机时钟有哪几种接法?1515什么是时序?什么是时序?藐哭毖力耳掠汰荣摈辨绷涨笑吹涡剔事终斟邮矮蛇娇荆运沥寥疆尹尹慷嫁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 16
179、16MCS-51MCS-51单片机系统中复位电路有哪几种?单片机系统中复位电路有哪几种?1717什么是最小系统?什么是系统扩展?扩展的基本方法是什么是最小系统?什么是系统扩展?扩展的基本方法是什么?什么?1818扩展时如何处理片选端?扩展时如何处理片选端?1919分别用分别用“线选线选”和和“译码译码”法设计由两片法设计由两片61166116组成的组成的RAMRAM扩展系统,要求画出线路图并列表计算出相应的地址空扩展系统,要求画出线路图并列表计算出相应的地址空间。间。2020已知某芯片扩展时用的地址线是已知某芯片扩展时用的地址线是A0A0、A1A1、A11A11,其,其片选(片选(CSCS)用
180、)用“P2.7+P2.6P2.7+P2.6”,则该芯片的地址空间为多少,则该芯片的地址空间为多少?2121I/OI/O的扩展可以分为哪两种?简单的扩展可以分为哪两种?简单I/OI/O扩展时,其控制线扩展时,其控制线和地址线的处理与和地址线的处理与RAMRAM有什么不同?分别举例画出简单有什么不同?分别举例画出简单I/OI/O的的输出和输入扩展图。输出和输入扩展图。轨伊伐式柏跳坦参拴冀侧阜邦厅吟标悬烙立羊袭榜糖镭阅痪铡侵溶铰结联片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.1 3.1 指令系统的基本概念指令系统的基本概念 单片机所有指令的集合称为该单片机的指令系统,单片机
181、所有指令的集合称为该单片机的指令系统,不同种类的单片机具有不同的指令系统,本书主要介不同种类的单片机具有不同的指令系统,本书主要介绍目前最流行的绍目前最流行的MCS-51单片机的指令系统及其应用。单片机的指令系统及其应用。砒电蜒编故镊柿刨阔蚕慑异攫枕宋莫迢缄贿推劫蚕绵怨冲侄声马部傀堑足片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.1.1 3.1.1 指令的基本格式指令的基本格式 MCS-51单片机指令主要由标号、操作码、操作数和注释单片机指令主要由标号、操作码、操作数和注释组成。比如,组成。比如,LOOP:MOV R0, #20H ;将数据将数据20H送到寄存器送到寄存
182、器R0标号标号操作码操作码 操作数操作数注释注释下面我们来了解一下各组成部分的功能特点。下面我们来了解一下各组成部分的功能特点。(1)LOOP(标号):指明该指令在(标号):指明该指令在ROM的起始存储地址。的起始存储地址。 标号可有可无,一般起转移指令的标志作用。标号可有可无,一般起转移指令的标志作用。 由不超过由不超过8位的数字和英文字母组成,第一字符必须为英位的数字和英文字母组成,第一字符必须为英文字母,同时,不能与指令系统中的规定字符和符号相冲突,文字母,同时,不能与指令系统中的规定字符和符号相冲突,如如R0、MOV等。等。 后面必须跟冒号(后面必须跟冒号(:)。)。郧哥辫兼巨叮事尖锗
183、铁偶麻料帖荤协瓤签掳咐赖尹仙朵搬馋氓港帐荚猜邻片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)MOV(操作码):指明执行什么性质和类型的操作。(操作码):指明执行什么性质和类型的操作。不同的操作码具有不同的操作功能,比如不同的操作码具有不同的操作功能,比如MOV执行的是数执行的是数据传送的操作,而据传送的操作,而ADD执行的是加法的操作。执行的是加法的操作。(3)R0, #20H(操作数):指明操作数的本身或者是操作数(操作数):指明操作数的本身或者是操作数所在的地址。所在的地址。 操作数分为目的操作数操作数分为目的操作数R0和源操作数(和源操作数(#20H)。源操作)
184、。源操作数存放的是参加操作的原始数据或地址,目的操作数存放的数存放的是参加操作的原始数据或地址,目的操作数存放的是参加操作的另外一个原始数据或地址,操作结束后,结果是参加操作的另外一个原始数据或地址,操作结束后,结果存放于目的操作数。存放于目的操作数。 源操作数可以是数据(源操作数可以是数据(#20H),也可以是存放数据的地址),也可以是存放数据的地址(20H)或寄存器()或寄存器(R0)。)。 目的操作数只能是存放数据的地址或寄存器。目的操作数只能是存放数据的地址或寄存器。 操作数个数可以是操作数个数可以是0个(如个(如NOP)、)、1个(如个(如INC A)、)、2个(如个(如MOV A,
185、 #40H)、也可以是)、也可以是3个(如个(如CJNE A, #40H, LOOP),各个操作数之间要用逗号(),各个操作数之间要用逗号(,)隔开。)隔开。眩览隙搁僚啪料注烬仲琐芍贷叮亦害胃佃绊贞录陋啮肥录抚筐争狂鬼渤蚤片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)注释:指明该指令或程序段的功能。)注释:指明该指令或程序段的功能。 注释可有可无,但必要的程序注释有助于提高程序的可读注释可有可无,但必要的程序注释有助于提高程序的可读性,方便程序的修改。常常会发生这样的事,时间久了,自性,方便程序的修改。常常会发生这样的事,时间久了,自己写的程序自己也看不懂了,建议养成
186、加注释的习惯。己写的程序自己也看不懂了,建议养成加注释的习惯。 在注释前面必须加在注释前面必须加“;”。赐挪镜耙北蹬猎渤箱浦麓树疾刊乾坦库驻峻卜会钡逃蔑肖甭闪击雄冶佯征片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.1.2 MCS-513.1.2 MCS-51指令系统中的常用符号说明指令系统中的常用符号说明在介绍指令前,先把指令中使用的一些代表符号作简单说明:在介绍指令前,先把指令中使用的一些代表符号作简单说明:Rn当前选中的寄存器区中的当前选中的寄存器区中的8个工作寄存器个工作寄存器R0R7(n=07)。)。Ri当前选中的寄存器区中的当前选中的寄存器区中的2个工作寄存器
187、个工作寄存器R0、R1(i=0、1)。)。direct8位的内部数据存储器单元中的地址。位的内部数据存储器单元中的地址。#data包含在指令中的包含在指令中的8位常数。位常数。#data16包含在指令中的包含在指令中的16位常数。位常数。addr1616位目的地址。位目的地址。addr1111位目的地址。位目的地址。rel8位带符号的偏移字节,简称偏移量,范围为位带符号的偏移字节,简称偏移量,范围为+127-128。DPTR数据指针,可用作数据指针,可用作16位地址寄存器。位地址寄存器。bit内部内部RAM或专用寄存器中的直接寻址位。或专用寄存器中的直接寻址位。麦扮啤殃衫浑匪戈嗽皆陈丧喀规呆渴
188、瞳皖喷弘饭碳残土咯眉门勋国拘为疏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 A累加器。累加器。B专用寄存器,在执行乘法和除法前用于存放乘数和除专用寄存器,在执行乘法和除法前用于存放乘数和除数。执行后存放乘法的高数。执行后存放乘法的高8位结果和除法的余数。位结果和除法的余数。C进位标志,可以作为进位位或布尔处理机中的位累加进位标志,可以作为进位位或布尔处理机中的位累加器。器。间址寄存器或基址寄存器的前缀,如间址寄存器或基址寄存器的前缀,如Ri、A+DPTR。/ 位操作数的前缀,表示对该位操作数取反,如位操作数的前缀,表示对该位操作数取反,如/bit。()片内片内RAM的直接
189、地址中的内容。的直接地址中的内容。(Rn)由某寄存器间接寻址的单元中的内容。由某寄存器间接寻址的单元中的内容。箭头左边的内容被箭头右边的内容所代替。箭头左边的内容被箭头右边的内容所代替。说明:这些符号只是为了起说明指示的作用,在具体写指令说明:这些符号只是为了起说明指示的作用,在具体写指令的时候,必须用实际含义的内容来替代。如的时候,必须用实际含义的内容来替代。如direct,在写指,在写指令的时候,可以用令的时候,可以用20H之类的地址码来代替。之类的地址码来代替。疹抱唐郭辉撅闪尊剪剑开致很亲胯豹曲椒锣伞言谤薄卖咨敷诬攫逾惜羞蒲片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识
190、 3.1.3 3.1.3 MCS-51MCS-51指令系统的分类指令系统的分类MCS-51指令系统共集成了指令系统共集成了111条指令,按照不同标准的分类条指令,按照不同标准的分类如下。如下。(1)按指令长度来分类,可分为)按指令长度来分类,可分为 单字节指令:在单字节指令:在ROM中所占有的空间为一个存储单元。中所占有的空间为一个存储单元。 双字节指令:在双字节指令:在ROM中所占有的空间为两个存储单元。中所占有的空间为两个存储单元。 三字节指令:在三字节指令:在ROM中所占有的空间为三个存储单元。中所占有的空间为三个存储单元。(2)按指令执行所需的时间来分类,可分为)按指令执行所需的时间来
191、分类,可分为 单周期指令:执行该指令需要一个机器周期时间(如单周期指令:执行该指令需要一个机器周期时间(如fosc = 12 MHz,T机机 = 1s)。)。 双周期指令:执行该指令需要两个机器周期时间。双周期指令:执行该指令需要两个机器周期时间。 四周期指令:执行该指令需要四个机器周期时间。四周期指令:执行该指令需要四个机器周期时间。墓光版赁估否场己夺萨钳禁切捐又凡孜狸伍佣耙热列悟垦蝇槽彰院聪苦梧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)按指令的功能分类,如表3-1所示。 表3-1 指令分类表类 别数 目功 能数据传送类29条执行内外RAM、ROM之间的数据传送
192、算术运算类24条执行数据的加减乘除运算逻辑运算类24条执行与、或、非、异或等逻辑操作位操作类12条执行位的传送和逻辑操作控制转移类22条执行无条件和有条件的转移、调用和返回操作叠抑怯钠厦驭坯末拖柯失疵钎蚁势衣晰核沙伙靶结腆瑶微昔蝗皑蚁籽省推片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.1.4 寻址方式寻址方式 所谓寻址方式,就是寻找操作数(一般是指源操作数)所谓寻址方式,就是寻找操作数(一般是指源操作数)地址的方式,在用汇编语言编程时,数据的存放、传送、运地址的方式,在用汇编语言编程时,数据的存放、传送、运算都要通过指令来完成。编程者必须自始至终都十分清楚操算都要通过指
193、令来完成。编程者必须自始至终都十分清楚操作数的位置,以及如何将它们传送到适当的寄存器去参与运作数的位置,以及如何将它们传送到适当的寄存器去参与运算。每一种计算机都具有多种寻址方式。寻址方式的多少是算。每一种计算机都具有多种寻址方式。寻址方式的多少是反映指令系统优劣的主要指标之一。反映指令系统优劣的主要指标之一。MCS-51单片机指令系单片机指令系统有统有7种寻址方式:立即寻址、直接寻址、寄存器寻址、寄种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。存器间接寻址、变址寻址、相对寻址和位寻址。脑蛔失猎冈奖蜕抒蛤娃甥怖詹钳告丁削栋枪结拼随差绞鸦届骇握名赏眉酵片
194、机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1)立即寻址)立即寻址指将操作数直接写在指令中,例如:指将操作数直接写在指令中,例如:MOV A, #12H;将立即数;将立即数12H送入累加器送入累加器A中,中,12HA,如图如图3-1所示。所示。MOV 30H, #31H;将立即数;将立即数31H送入内送入内RAM 30H单元中,单元中,31H30H。说明:说明: 操作数前有立即数符号操作数前有立即数符号“#”,则该操作数为立即寻址。,则该操作数为立即寻址。 目的操作数不能采用立即寻址方式。目的操作数不能采用立即寻址方式。图3-1 立即数寻址示意图 图3-1 立即数寻址示意
195、图 苛宽何碟纽呈焕含旬槛烂豌顿僳神负页惧烈堵赌捍挚划搜闪灼并柔蛇醒监片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:直接寻址的范围为片内RAM低128 B和特殊功能寄存器。(2)直接寻址)直接寻址将存放操作数的内存单元的地址直接写将存放操作数的内存单元的地址直接写在指令中,例如:在指令中,例如:MOV A, 12H ;将内;将内RAM 12H单元内容送累加器单元内容送累加器A中,中,(12H)A,如图,如图3-2所示。所示。MOV 30H,P0;将;将P0口的内容送入内口的内容送入内RAM 30H单元中,单元中,P030H。 图3-2 直接寻址示意图翌迁仔私助危骋宛接斋
196、格皇道垫有戚藏警统动欣浚丧渊朱胶谴漫怒蛰砾捞片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)寄存器寻址)寄存器寻址将存放操作数的寄存器直接写在指令将存放操作数的寄存器直接写在指令中,例如:中,例如:MOV R0, A;将送累加器;将送累加器A中的内容送入寄存器中的内容送入寄存器R0中,中,AR0,如图,如图3-3所示。所示。说明:规定的寄存器包括说明:规定的寄存器包括8个工作寄存器个工作寄存器R0R7、累加器、累加器A、数据指针数据指针DPTR、堆栈指针、堆栈指针SP及其他特殊功能寄存器。及其他特殊功能寄存器。 INC A;寄存器寻址方式,;寄存器寻址方式,INC AC
197、C;直接寻址方式。;直接寻址方式。 INC R0;寄存器寻址方式,;寄存器寻址方式,INC 00H;直接寻址方式。;直接寻址方式。 图3-3 寄存器寻址示意图 拉中蹲超鹃霍鹿烯昆熄痘拆德融貉误憎妊睬悦檀宇灾暮今姑读滑超快治荫片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)寄存器间接寻址)寄存器间接寻址指将存放操作数的内存单元的地指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。址放在寄存器中,指令中只给出该寄存器。形象地说,甲要找乙,可不知道乙的地址,但丙知道乙的地形象地说,甲要找乙,可不知道乙的地址,但丙知道乙的地址,甲也知道丙的地址,所以甲先找到丙,
198、从丙那里得到乙址,甲也知道丙的地址,所以甲先找到丙,从丙那里得到乙的地址,最后找到乙。的地址,最后找到乙。例如:已知例如:已知R0寄存器的内容是寄存器的内容是3AH,则指令为,则指令为MOV A,R0; 将以将以R0中内容(即中内容(即3AH)为地址的单)为地址的单元中的数据送到元中的数据送到A中,中,(R0)A,如图,如图3-4所示。所示。图3-4 寄存器间接寻址示意图 叭滓珊剥瓷钧慷照崖号慌椭上龙爆赖渐邢屈颧逊瑰挚宛讽仲肝栖饲辕薛帧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)变址寻址)变址寻址将基址寄存器与变址寄存器的内容相加,将基址寄存器与变址寄存器的内容相加
199、,结果作为操作数的地址。结果作为操作数的地址。DPTR或或PC是基址寄存器,累加器是基址寄存器,累加器A是变址寄存器。该类寻是变址寄存器。该类寻址方式主要用于查表操作。例如:如图址方式主要用于查表操作。例如:如图3-5所示,已知所示,已知A=02H,DPTR=0300H,则指令,则指令MOVC A, A+DPTR的功的功能将累加器能将累加器A和基址寄存器和基址寄存器DPTR的内容相加(图中的内容相加(图中),),结果作为操作数存放的地址(图中结果作为操作数存放的地址(图中),再将该地址中的内),再将该地址中的内容取出来送到累加器容取出来送到累加器A中(图中中(图中),执行后,累加器),执行后,
200、累加器A为为ROM 0302H单元地址中的内容。单元地址中的内容。图3-5 变址寻址示意图爱衫潦烛统钮怠蔷呜蔚鹅榜帽斜蓖龟憾填似犁血尧找免汹扛肩掖甸腋呻泄片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明: 变址寻址是专门针对程序存储器的寻址方式。变址寻址是专门针对程序存储器的寻址方式。 MCS-51指令系统中,只有下面指令系统中,只有下面3条指令采用这种寻址方式:条指令采用这种寻址方式:MOVC A,A+DPTRMOVC A,A+PCJMP A+DPTR(6)相对寻址)相对寻址程序计数器程序计数器PC的当前内容与指令中的操的当前内容与指令中的操作数相加,其结果作为跳
201、转指令的转移地址,该类寻址方式作数相加,其结果作为跳转指令的转移地址,该类寻址方式主要用于跳转指令。主要用于跳转指令。程序转移目标地址程序转移目标地址=当前当前PC值值+相对偏移量相对偏移量rel+转移指令字节转移指令字节数数相对偏移量相对偏移量rel是一个是一个8位有符号数,范围为:位有符号数,范围为:-128+127。例如,例如,2000H: SJMP 54H;执行指令后,程序目标地址;执行指令后,程序目标地址=2000H+54H+02H=2056H,也就是说,程序跳转到,也就是说,程序跳转到2056H单单元去执行了,如图元去执行了,如图3-6所示。所示。骤析昏嚷盯睛正扎双旧楚靡肯锁疟触毁
202、脖沃喀驻臣快函仰埔僚伏桓烹翅玄片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:从上面读者也许发现相对寻址计算太复杂,但在实际说明:从上面读者也许发现相对寻址计算太复杂,但在实际应用中,不需要这样来计算,而直接用目标地址的标号来代应用中,不需要这样来计算,而直接用目标地址的标号来代替偏移量替偏移量rel就可以了,因为编译软件会自动帮你算出相对偏就可以了,因为编译软件会自动帮你算出相对偏移量,这样比较方便。如:移量,这样比较方便。如:LOOP: SJMP LOOP;跳转到;跳转到LOOP处执行,处执行,如目标出界,指令改成如目标出界,指令改成LJMP图3-6 相对寻址示意图
203、 钥侠甄脯碳隶猿底挂耻茸若括有辟准俯喀傍釜躺携汁波锄圃炔揪挑责意倡片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (7)位寻址指按位进行的寻址操作。例如:SETB 3DH;将内部RAM位寻址区中的3DH位置1,如图3-7所示。图图3-7中的中的27H代表的是字节地址,代表的是字节地址,3DH是位地址,对于这点是位地址,对于这点大家一定要区分清楚,如:大家一定要区分清楚,如:MOV C, 01H;这里的;这里的01H代表的是位地址,因为代表的是位地址,因为C是位是位累加器累加器MOV A, 01H;这里的;这里的01H代表的是字节地址,因为代表的是字节地址,因为A是是字节累加器
204、字节累加器说明:对于位地址,有以下几种表示方法;说明:对于位地址,有以下几种表示方法; 直接使用位地址的表示方法,如直接使用位地址的表示方法,如MOV C,05H。 使用位名称的表示方法,如使用位名称的表示方法,如MOV C,RS1。 单元地址加位的表示方法,如单元地址加位的表示方法,如 MOV C,PSW.4或或MOV C, D0H.4。图3-7 位寻址示意图棘秧些平箭詹问栈绊括鄙蹋抬江懊埂姐扬几弧篮观翰坪周绚弧瞅漓虫稳基片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.2.1 3.2.1 数据传送类指令数据传送类指令 在在MCS-51单片机系在单片机系在MCS-51指令
205、系统中,数据传送类指令系统中,数据传送类指令是运用最频繁的一类指令。由于单片机的逻辑空间分为指令是运用最频繁的一类指令。由于单片机的逻辑空间分为内部内部RAM、外部、外部RAM和和ROM,数据的传送也都是在这,数据的传送也都是在这3者者之间进行,传送路径如图之间进行,传送路径如图3-8所示。列中,所示。列中,8031、8032内部没内部没有程序存储器,有程序存储器,8051/8751/AT89C51内部有内部有4K的程序存储器,的程序存储器,8052/8752/AT89C52内部有内部有8K的程序存储器。的程序存储器。图3-8 MCS-51单片机片数据传送图网薛仟族牌髓辅斡魔放糯汤牲佬涤过谆永
206、轿署搔聂骄士闭羔刽酪感鳞送绳片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 从图从图3-8中可知:中可知:(1)片内)片内RAM的单元数据可以相互传送,用的单元数据可以相互传送,用MOV指令。指令。(2)外部)外部RAM只能与累加器只能与累加器A进行数据传送,外部进行数据传送,外部RAM送送内内RAM或者内或者内RAM送外部送外部RAM必须经过累加器必须经过累加器A,用,用MOVX指令。指令。(3)从)从ROM只能读取数据,并且只能到只能读取数据,并且只能到A,如果要将,如果要将ROM数据送内数据送内RAM或者外部或者外部RAM,也必须经过累加器,也必须经过累加器A。垛析肥袱
207、坷屯填敖吉秘颊桐用搭播侗裂蛙盆地静荐而信铆甲驻守粥邦济拙片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1内内RAM数据传送指令数据传送指令(1)以累加器)以累加器A为目的字节的传送指令(为目的字节的传送指令(4条)条)MOV A,Rn;RnA,n=07,如,如 MOV A, R2MOV A, Ri;(Ri)A,i=0、1,如,如 MOV A, R1MOV A, direct;(direct)A,如,如 MOV A, 30HMOV A, #data;data,如如MOV A, #20H 这这4条指令不影响其他标志位,只影响条指令不影响其他标志位,只影响P标志位。标志位。【例【
208、例3-1】已知】已知(23H) = 50H,(50H) = 45H,R0 = 23H,指出,指出每条指令执行后相应单元内容的变化。每条指令执行后相应单元内容的变化。MOV A, 50H;(50)A,A45H。MOV A, R0;(R0)A,A50H。MOV A, R0;R0A, A23H。MOV A, #52H;52HA, A52H。墩辈衬斡瞩巩猴整佩谨妥菲循黍途糊耕拓榆猾娟嫂幸浆挺贺宝茸据禁条陷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)以工作寄存器)以工作寄存器Rn为目的字节的传送指令(为目的字节的传送指令(3条)条)这这3条指令不影响任何标志位。条指令不影响任
209、何标志位。MOV Rn, A;ARn,n=07,如,如MOV R2, AMOV Rn, direct;(direct)Rn,n=07,如,如MOV R2, 30HMOV Rn, #data;dataRn,n=07,如,如MOV R2, #30H【例【例3-2】将】将R3中的内容送中的内容送R2。解:解:MOV A,R3;R3AMOV R2,A;AR2很多初学者常写出很多初学者常写出MOV R2,R3的错误指令,所以在这的错误指令,所以在这里必须强调,在书写指令时,必须按照规定的指令格式写,里必须强调,在书写指令时,必须按照规定的指令格式写,不能凭自己的想象编造,否则单片机无法执行。同时,大家不
210、能凭自己的想象编造,否则单片机无法执行。同时,大家可以记住,在同一条指令中,不可能同时出现两个可以记住,在同一条指令中,不可能同时出现两个Rn或或Ri。煞占沉谗恋汽知蔷性滇编债景垢豢捞坐伦扦迸桌殿妮群菠栋潍躯浑征搭涩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-3】已知】已知A=34H,(40H)=52H,指出每条指令执行后相,指出每条指令执行后相应单元内容的变化。应单元内容的变化。MOV R0, A;AR0,R0=34HMOV R3, 40H;(40H)R3,R3=52HMOV R4, #40H;40HR4,R4=40H(3)以直接地址为目的字节的传送指令()
211、以直接地址为目的字节的传送指令(5条)条)MOV direct, A;A direct,如,如 MOV 30H, AMOV direct, Rn;Rn direct,n=07,如,如MOV 30H, R2MOV direct, Ri;(Ri) direct,i=0、1,如,如MOV 30H, R1MOV direct, #data;datadirect,如,如MOV 30H, #40HMOV direct, direct1;(direct1)direct,如,如MOV 30H, 40H这这5条指令不影响标志位。条指令不影响标志位。些坐伞惕逆蒜努射披贩斗梭啃混传罕蹋扒瘦搔计嗓栗涟档堪善种开黔迢汕
212、片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-4】已知】已知A60H,R0=38H,(38H)=83H,(40H)=7FH,指出每条指令执行后相应单元内容的变化。,指出每条指令执行后相应单元内容的变化。MOV 41H, A;A41H,(41H)=60HMOV 41H, R0;(R0)41H,(41H)=83HMOV 41H, R0;R041H,(41H)=38HMOV 41H, 40H;(40H)41H,(41H)=7FHMOV 41H, #0F8H ;F8H41H,(41H)=F8H最后结果:最后结果:(41H)=F8H。乱孜炊馋江澡沁挛抄术瞳啪彩爸毙角味启憎
213、宾短研虏皱色沧虹肆总吝肝翌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)以寄存器间接寻址为目的字节传送指令()以寄存器间接寻址为目的字节传送指令(3条)条)MOV Ri, A;A(Ri),i=0、1,如,如MOV R1,AMOV Ri, direct ;(direct)(Ri),i=0、1,如,如MOV R1,30HMOV Ri, #data ;data(Ri),i=0、1,如,如MOV R1,#30H这这3条指令不影响标志位。条指令不影响标志位。【例【例3-5】已知】已知A=30H,R1=50H,(50H)=70H,(60H)=09H,指出每条指令执行后相应单元内容
214、的变化。指出每条指令执行后相应单元内容的变化。MOV R1, A;A(R1),(50H)=30H。MOV R1, #60H;60H(R1),(50H)=60H。MOV R1, 60H;(60H)(R1),(50H)09H。最后结果:最后结果:(50H)=09H。涎懊匙漂虫凸护洋录狰凌丁频愿媚锑娶帖汾搔捧眯叭产姓拂气郡尽畜示算片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)交换指令()交换指令(6条)条) 字节交换指令字节交换指令XCH A, Rn;ARn,n=07, 如如XCH A, R1XCH A, Ri;A(Ri),i=0、1, 如如XCH A, R0XCH A,
215、direct;A(direct),如如XCH A, 40H上述指令的功能是将目标操作数和源操作数的内容互换。上述指令的功能是将目标操作数和源操作数的内容互换。 半字节交换指令半字节交换指令XCHD A, Ri ;A30(Ri)30,高,高4位不变。位不变。i=0、1,如,如XCHD A, R0 累加器高低累加器高低4位互换指令位互换指令SWAP A ;A74A30这这5条指令只影响条指令只影响P标志位。标志位。 宝屎紧蓑黍吭狠篆碟流逢掂舌潜翔慷鸽蔓戊渗依亨蓬武班湾予墓正赊灰蝉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-6】已知】已知(20H)=54H,(21H
216、)=32H,A=01H,指出每条指,指出每条指令执行后相应单元内容的变化并写出最后结果。令执行后相应单元内容的变化并写出最后结果。XCH A,20H;A(20H),A=54H,(20H)=01HMOV R1,#21H ;21HR1,R1=21HXCHDA,R1;A30(R1)30,A=52H,(21H)=34HSWAP A;A74A30,A=25HXCH A,20H;A(20H),A=01H,(20H)=25H最后结果:最后结果:A=01H,(20H)=25H,(21H)=34H。茂教罚苛夹柴乃奠贼冬边咎捍遍饵衫郝纺镁毗荒烂锑屯杨颓菌翌序符鬃读片机基础知识-E书联盟片机基础知识-E书联盟第1章
217、单片机基础知识 2 21616位数据传送指令(位数据传送指令(1 1条)条)在在MCS-51指令系统中,只有一条指令系统中,只有一条16位数据传送指令:位数据传送指令:MOV DPTR,#data16;data16DPTR,如,如MOV DPTR,#3000H这条指令不影响标志位。这条指令不影响标志位。说明:说明:(1)该指令的功能是将)该指令的功能是将16位立即数送入位立即数送入DPTR,其中,其中DPH存存放高放高8位,位,DPL存放低存放低8位,也就是说,指令位,也就是说,指令MOV DPTR, #5678H可以用下面两条指令来代替:可以用下面两条指令来代替:MOV DPH, #56HM
218、OV DPL, #78H(2)DPTR一般用作一般用作16位间接寻址,如果是位间接寻址,如果是MOVX指令,则指令,则寻片外寻片外RAM地址,如果是地址,如果是MOVC指令,则寻指令,则寻ROM地址。地址。忆前鸿钾桨艳湖钨抡粤苟志妹芹粗纵弗谬持俯寞泊创祈簇蒙祟摧位属封瞄片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3片外片外RAM传送指令(传送指令(4条)条)MOVXA,Ri;(Ri)A,i=0、1MOVXA,DPTR;(DPTR)AMOVXRi,A;A(Ri),i=0、1MOVXDATR,A;A(DPTR)说明:说明:(1)对外部)对外部RAM的访问必须通过累加器的访问必
219、须通过累加器A。(2)对外部)对外部RAM的访问必须采用寄存器间接寻址方式,寻的访问必须采用寄存器间接寻址方式,寻址寄存器有两种。址寄存器有两种。 8位寄存器位寄存器R0、R1,寻址范围为片外,寻址范围为片外RAM低低8位地址空间位地址空间(00HFFH),其高),其高8位地址由位地址由P2口状态确定。口状态确定。 16位寄存器位寄存器DPTR,寻址范围为片外,寻址范围为片外RAM 64K地址空间地址空间(0000HFFFFH)。)。动链藐孽斤穴惰坊虚难持茁震闺岳灶思丙温祭池绸驻谬撑城符速锭晦佩住片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)外)外RAM高高8位地址由
220、位地址由P2口送出,低口送出,低8位地址由位地址由P0口送出,口送出,8位数据也由位数据也由P0口分时传送。在执行读外口分时传送。在执行读外RAM时,信号有效,时,信号有效,为低电平。在执行写外为低电平。在执行写外RAM时,信号有效,为低电平。时,信号有效,为低电平。(4)由于)由于MCS-51扩展扩展I/O地址与外地址与外RAM地址是统一编址的,地址是统一编址的,所以访问外所以访问外RAM的指令也作为扩展的指令也作为扩展I/O的输入的输入/输出指令。比输出指令。比如,已知某外部如,已知某外部I/O端口地址为端口地址为7FF7H,则对此,则对此I/O的读写操的读写操作为:作为:MOV DPTR
221、, #7FF7H;赋端口地址;赋端口地址MOVX A, DPTR;输入操作(读);输入操作(读)MOVX DPTR, A;输出操作(写);输出操作(写)闸框痰乃卤廖卢眶痉萄合射鞘镶侈狭签拯哨后役帧拇郸伺唤拔褪酷夯另快片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-7】 要求编写指令序列,实现以下功能:要求编写指令序列,实现以下功能: 将片外将片外RAM 2000H单元内容传送到片内单元内容传送到片内RAM 20H单元中。单元中。 将片外将片外RAM 2120H单元内容送到片外单元内容送到片外RAM 3210H单元中。单元中。解:解:MOV DPTR, #2000H
222、MOVXA,DPTRMOV20H,AMOVDPTR,#2120HMOVXA,DPTRMOVDPTR,#3210HMOVXDPTR,A咯幽非规钻奢袍概兼搬疚将较躯浸力汞扇界夜翟匠勋早敏轴厢留伍扁谢魁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4ROM指令(查表指令)(指令(查表指令)(2条)条)我们知道,我们知道,ROM中存放的是程序代码,一般不需要人为去中存放的是程序代码,一般不需要人为去读,但有时候,在程序中也包含某些重要数据(也称表格),读,但有时候,在程序中也包含某些重要数据(也称表格),如显示字型码、常数等。这些数据在程序运行过程中需要被如显示字型码、常数等。这些
223、数据在程序运行过程中需要被读出来,参与程序的处理过程。读出来,参与程序的处理过程。比如要实现函数,比如要实现函数,x为输入量,是为输入量,是010的整数,如果采用编的整数,如果采用编程方法实现这个函数的运算,则比较复杂。我们可以利用其程方法实现这个函数的运算,则比较复杂。我们可以利用其他工具先算出他工具先算出Y(0)Y(10)的值,把它依次存放在的值,把它依次存放在ROM中,中,然后根据然后根据x的值去找出的值去找出Y(x)的值,这种方法就称为查表,也是的值,这种方法就称为查表,也是2条读条读ROM指令的主要功能。指令的主要功能。MOVCA,A+DPTR;(A+DPTR)AMOVCA,A+PC
224、;PC+1PC,(A+PC)A控磕祖仓予彭董憾丘锰拌涸替收瘫榴盗泄桃毋哑肖帝洼撵袋轩舟拣使敌毅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明:(1)这两条指令的寻址方式都为变址寻址方式,都是单字)这两条指令的寻址方式都为变址寻址方式,都是单字节指令,都只影响标志位节指令,都只影响标志位P。(2)MOVC A, A+DPTR的寻址以的寻址以DPTR为基址,可以寻为基址,可以寻址整个址整个64 KB的的ROM空间。空间。(3)MOVC A, A+PC的寻址以当前指令的的寻址以当前指令的PC值为基址值为基址寄存器,其寻址范围为该指令后寄存器,其寻址范围为该指令后256
225、B的的ROM空间。空间。(4)在实际应用中,)在实际应用中,MOVC A, A+DPTR寻址范围广,寻址范围广,不用修正不用修正A值,比较方便,采用较多。值,比较方便,采用较多。坚暑肌摩抽邵斩扩阿滨餐泊坎镇椅强奴烫嘱枷沪樱剂霜林韩满娠伤镰策焚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-8】在单片机应用系统中,常用】在单片机应用系统中,常用LED数码管显示数码,数码管显示数码,但显示数字(但显示数字(9)与显示数字编码并不相同,需要将显示数)与显示数字编码并不相同,需要将显示数字转换为显示字型(段)码,通常是用查表的方法。现要求字转换为显示字型(段)码,通常是用
226、查表的方法。现要求将将30H中的显示数字转换为显示字型(段)码并存入中的显示数字转换为显示字型(段)码并存入30H。已知共阴字段码表首址为已知共阴字段码表首址为TAB。解:编程如下。解:编程如下。CHANG:MOV DPTR,#TAB;置共阴字;置共阴字段码表首址段码表首址MOV A,30H;读显示数;读显示数字字 MOVCA,A+DPTR;查表,转换为显;查表,转换为显示字段码示字段码 MOV 30H,A;存显示字段码;存显示字段码 RETTAB: DB 3FH,06H,5BH,4FH,66H;04共阴字段码表共阴字段码表 DB 6DH,7DH,07H,7FH,6FH;59共阴共阴字段码表字
227、段码表肪仇您氮苏取龋预娘两固邑卖研鲁累液瑶猴俏涟栗杰官破确刽惧廖扣篡尚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 5堆栈操作指令堆栈操作指令PUSH direct;SP+1SP,(,(direct)SP;如;如PUSH 20HPOPdirect;(;(SP)direct,SP-1SP;如;如POP 30H说明:(说明:(1)入栈操作过程。先将堆栈指针)入栈操作过程。先将堆栈指针SP的内容加的内容加1,指,指向堆栈顶的一个空单元;然后将指令指定的直接寻址单元中向堆栈顶的一个空单元;然后将指令指定的直接寻址单元中的数据送到该空单元中。假如的数据送到该空单元中。假如PUSH 3
228、0H,(30H)=2BH,SP=0FH,则其操作过程如图,则其操作过程如图3-9所示。所示。图3-9 指令PUSH操作示意图叠悼孵梧郭咬秉侯识支撇魁荧脐曼卷坯卫闽擂声缀敖送乖瞩收怔券哩浸负片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)出栈操作过程。先将)出栈操作过程。先将SP所指单元(栈顶地址)中的数所指单元(栈顶地址)中的数据弹出,送到指定的内据弹出,送到指定的内RAM单元;然后单元;然后SP-1SP,SP仍指仍指向栈顶地址。以向栈顶地址。以POP 30H,SP=0FH,则其出栈操作过程如,则其出栈操作过程如图图3-10所示。所示。图3-10 指令POP操作示意图铅
229、怒个界薪淋珐重俩捧疤迭组屠吕架啼帖卧嚎傅趁导窝佛使戮含哉的服何片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)后面所跟的操作数只能是直接地址,如)后面所跟的操作数只能是直接地址,如PUSH R0,PUSH A都是错误的,应该为都是错误的,应该为PUSH 00H (设(设RS1=RS0=0),),PUSH ACC。【例【例3-9】将片内】将片内RAM 30H单元与单元与40H单元中的内容互换。单元中的内容互换。解:解:方法方法1(直接地址传送法):(直接地址传送法):MOV31H,30HMOV30H,40HMOV40H,31HSJMP $阻酝俊畜械穗筷雁泊弟圣菲仑泊吏刀召
230、究净党标炼赏铜躺键逸喧妊半遮馒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 方法方法2(间接地址传送法):(间接地址传送法):MOVR0,#40HMOVR1,#30HMOVA,R0MOVB,R1MOVR1,AMOVR0,BSJMP $乘殃姥诫锄若鳃牺吟谬漂揪锨恬豪谷佳挡甥檀匆怎摈竭危眨赐绝骋住型逆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.2.2 3.2.2 算术运算类指令算术运算类指令算术运算类指令共算术运算类指令共24条,这类指令基本都会影响标志位条,这类指令基本都会影响标志位Cy、OV、AC、P。1加法指令加法指令(1)不带进位位)不带进位位
231、Cy加法指令(加法指令(4条)条)ADD A,Rn;A+RnA,(,(n=07)有进有进位,位,Cy=1,无进位,无进位,Cy=0ADD A,Ri;A+(Ri)A,(,(i=0、1)有进有进位,位,Cy=1,无进位,无进位,Cy=0ADD A,direct;A+(direct)A有进有进位,位,Cy=1,无进位,无进位,Cy=0ADD A,#data;A+dataA有进位,有进位,Cy=1,无进位,无进位,Cy=0ADD指令是指令是8位数加法指令,其一个加数在累加器位数加法指令,其一个加数在累加器A中,另外中,另外一个加数由不同寻址方式得到,相加结果再送回一个加数由不同寻址方式得到,相加结果再
232、送回A。运算结。运算结果会影响标志位。果会影响标志位。滩譬凶觉富鹰和惑播撤康拣洞椽奏寇鞍佛焦冶圣酗墙粟韩砧炕轿愉在鹿孕片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-10】已知累加器】已知累加器A的内容为的内容为E7H,(30H)=97H,则指出执行指,则指出执行指令令ADD A,30H后的结果和各标志位的状态。后的结果和各标志位的状态。解:解: 11100111B+10010111B1(Cy) 01111110B执行后,执行后,A=7EH,Cy=1,AC=0,P=0,OV=1。(2)带进位位)带进位位Cy加法指令(加法指令(4条)条)ADDC A,Rn;A+Rn
233、+CyA,(,(n=07)有进有进位,位,Cy=1,无进位,无进位,Cy=0ADDC A,Ri;A+(Ri)+CyA,(,(i=0、1)有进位,有进位,Cy=1,无进位,无进位,Cy=0ADDC A,direct;A+(direct)A有进有进位,位,Cy=1,无进位,无进位,Cy=0ADDC A,#data;A+dataCyA有进有进位,位,Cy=1,无进位,无进位,Cy=0ADDC与与ADD指令的区别就是相加时再加上指令的区别就是相加时再加上Cy,其余功能一样。,其余功能一样。痈暴荷澎拂锹劳跪南羊诬哄秀周椒唐唇樟贺筋黔铺听踩娄滁昆透捉赫悯蛮片机基础知识-E书联盟片机基础知识-E书联盟第1章
234、单片机基础知识 【例【例3-11】已知累加器】已知累加器A的内容为的内容为A7H,R0=30H,(30H)=5BH,Cy=1,则指出执行指令,则指出执行指令ADD A,R0后的结果和后的结果和各标志位的状态。各标志位的状态。解:解:10100111B01011011B + 1 Cy1(Cy) 0000 0011B执行后,执行后,A=03H,Cy=1,AC=1,P=1,OV=0。副公捧萨叮惠搽帮捎都跺拽柒均奸洁受挂嘻又炉信惟反皇曾捅衔矾棚呸扰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2减法指令(减法指令(4条)条)SUBB A,Rn;A-Rn-CyA,(,(n=07)有借
235、位,有借位,Cy=1,无进位,无进位,Cy=0SUBB A,Ri; A-(Ri)-CyA,(,(i=0、1)有借位,有借位,Cy=1,无进位,无进位,Cy=0SUBB A,direct;A-(direct)-CyA有借有借位,位,Cy=1,无进位,无进位,Cy=0SUBB A,#data;A-data-CyA有借位,有借位,Cy=1,无进位,无进位,Cy=0注意:减法指令都是带进位位减法,若要执行不带进位位减注意:减法指令都是带进位位减法,若要执行不带进位位减法,可先将进位位清零,再执行减法操作。法,可先将进位位清零,再执行减法操作。粟稚畔赤首瑶载纪漠审仪障谚截捆彪派坍电熟靖话诫瀑学狡版藕送顷
236、段嘿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-12】已知累加器】已知累加器A=A7H,R0=58H,Cy=0,则指出执,则指出执行指令行指令SUBB A,R0后的结果和各标志位的状态。后的结果和各标志位的状态。解:解:10100111B01011000B+ 0 Cy0(Cy) 0100 1111B执行后,执行后,A=4FH,Cy=0,AC=1,P=1,OV=1。说明:说明:(1)当加、减法运算结果的最高位有进位或有借位时,)当加、减法运算结果的最高位有进位或有借位时,Cy=1,否则,否则Cy=0。(2)当加、减法运算时,低)当加、减法运算时,低4位向高位向高
237、4位有进位或者借位时,位有进位或者借位时,AC=1,否则,否则AC=0。(3)在加、减法过程中,)在加、减法过程中,D6和和D7未同时产生进位或者借位未同时产生进位或者借位时,时,OV=1,否则,否则OV=0。(4)当运算结果)当运算结果A中中“1”的个数为奇数时,的个数为奇数时,P=1,否则,否则P=0。(5)在加、减法指令中,其目的操作数只能是累加器)在加、减法指令中,其目的操作数只能是累加器A。皮挛影界灭馁甸顶锋温蛙想铀罗遏审纵冉僵锑套园锅调荚侨王吟惯巧题秦片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-13】编写计算】编写计算12A4H+0FE7H的程序,
238、将结果存入内的程序,将结果存入内部部RAM 41H和和40H单元,单元,40H存低存低8位,位,41H存高存高8位。位。解:单片机指令系统中只提供了解:单片机指令系统中只提供了8位的加减法运算指令,两位的加减法运算指令,两个个16位数(双字节)相加可分为两步进行,第一步先对低位数(双字节)相加可分为两步进行,第一步先对低8位相加,第二步再对高位相加,第二步再对高8位相加。位相加。高高8位位 低低8位位 1 2 A 4 H A4H + E7H = 8BH 进位进位1 + 0 F E 7 H 12H + 0FH + 1 = 22H 2 2 8 BH 进位进位 1 1 加法指令加法指令ADDCADD
239、份仁厄酞哀莎誊汽荚沮级旦嗅策募郑捉重尖问严窟轰港耻窗烬稽醚赏啸清片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序如下:程序如下:PLUS: MOVA,#0A4H;被加数低;被加数低8位位AADDA,#0E7H;加数低;加数低8位位E7H与之相与之相加,加,A=8BH,Cy=1MOV40H,A;A(40H),存低),存低8位结果位结果MOVA,#12H;被加数高;被加数高8位位AADDCA,#0FH;加数高;加数高8位位+A+CY,A=22HMOV41H,A;存高;存高8位运算结果位运算结果RET蹿放数哨霄雾盐血律求鹅塔炳踌不呻余戚蓬摘淄可肝耽艘澳落平詹距羽菩片机基础知识-
240、E书联盟片机基础知识-E书联盟第1章单片机基础知识 3加加1减减1指令(指令(9条)条)(1)加)加1指令指令INC A;A+1AINC Rn;Rn+1Rn,n=07INC Ri;(Ri)+1(Ri),i=0、1INC direct;(direct)+1directINC DPTR;DPTR+1DPTR(2)减)减1指令指令 DEC A;A-1ADEC Rn;Rn-1Rn,n=07DEC Ri;(Ri)-1(Ri),i=0、1DEC direct;(direct)-1direct说明:说明: 加加1、减、减1指令在涉及指令在涉及A时,会影响时,会影响P标志位,其他情况不标志位,其他情况不会影响
241、任何标志位。会影响任何标志位。 无无16位减位减1指令,即无指令,即无DEC DPTR 指令,使用时请意。指令,使用时请意。糊辕詹妻猛舆栏卧咬从汗疾锤搪潞腐烛抖讫承致誉阳余理扬汀埂叔编麓返片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-14】已知】已知A=00H,R0=50H,(50H)=0FFH,指出每条,指出每条指令执行后相应单元内容的变化。指令执行后相应单元内容的变化。DECA;A-1A,A=0FFHINCR0;(R0)+1(R0),(50H)=00HINCR0;R0+1R0,R0=51HDEC50H;(50H)-150H,(50H)=0FFH哄淘秤最鬃趋纠
242、椒兢蛰聊砾莎骑涨辩多酞独球邀椰量衫侩既涸熙奸曾之灾片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4乘、除法指令(乘、除法指令(2条)条)(1)乘法指令)乘法指令MUL AB ;ABBA说明:说明: 将累加器将累加器A的内容与寄存器的内容与寄存器B的内容相乘,乘积的低的内容相乘,乘积的低8位存位存放在累加器放在累加器A中,高中,高8位存放于寄存器位存放于寄存器B中。中。 如果乘积超过如果乘积超过0FFH,则溢出标志,则溢出标志OV置置“1”,否则清,否则清“0”。进位标志。进位标志Cy总是被清总是被清“0”。(2)除法指令)除法指令DIV AB ;(;(AB)商)商A,余数,
243、余数B秋吴雀玻璃邢慕木姆炉弛纶皂掀吝逾被咆气汰徒撞突俊嘿厘碎名井想锣情片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明: 将累加器将累加器A中的内容除以寄存器中的内容除以寄存器B中的中的8位无符号整数,所位无符号整数,所得商的整数部分存放在累加器得商的整数部分存放在累加器A中,余数存放在寄存器中,余数存放在寄存器B中,中,进位标志进位标志Cy和溢出标志和溢出标志OV清清“0”。 若原来若原来B(除数)中的内容为(除数)中的内容为0,则执行该指令后,则执行该指令后A与与B中中的内容不确定,并将溢出标志的内容不确定,并将溢出标志OV置置“1”,在任何情况下,在任何情况下
244、,进位标志进位标志Cy总是被清总是被清“0”。【例【例3-15】已知】已知A=50H,R0=0A0H,(50H)=34H,指出每条,指出每条指令执行后相应单元内容的变化。指令执行后相应单元内容的变化。MOVB,R0;R0B,B=0A0HMUL AB;ABBA,50H0A0H=3200H,则,则B=32H,A=00HMOV A,50H ;(50H)A;A=34HDIV AB;(A/B)商商A,余数,余数B;(34H)/(32H),商,商 A=01H,余数,余数B=02H东路西呜目离珊臆陵殿喊昂献溉调师檀避循估秧嘎解僵化踞砰摹幢敛汤临片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识
245、 5BCD码调整指令码调整指令DA A说明:说明:(1)这条指令对累加器)这条指令对累加器A参与参与BCD码加法运算所获得的码加法运算所获得的8位位结果进行十进制调整,使累加器结果进行十进制调整,使累加器A中的内容调整为二位压缩中的内容调整为二位压缩型型BCD码的数。调整方法可以参见码的数。调整方法可以参见1.3.2节(常用编码)。节(常用编码)。(2)使用时必须注意,它只能跟在加法指令之后,不能对)使用时必须注意,它只能跟在加法指令之后,不能对减法指令的结果进行调整,且其结果不影响溢出标志位,但减法指令的结果进行调整,且其结果不影响溢出标志位,但会影响会影响Cy位。位。拭橙苟芯澎咨州摘弓谍泣
246、镍耍泡甩裳沮厅撒薛茎舵膝菜沽罩诽贬询偷睡忍片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-16】已知】已知A=【65】BCD,B=【78】BCD,C=0,指出,指出执行下列语句后的结果。执行下列语句后的结果。ADDA,BDAA解:执行过程:解:执行过程:【0110 0101】BCD A(65)+【0111 1000】BCD B(78)【1101 1101】BCD ;满足;满足BCD码加法运算的(码加法运算的(3)、()、(4)修正条件,进行加修正条件,进行加6修正修正+ 0110 0110 1 【0100 0011】BCD S(143)执行后:执行后:A=【43】
247、BCD,C=1。短忱怔每花梢嘘递吱懒揣荐洽邓粉境棱瓶帚募眼韩行咬皑嘿魏惊当网靴掂片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.2.3 3.2.3 逻辑运算及移位指令逻辑运算及移位指令逻辑运算类指令共逻辑运算类指令共24条,包括与、或、非、异或、清零、取条,包括与、或、非、异或、清零、取反及移位等操作指令。这些指令涉及累加器反及移位等操作指令。这些指令涉及累加器A时,影响奇偶时,影响奇偶标志位标志位P,但对,但对Cy(除带进位移位指令外)、(除带进位移位指令外)、AC、OV位均位均无影响。无影响。淌船割斯谦南洗畅鼎陋捐廉酵冯肿蚂觅颗挎也俐陛悟鉴尺舞扦贱柞湘婶弧片机基础知识
248、-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1“与与”操作指令(操作指令(6条)条)ANL A,Rn ;A RnA,如如ANL A,R1ANL A,Ri ;A (Ri)A,如如ANL A,R1ANL A,#data ;A dataA,如如ANL A,#43HANL A,direct ;A (direct)A,如如ANL A,50HANL direct,A ;(direct) Adirect,如如ANL 12H,AANL direct,#data;(direct) datadirect, 如如ANL 34H,#28H摄俺锈巳负四碗客豆探秀甘皇渴肢叛耍哀耀磁致瓶谨复蔷颇服辐弥用几漏片机基
249、础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明:(1)这组指令中的前)这组指令中的前4条指令是将条指令是将A中的内容和指定单元中中的内容和指定单元中的内容或立即数按的内容或立即数按“位位”进行逻辑进行逻辑“与与”操作,结果存在操作,结果存在A中。仅影响中。仅影响P标志。标志。(2)后)后2条指令是将直接地址单元内容与条指令是将直接地址单元内容与A或立即数按或立即数按“位位”进行逻辑进行逻辑“与与”操作,结果存在该地址单元中,若直接地操作,结果存在该地址单元中,若直接地址为址为P0P3端口时,则该指令是对端口进行端口时,则该指令是对端口进行“读读修改修改写写”操作。操作。
250、瘫算暇圈稻剿刁衬副逸虐解穴萍哥蹭犹缺寡凉搜跪舒羡卵董款圃妖逾涂雅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-17】已知】已知A=8CH,R0=9AH,指出执行指令,指出执行指令ANL A, R0后的结果。后的结果。解:解:1000 1100B1001 1010B1000 1000B执行结果:执行结果:A=88H,R0中的内容不变,仍为中的内容不变,仍为9AH。冠漆击点唾眨胀报机锈区溅豫礁慑拿署去藩秸臼块右擅侦离漠暇盒味酋常片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2“或或”操作指令(操作指令(6条)条)ORL A,Rn ;A RnA,如
251、如ORL A,R4ORL A,Ri ;A (Ri)A,如如ORL A,R1ORL A,#data ;A dataA,如如ORL A,#45HORL A,direct ;A (direct)A,如如ORL A,43HORL direct,A ;(direct) Adirect,如如ORL 34H,AORL direct,#data;(direct) datadirect, 如如ORL 76H,#45持鲸瑶猿裙蒋胖放咙活间乙簿梧将资久司对您拥犯休毋寄腺雀堂田耙傅蚁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明:(1)这组指令中的前)这组指令中的前4条指令是将条指令是将
252、A中的内容和指定单元中中的内容和指定单元中的内容或立即数按的内容或立即数按“位位”进行逻辑进行逻辑“或或”操作,结果存在操作,结果存在A中。仅影响中。仅影响P标志。标志。(2)后)后2条指令是将直接地址单元内容与条指令是将直接地址单元内容与A或立即数按或立即数按“位位”进行逻辑进行逻辑“或或”操作,结果存在该地址单元中,若直接地操作,结果存在该地址单元中,若直接地址为址为P0P3端口时,则该指令是对端口进行端口时,则该指令是对端口进行“读读修改修改写写”操作。操作。获喜域贵铝摘炮糖僻均寄椰士瓤毗袜锯助易阉恩陡假雪蹿织吟饿总耪乎剿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识
253、【例【例3-18】已知】已知41H和和40H单元中分别存放了一个非压缩单元中分别存放了一个非压缩BCD码,要求编写程序将其合并压缩,码,要求编写程序将其合并压缩,41H中的中的BCD码为高码为高位,并存放到位,并存放到40H中,示意图如图中,示意图如图3-11所示。所示。图图3-11 示意图示意图解:解:MOV A,41HSWAP AORL 40H,A雀晤疏琵辊掀岗夕眯各爸猩钮殖焙饭柒骚摇撩猖喳甸四彝茶松隶辆假下整片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3“异或异或”操作指令(操作指令(6条)条)XRL A,Rn;A RnA, 如如XRL A,R4XRL A,Ri;A
254、 (Ri)A, 如如XRL A,R1XRL A,#data ;A dataA, 如如XRL A,#45HXRL A,direct ;A (direct)A, 如如XRL A,43HXRL direct,A ;(;(direct) Adirect, 如如XRL 34H,AXRL direct,#data;(;(direct) datadirect,如,如XRL 76H,#45逃蜒租吠诧遥署肩咀阶甘骗贺扔田沏产嘿毡凯嘿笋乔抠霸沟甭魏轴浩催味片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明:(1)这组指令中的前)这组指令中的前4条指令是将条指令是将A中的内容和指定单元中中
255、的内容和指定单元中的内容或立即数按的内容或立即数按“位位”进行逻辑进行逻辑“异或异或”操作,结果存在操作,结果存在A中。仅影响中。仅影响P标志。标志。(2)后)后2条指令是将直接地址单元内容与条指令是将直接地址单元内容与A或立即数按或立即数按“位位”进行逻辑进行逻辑“异或异或”操作,结果存在该地址单元中,若直接操作,结果存在该地址单元中,若直接地址为地址为P0P3端口时,则该指令是对端口进行端口时,则该指令是对端口进行“读读修改修改写写”操作。操作。寒帚倾胁凡假弯岂罚寞锹算俘晒浴壁烟鞘玲敖艇憋舶母登珐第慎赂馁吃翰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-19
256、】已知】已知A=9CH,指出执行指令,指出执行指令XRL A,#9CH后的结后的结果。果。解:解: 1001 1100B 1001 1100B 0000 0000B执行后:执行后:A=00H,可见两个相同的数异或,其结果为,可见两个相同的数异或,其结果为0。垛渭但佬暗酪金剩履敌轩碌羞撞肚钩叙事慷储搬厨帆勤俏碘黎康冈绿荡劫片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4清零和取反指令(清零和取反指令(2条)条)CLR A;0ACPL A;A只影响只影响P标志位。标志位。5循环移位指令循环移位指令循环左移:循环左移:RL A带带Cy循环左移:循环左移:RLC A循环右移:循环右
257、移:RR A带带Cy循环右移:循环右移:RRC A 循环移位示意图如图循环移位示意图如图3-12所示。所示。 状掏都啥韩墨矣便趁青阂膝滤碉无与酵拯揩两氧辆汗踞蔫块冗剿玲颁俄沦片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明:(1)“RL A”和和“RLC A”指令的相同之处在于两者都是使指令的相同之处在于两者都是使A中的内容左移一位,而且两者的不同点在于中的内容左移一位,而且两者的不同点在于“RLC A”将将Cy连连同同A中的内容一起循环左移,中的内容一起循环左移,A7的内容进入的内容进入Cy,原来,原来Cy内容内容进入进入A0,但不对其他标志位产生影响。,但不对其
258、他标志位产生影响。(2)“RR A”和和“RRC A”指令的异同点类似于指令的异同点类似于“RL A”和和“RLC A”,仅是,仅是A中的数据移位方向向右。中的数据移位方向向右。(3)当)当A中最高位不为中最高位不为“1”时,可以采用时,可以采用“RL A”指令对指令对A中的内容做乘中的内容做乘2运算。运算。(4)当)当A中最高位为中最高位为“1”时,采用时,采用“RLC A”指令对指令对A中的中的内容做乘内容做乘2运算,只是在乘前必须将运算,只是在乘前必须将Cy位清零,此时的数据位清零,此时的数据实际是包括实际是包括Cy内的内的“9”位数据。位数据。(5)当)当A中最低位不为中最低位不为“1
259、”时,可采用时,可采用“RR A”指令对指令对A中中的内容做除以的内容做除以2运算。运算。(6)当)当A中最高低位为中最高低位为“1”时,采用时,采用“RRC A”指令对指令对A中中的内容做除以的内容做除以2运算,只是在运算前必须将运算,只是在运算前必须将Cy位清零,位清零,Cy相相当于小数位。当于小数位。镐闻铅见占衙程洗乘件含丰迪陪村丹琉秤命程律芽邀君屿摄猛姜浓躬刨页片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-20】已知】已知R1=12H,R2=93H,R3=34H,R4=25H,Cy=1,指出执行下列指令后的结果。,指出执行下列指令后的结果。MOV A,
260、R1;A=12HRLA;A=24H(乘(乘2的结果,的结果,没有超过低没有超过低8位)位)MOV R1,A;R1=24HMOV PSW,#00H;Cy=0MOV A,R2;A=93HRLCA;A=26H,Cy1(乘(乘2的结果,低的结果,低8位在位在A,高位在,高位在Cy)MOV R2,A;R2=26HMOV A, R3;A=34HRRA;A=17H(除以(除以2的结的结果,可以整除,商在果,可以整除,商在A)MOV R3,A;R3=17HMOV PSW,#00H;Cy=0MOV A, R4;A=25HRRCA;A=12H,Cy1(除(除以以2的结果,商在的结果,商在A,余数在,余数在Cy)M
261、OV R4,A;R4=12H惦斩靖态攫棚获也从薪呈批凝着威震戚筏爱溶承睫障厌攻座显淬糊膛航棵片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-21】编程实现】编程实现16位数的算术左移。设位数的算术左移。设16位数一次存放位数一次存放在内在内RAM 22H 21H单元中,高位在前。单元中,高位在前。解:算术左移是将操作数整体左移一位,最低位补充解:算术左移是将操作数整体左移一位,最低位补充0,相,相当于完成当于完成16位数的乘位数的乘2操作,如图操作,如图3-13所示。所示。图3-13 16位数算术左移示意图遭很祟洱詹肛丑埃毒丰谤并磐悉炼块谍头赋扒誉操窖饶轴郭粹禁筛
262、炒杯沏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序如下:程序如下:CLR C;清;清Cy位位MOV A,21H;取操作数低;取操作数低8位位RLC A;低;低8位带位带Cy左移一位左移一位MOV 21H,A;回存;回存MOVA,22H;指向操作;指向操作数高数高8位位RLCA;高;高8位带位带Cy左移一位左移一位MOV22H,A;回存;回存兴芦店宣缄校犹刷仪虫兹噬申赛踌剧谅象残贡雍闪涌朝屁捷岔搪希侣讹蚁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.2.4 3.2.4 位操作类指令位操作类指令在在MCS-51的硬件结构中,有一个位处理器(布尔处理
263、器)的硬件结构中,有一个位处理器(布尔处理器)和一套位变量处理的指令子集。在进行位操作时,和一套位变量处理的指令子集。在进行位操作时,Cy位为位位为位累加器。位存储器是片内累加器。位存储器是片内RAM字节地址字节地址20H2FH单元中连单元中连续的续的128个位(位地址位个位(位地址位00H7FH)和特殊功能寄存器中字)和特殊功能寄存器中字节地址能被节地址能被8整除的那部分整除的那部分SFR,这些,这些SFR都具有可寻址位。都具有可寻址位。位操作指令包括位变量的传送、修改或逻辑操作。位操作指令包括位变量的传送、修改或逻辑操作。1位传送指令(位传送指令(2条)条)MOV C,bit ;(bit)
264、Cy 如如 MOV C,12HMOV bit,C ;Cybit如如 MOV 24H.1,C 昆且熟至鄂义芯啪怂愧落疼适常斌哎喇诊驼描础炉铸莆茂输琉扁钧叶跳技片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2位修正指令(位修正指令(6条)条)(1)清零指令)清零指令CLR C;0CCLR bit;0bit(2)取反指令)取反指令CPL C;CCPL bit;();()bit(3)置)置1指令指令SETB C;1CSETB bit;1bit屿嫁裤飘州运涸枢淤鹏讣烧捶藐斯辈瞬函术搓茄侮肇领怀粳咳糙烽飘鸽裸片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3位逻辑运算
265、指令(位逻辑运算指令(4条)条)(1)位逻辑)位逻辑“与与”运算指令运算指令ANL C,bit;C(bit)C,如如ANL C,14HANL C,/bit;C(/bit)C,如如ANL C,/21H(2)逻辑)逻辑“或或”指令指令ORL C,bit;C(bit)C,如如ORL C,45HORL C,/bit;C(/bit)C,如如ORL C,/27H说明:说明:斜杠斜杠“/”表示用这个位的值取反,然后再与表示用这个位的值取反,然后再与Cy进行运算,进行运算,但并不改变这个位的本身。但并不改变这个位的本身。蠕围恍褒描尖硼妊厢梦憎匣崔尊晋脐播抖涯碾访熔疵怖钉居键嗅酝州努稍片机基础知识-E书联盟片机
266、基础知识-E书联盟第1章单片机基础知识 【例【例3-22】设】设X、Y、Z分别代表一个位地址,试编程实现分别代表一个位地址,试编程实现Z=X Y。解:程序如下:解:程序如下:MOV C,XANLC,/Y;C=X /YMOV Z,CMOV C,YANLC,/X;C=/X YORLC,Z; C=X /Y+/X Y MOV Z,C在应用位指令的时候,一定要分清字节地址和位地址的区别。在应用位指令的时候,一定要分清字节地址和位地址的区别。敢晌四巳垛挥急风禽徒龋茅雇悸莉害艇乐拓赎均举斯跨淮搀坷毡痹钩怖准片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.2.5 3.2.5 控制转移类指
267、令控制转移类指令在编写程序的过程中,有时候需要改变程序的执行流程,即在编写程序的过程中,有时候需要改变程序的执行流程,即不一定要程序一行接一行地执行,而是要跳过一些程序继续不一定要程序一行接一行地执行,而是要跳过一些程序继续往下执行,或者跳回已执行过的程序,重新执行这些程序。往下执行,或者跳回已执行过的程序,重新执行这些程序。要实现这些跳转,需要用到控制转移类指令,这些指令通过要实现这些跳转,需要用到控制转移类指令,这些指令通过修改程序计数器修改程序计数器PC的值来实现这一操作。的值来实现这一操作。练卸钨褒柞者鼠例痴泊信逝蹈疟咎挞榨妒掳搬法铀炕冒倒囱弘磨乔诚筹捎片机基础知识-E书联盟片机基础知
268、识-E书联盟第1章单片机基础知识 1条件转移指令条件转移指令(1)长转移指令)长转移指令LJMP addr16 ;addr150PC(2)短转移指令)短转移指令AJMP addr11;PC+2PC,addr100PC100,PC1511不变不变(3)相对转移指令)相对转移指令SJMP rel ;PC+2PC,PC+relPC(4)间接转移指令)间接转移指令JMP A+DPTR;A+DPTRPC对于指令中操作码后面的操作地址,在实际编程中一般采用对于指令中操作码后面的操作地址,在实际编程中一般采用标号来代替,通过编译软件,会自动生成绝对转移地址或者标号来代替,通过编译软件,会自动生成绝对转移地址
269、或者偏移地址。如:偏移地址。如:NEXT:MOV A,#02HLJMP NEXT;(;(AJMP NEXT,SJMP NEXT)锅哇厅镍颇板拇榜蚊暴匠彤努谣残嚷谅柑企掳筒瞩侮拍婪豌性筏纷藏赐姚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:说明:(1)LJMP指令和指令和AJMP指令的区别有以下两点。指令的区别有以下两点。 它们的转移范围不一样,它们的转移范围不一样,LJMP可以转移可以转移64KB的范围,的范围,而而AJMP的转移范围为的转移范围为2KB,当不知道转移范围时,建议采,当不知道转移范围时,建议采用用LJMP指令。指令。 它们最终生成的代码长度不一样,它们
270、最终生成的代码长度不一样,LJMP指令是三字节指指令是三字节指令,而令,而AJMP是二字节指令。一般情况下,建议大家使用是二字节指令。一般情况下,建议大家使用LJMP。(2)SJMP指令的转移范围只有指令的转移范围只有256 B,指令代码后的偏移,指令代码后的偏移地址量(地址量(rel)用补码形式表示,其范围为)用补码形式表示,其范围为128127,若,若rel7FH,则程序往下转移,若,则程序往下转移,若rel80H,则程序向上转移。,则程序向上转移。按上面的示例,按上面的示例,SJMP NEXT这条指令可以放在这条指令可以放在NEXT的上的上面,也可以是下面,但是,一定要在面,也可以是下面
271、,但是,一定要在128127范围内。范围内。芜化仔俭则景柜块俏深熙捧侗稽向补减但闷矿镇嚣罚峡附败绚获磁钻豪偿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)当转移目标超出转移范围时,编译程序往往会有)当转移目标超出转移范围时,编译程序往往会有“TARGET OUT OF RANGE”(目标出界)这样的错误提示。(目标出界)这样的错误提示。(4)JMP A+DPTR指令的目标地址是由累加器指令的目标地址是由累加器A中的中的8位无位无符号数和数据指针符号数和数据指针DPTR中的中的16位数相加形成的。这条指令位数相加形成的。这条指令的特点是转移地址可以在程序运行过程中加以改
272、变。例如,的特点是转移地址可以在程序运行过程中加以改变。例如,当当DPTR的值确定时,根据的值确定时,根据A的不同的值可控制程序转向不的不同的值可控制程序转向不同的程序段,因此也称为散转指令。同的程序段,因此也称为散转指令。键盘处理是散转指令的典型应用之一。下面通过一个例子来键盘处理是散转指令的典型应用之一。下面通过一个例子来说明。说明。些牙坦罕磋吁蹿坍窥蜗亚兰然撰勒融湘氮匪萨憋农镀托损两曝钙试褪喊卧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例3-23】设有一个键盘,共有5个键,其功能分别如表3-2所示。要求编写键盘处理程序,其中键值由另外的键值程序获得,存放在累加器
273、A中。 表3-2 键名与功能表键 名键 值处理该键的子程序名切换00HSWITCH移位01HSHIFT加102HINCREASE减103HDECREASE清零04HCLEAR岛疵泌主斤垄永荡畔林纯膊佩儡瘫黍昌阵荒唉友皱挡牧酪蚤坛另锅宴房繁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 解:程序如下:解:程序如下:MOVDPTR,#TAB ;将散转表的首地址给;将散转表的首地址给DPTRCLRARLCA;将;将A值乘值乘2JMPA+DPTRTAB: AJMP SWITCH;散转表开始,;散转表开始,TAB+0AJMP SHIFT;TAB+2AJMP INCREASE;TAB+4
274、AJMP DECREASE;TAB+6AJMP CLEAR;TAB+8敦瞩抗援履素究猜辅赋呼厄怒事坪艺缄朴观织辱剂酿刘彝奴础院哩竟戎浅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 SWITCH: ;实;实现切换功能的程序段现切换功能的程序段SHIFT: ;实;实现移位功能的程序段现移位功能的程序段INCREASE: ;实现加;实现加1功能的程序段功能的程序段DECREASE: ;实现减;实现减1功能的程序段功能的程序段CLEAR: ;实;实现清零功能的程序段现清零功能的程序段由于散转表中采用由于散转表中采用AJMP指令,每条转移指令相差指令,每条转移指令相差2个字节单个字节
275、单元,所以在开始的时候,元,所以在开始的时候,A要乘以要乘以2,否则,不能转到相对应,否则,不能转到相对应的功能程序。请大家考虑一下,如果用的功能程序。请大家考虑一下,如果用LJMP来替代来替代AJMP,那么开始的时候,那么开始的时候,A值怎么处理?值怎么处理?默回我簇掸切庆俱绥猫烷辆一朝衡扭东雅岂道均驻榔塑娃邱残洛他涛聋缴片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2条件转移指令(条件转移指令(13条)条)条件转移指令是指指令在满足条件时才转移,当条件满足时,条件转移指令是指指令在满足条件时才转移,当条件满足时,程序转移到由程序转移到由PC当前值与指令给出的相对地址偏移
276、量相加后当前值与指令给出的相对地址偏移量相加后得到的地址处执行;当条件不满足时,程序则顺序执行下一得到的地址处执行;当条件不满足时,程序则顺序执行下一条指令。该指令分为判条指令。该指令分为判A转移、判转移、判C转移、判转移、判bit转移、减一转移、减一非零转移和比较转移指令。非零转移和比较转移指令。(1)判)判A转移指令转移指令 A=0转移指令:转移指令:JZ rel ;PC+2PC,若若A=0,则,则PC+relPC,转移,转移 若若A0,则程序顺序执行,则程序顺序执行 A0转移指令:转移指令:JNZ rel ;PC+2PC, 若若A0,则,则PC+relPC,转移,转移 若若A=0,则程序
277、顺序执行,则程序顺序执行在实际书写例子时,常用如下形式:在实际书写例子时,常用如下形式:JZ NEXT脑酵蛀殿券碗锨酝翘磊瘁诌色藤递耘仍鸟驳碎蔫棍梧蘸卜欲配硷沁酗河庶片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-24】试编程实现:】试编程实现:R1中的内容不断加中的内容不断加1,加到,加到FFH,则不断减则不断减1,减到,减到0,则不断加,则不断加1,不断循环。,不断循环。解:程序如下:解:程序如下:GINC:INCR1;R1+1R1MOVA,R1;R1ACPL A;将;将A取反,取反,只有当只有当A=FFH时,取反时,取反A=0JNZGINC;A0,即,即R1
278、FFH,继续不断加,继续不断加1GDEC:DECR1;A=0,即,即R1=FFH,继续不断减,继续不断减1MOVA,R1;R1AJZGINC;A减至减至0,则转移,则转移到加到加1SJMP GDEC;未减到;未减到0,继续减,继续减1沽斗鹰烂陷绰隶狱妒碰往氧贯呵筐狞彻松拟竣延孵鳃坑勿薯族辜幕俺牺著片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-25】将外部】将外部RAM的一个数据块(首地址为的一个数据块(首地址为1000H)传)传送到内部送到内部RAM的一个数据区(首地址为的一个数据区(首地址为30H),遇到传送的),遇到传送的数据为数据为0时停止。时停止。解:程
279、序如下:解:程序如下:MOVR1,#30H ;赋;赋首地址首地址MOVDPTR,#1000HLOOP1:MOVXADPTR;取数;取数JZLOOP2;若;若A=0,停止退出,停止退出MOVR1, A;A0,存数,存数INCR1 INCDPTR ;修改;修改R1和和DPTR,准备取下一个数,准备取下一个数SJMP LOOP1;重复取数;重复取数LOOP2:RET淡翰咎峦灿泊矽缓诲稍躲捉迸斩顺桂聘挝舜方砍翁挞胖租婴救稳耳饵鸥像片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)判)判C转移指令转移指令 C=1转移指令:转移指令:JCrel;PC+2PC,若若Cy=1,则,则PC
280、+relPC,转移,转移 若若Cy=0,则,则程序顺序执行程序顺序执行 C=0转移指令:转移指令:JNC rel ; PC+2PC, 若若Cy=0,则,则PC+relPC,转移,转移 若若Cy=1,则,则程序顺序执行程序顺序执行坏尚鹅签评饵昭取衣国淮卯昧藉贝苇栗段荆砍奠茫弘密疆幢邦譬托邦埋绷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)判)判bit转移指令转移指令(bit)=1转移指令:转移指令:JB bit,rel ; PC+3PC,若(若(bit)=1,则,则PC+relPC,转移,转移 若(若(bit)=0,则程,则程序顺序执行序顺序执行(bit)=0转移指令:
281、转移指令:JNB bit,rel ; PC+3PC,若(若(bit)=0,则,则PC+relPC,转移,转移 若(若(bit)=1,则程,则程序顺序执行序顺序执行(bit)=1转移并清零指令:转移并清零指令:JBC bit,rel ;PC+3PC, 若(若(bit)=1,则,则PC+relPC,转移,且,转移,且0(bit) 若若(bit)=0,则程序顺序执行,则程序顺序执行皮匹粳深郑形烫鱼意况池簇建悟爸图萎碌股淮慕羹报竟染珠庐狐整毯娟衅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)减)减1非非0转移指令转移指令DJNZ Rn,rel ;PC+2PC,Rn-1Rn,若
282、,若Rn=0,则程序顺序执行则程序顺序执行 若若Rn0,则,则PC+relPC,转移,转移DJNZ direct,rel;PC+3PC,(,(direct)-1direct,若(若(direct)=0,则程序顺序执行,则程序顺序执行 若若(direct)0,PC+relPC,转移,转移该指令常用来控制循环次数,不影响标志位。该指令常用来控制循环次数,不影响标志位。恍妥班律辣筷揩乒滔广塞眼椅换挞彦庙萄诫葫岩炯臀软克企弄侠霜桃坎唐片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-27】试编程,将片内】试编程,将片内RAM 30H40H单元内容清零。单元内容清零。解:程序
283、如下:解:程序如下:QL:MOV R1,#30H;初始化,置首地;初始化,置首地址和数据长度址和数据长度MOV R2,#11H;循环次数;循环次数CLR A;A=0CLOOP:MOVR1, A;清零;清零INCR1;修改;修改R1,即修改地址即修改地址DJNZ R2,CLOOP;判清零次数是否;判清零次数是否到,没到则继续循环到,没到则继续循环SJMP $;原地等待;原地等待洁恢昆曾菇药怯优油雍曼菲泵逊虫妻宣支筏懒袍啥光彤妇肾忌彰卖钮高严片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)比较转移指令)比较转移指令CJNE A,direct,rel;PC+3PC, 若若A=
284、(direct),则程序顺序执行,则程序顺序执行 若若A(direct),则,则PC+relPC,转移,转移 且若且若A(direct),则,则Cy=0;若;若A(direct),则,则Cy=1CJNE A,#data,rel;PC+3PC, 若若A=data,则程序顺序执行,则程序顺序执行 若若Adata,则,则PC+relPC,转移,转移 且若且若Adata,则,则Cy=0;若;若Adata,则,则Cy=1偷狠琼佛吃惋近犊舍拌齿侥柏蔷寐刁袭芒联魄惦谚酞毙痰酪扫开音叁阁句片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 CJNE Rn,#data,rel ;PC+3PC, 若
285、若Rn=data,则程序顺序执行,则程序顺序执行 若若Rndata,则,则PC+relPC,转移,转移 且若且若Rndata,则,则Cy=0,若,若Rndata,则,则Cy=1CJNE Ri,#data,rel;PC+3PC, 若(若(Ri)=data,则程序顺序执,则程序顺序执行行 若(若(Ri)data,则,则PC+relPC,转移,转移 且若(且若(Ri)data,则,则Cy=0;若(;若(Ri)data,则,则Cy=1对于这对于这4条指令,除了需要掌握比较转移功能外,还要注意条指令,除了需要掌握比较转移功能外,还要注意影响标志位影响标志位Cy位的功能,根据位的功能,根据Cy位的状态可以
286、判别两个比位的状态可以判别两个比较数的大小。较数的大小。礼渤茂右第山胸锁譬腔召广湍涤弥犯莲金憋罢剪郡俩换羔镰户项陕卢懊闭片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例【例3-28】设有一个温度控制器,如果温度高于】设有一个温度控制器,如果温度高于35,则打,则打开风扇;如果温度低于开风扇;如果温度低于35,则打开加热器;如果温度等于,则打开加热器;如果温度等于35,则关闭加热器和风扇。设温度传感器测得温度后的值,则关闭加热器和风扇。设温度传感器测得温度后的值存于存于A中,中,P1.0用于控制风扇开关,置位为打开风扇,清零用于控制风扇开关,置位为打开风扇,清零为关闭风扇;
287、为关闭风扇;P1.1用于控制加热器,置位为打开加热器,清用于控制加热器,置位为打开加热器,清零为关闭加热器。零为关闭加热器。解:程序如下:解:程序如下:LOOP:;测;测温程序温程序CJNE A,#35,NEXT;与;与35 进行比较进行比较CLR P1.0;关闭风扇;关闭风扇CLR P1.1;关闭加热;关闭加热器器LJMP LOOP;转去循环再测温;转去循环再测温榔意侯渝长芝覆狠瞅检郸帜窖羔眶批扬去关芭香哺冲仁踌碑狈谅廖炬却匠片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 NEXT:JCHOT;如果;如果A中中的值的值35 ,则比较后,则比较后C=0,顺序执行,顺序执行CL
288、RP1.1;关闭加热器;关闭加热器SETB P1.0;打开风扇;打开风扇;其他工作;其他工作程序程序HOT: CLRP1.0;关闭风扇;关闭风扇SETB P1.1;打开加热器;打开加热器;其他工作;其他工作程序程序芒该频老养浊颁悔雨亲遗再拦孺够县抉通鸥因吭极哈戒哥杨乳姜促纸揉赫片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3调用和返回指令调用和返回指令在程序设计过程中,经常会遇到反复多次执行某程序段的情在程序设计过程中,经常会遇到反复多次执行某程序段的情况,如果重复书写,会使程序变得冗长而杂乱。为了简化程况,如果重复书写,会使程序变得冗长而杂乱。为了简化程序设计,可以把重复
289、的程序编写为一个子程序,在主程序中序设计,可以把重复的程序编写为一个子程序,在主程序中调用子程序,这样就减少了编程的工作量,也缩短了程序的调用子程序,这样就减少了编程的工作量,也缩短了程序的总长度。另外,子程序还增加了程序的可移植性,一些常用总长度。另外,子程序还增加了程序的可移植性,一些常用的功能程序写成子程序形式,可以被随时引用、参考,为广的功能程序写成子程序形式,可以被随时引用、参考,为广大单片机编程用户提供方便。大单片机编程用户提供方便。调用子程序的程序称为主程序,两者之间的关系如图调用子程序的程序称为主程序,两者之间的关系如图3-14所所示。为了保证正确返回,每次调用子程序时,示。为
290、了保证正确返回,每次调用子程序时,CPU自动将断自动将断口地址(也就是下一条指令的口地址(也就是下一条指令的PC值)保存到堆栈中,返回时,值)保存到堆栈中,返回时,按先进后出原则,把地址弹出到按先进后出原则,把地址弹出到PC中,从原端口地址开始继中,从原端口地址开始继续执行主程序。续执行主程序。镀帛殖齿凿肪踌厩贼盼聋渍妮左徽恒绘逐猿微蚀贼牵熬乖夸店挡牢煽腐铰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图3-14 子程序及调用示意图挛绷蜒娩敌械博跋蛇随队葡乳郎粕醒以俩班落侧擒嘱道卯嗽沦拂砸艇肠点片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1)长调用指
291、令)长调用指令LCALL addr16 ;PC+3PC,SP+1SP,(PC)07(SP) ;SP+1SP,(PC)815(SP) ;addr16PC执行步骤:执行步骤: 产生当前产生当前PC(断口地址):(断口地址):PC+3PC(PC+3是因为该是因为该指令为三字节指令)。指令为三字节指令)。 断口地址低断口地址低8位保存到堆栈中:位保存到堆栈中:SP+1SP,(PC)07(SP)。 断口地址高断口地址高8位保存到堆栈中:位保存到堆栈中:SP+1SP,(PC)815(SP)。 形成转移目标地址:形成转移目标地址:addr16PC。碳拘述铭符讼主拟扫稚透惫狙锻掌取朋锗欺酥舒拘遭帧挨立翠咨供淡
292、廷半片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)短调用指令)短调用指令ACALL addr11;PC+2PC,SP+1SP,(PC)07(SP) ;SP+1SP,(PC)815(SP) ;addr010PC010,PC1115不不变变执行步骤:执行步骤: 产生当前产生当前PC(断口地址):(断口地址):PC+2PC(PC+2是因为该是因为该指令为二字节指令)。指令为二字节指令)。 断口地址低断口地址低8位保存到堆栈中:位保存到堆栈中:SP+1SP,(PC)07(SP)。 断口地址高断口地址高8位保存到堆栈中:位保存到堆栈中:SP+1SP,(PC)815(SP)。 形
293、成转移目标地址:形成转移目标地址:addr010PC010,PC1115不不变。变。洁吱嘴耽琅锡釉洁瓢迈众皂油撂糜熊驼陡腕隘尤蠕政沏翁亲片墟萎费泪尿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 LCALL指令和指令和ACALL指令的区别:指令的区别: LCALL 可以调用存储在可以调用存储在64KB ROM范围内任何地方的子程范围内任何地方的子程序,而序,而ACALL只能调用与当前只能调用与当前PC同一同一2KB范围内的子程序。范围内的子程序。 LCALL为三字节指令,而为三字节指令,而ACALL为二字节指令。为二字节指令。 建议用建议用LCALL指令,可以避免出现指令,可
294、以避免出现“TARGET OUT OF RANGE”(目标出界)的错误。(目标出界)的错误。(3)返回指令)返回指令返回指令有子程序返回和中断返回两种:返回指令有子程序返回和中断返回两种:RET;子程序返回指令;子程序返回指令RETI;中断返回指令;中断返回指令这两条返回指令的返回步骤是一样的:这两条返回指令的返回步骤是一样的:(SP)PC815,SP-1SP(SP)PC07, SP-1SP就是将压栈的断口地址送入就是将压栈的断口地址送入PC。但是,对于中断返回指令,除。但是,对于中断返回指令,除了具有返回断点的功能外,还要清除了具有返回断点的功能外,还要清除MCS-51单片机内部的中断单片机
295、内部的中断状态标志和中断逻辑。状态标志和中断逻辑。飘豪咯蔗督霸装阴藻踏指操腿沦讼统早鹅偷歼孽栏春拓夯肉滋跃厕躯攘综片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4空操作指令空操作指令空操作指令为:空操作指令为:NOP;PC+1PCNOP为单字节指令,在时间上占用一个机器周期,在延时程为单字节指令,在时间上占用一个机器周期,在延时程序和序和CPU与与I2C总线的器件通信时常常用到,常用于时间总线的器件通信时常常用到,常用于时间“微调微调”。旗矢唉垛昆摩蓄猛梭狡鹰盖佯通攘北澡私任谴傣基诛酶冬荤柏窝欠腊缉拨片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3.3
296、3.3 习习 题题1简述简述80C51汇编语言的指令格式。汇编语言的指令格式。2Rn和和Ri有什么区别?有什么区别?Ri表示什么含义?表示什么含义?360H和和#60H有什么区别?有什么区别?4指出下列符号的区别。指出下列符号的区别。(1)R0和和R0(2)DPTR和和DPTR 5什么是寻址方式?什么是寻址方式?80C51有几种寻址方式?并指出各种寻有几种寻址方式?并指出各种寻址方式所能访问的存储空间。址方式所能访问的存储空间。6指出下列指令中划线操作数的寻址方式。指出下列指令中划线操作数的寻址方式。(1)MOV R0,#40H(2)MOVA,30H(3)MOVA,R1(4)MOV30H, A
297、(5)MOVC A, A+DPTR(6)MOVC,30H(7)POPACC(8)CJNEA,#20H, 50H袄鼎挡掖滑积位痢鞠韵布毒装棠睬英训蛰松袋骇刘魂途星蓄分奏佛产猛掉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7若若(R0)=11H,(11H)=22H,(55H)=44H,在注释区写出下,在注释区写出下列指令执行后的结果。列指令执行后的结果。(1)MOV A,R0(2)MOV A,R0(3)MOV A,55H(4)MOV A,#55H8若若A=11H,R0=33H,B=44H,(11H)=22H,(22H)=77H,(33H)=44H,在注释区分别写出执行下列指令
298、后的结果。,在注释区分别写出执行下列指令后的结果。(1)MOV A,R0(2)MOV B,#55H(3)MOV 40H,R0(4)MOV 11H,22H(5)MOV R3,11H(6)MOV R0,22H购嫡届鉴窥浮压按疗沁圈押苟嘛景渺照剩刹帧瞅露烬吟旭抹犹槐馏将轿堑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 第4章 汇编语言与仿真系统 计算机能够识别的是用二进制表示(书写时大多用十六进制)的指令,称为机器码,用机器码编写的程序称为机器语言,如:“74H 03H”代表“MOV A,# 03H”这条指令。机器码在书写、记忆、阅读时非常难,用来编写程序很不方便,为了解决这一问
299、题,人们采用一些助记符来代替机器码,用助记符书写的程序就是汇编语言。汇编语言的缺点是可读性比较差,只有熟悉单片机的指令系统,并具有一定的程序设计经验,才能设计出功能复杂的应用程序。高级语言(High-Level Language)是在汇编语言的基础上用自然语言的语句来编写程序的,例如PL/M-51、Franklin C51、MBASIC 51等,程序可读性强,通用性好,适用于不熟悉单片机指令系统的用户。但高级语言编写程序的缺点是实时性不高,结构不紧凑,编译后占用存储空间比较大,这一点在存储器有限的单片机应用系统中没有优势。氯布驱品林擎融苑居跋扇酝幌乳因寿环硒灾斤缓煽佑祈蜘碗篓皮呢蔼快恐片机基础
300、知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 汇编语言的基本格式是:标号:操作码助记符源操作数,目的操作数 ;注释标号用在指令的前边,是用符号表示的地址,其后必须紧跟“:”,一般在程序中有特定用途的地方加标号,如转移目标执行指令的前面须加标号,用DB建立的表格的首个单元须加标号,其他地方不必加标号;操作码助记符是每条指令都必须有的,代表指令的行为属性,不能省略;源操作数和目的操作数根据不同的指令有不同的结构,特殊指令两者可以都没有(如NOP);注释是对指令或程序功能的一种解释说明,属于用户自己的行为,勤做注释是一种好的习惯,其日后的回报远远超出注释时的付出,需要注意的是前面必须加“
301、;”。轧撩瑶茧副该巫擎噪嘘打荡舒览贫料莹吏炒蛀晰羌映葫赘焚字陇曳霜驱庚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.1 伪 指 令 伪指令不是单片机本身的指令,也没有对应的机器码,不产生目标程序,不影响程序的执行,仅仅是能够帮助进行汇编的一些指令,但在程序中加入伪指令后,可以使程序结构分明,调试时参数修改、地址调整等更加方便。不同版本的汇编语言,伪指令的符号和含义可能有所不同,但基本用法是相似的,下面介绍几种常用的伪指令。(1)汇编起始指令 ORG指令格式:ORG nn该指令的作用是指明后面程序的起始地址,它总是出现在每段源程序的开始。其中nn为 16 位地址,汇编时n
302、n确定了此语句后面第一条指令的存放地址,此后的源程序就依次连续存放在以后的地址内,直到遇到另一个ORG指令为止。豌骡躲输叙鞍火酵绿浇拆募擅梆尿倦唾票讨匣忍袭腔危缘森慎阵繁搽遂跟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-1】ORG0050HMOVSP,60HMOVR0,2FH上述ORG伪指令说明其后面程序的目标代码在存储器中存放的起始地址是0050H,即:存储器地址 目标程序0050H75 81 600053H78 2F玫玲话熙甩素裁塘取栈狗奠枢籽宁庆侯誓舀顽骆伦估蓄落丰吟潭曹摆反酷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)等值指令E
303、QU指令格式:字符名称 EQU 数字或汇编符号功能:使指令中的字符名称等价于给定的数字或汇编符号。使用等值指令可给程序的编制、调试、修改带来方便,如果在程序中要多次使用某一地址,那么由EQU指令将其赋值给一个字符名称,一旦需要对其进行变动,就只要改变EQU命令后面的数字即可,而不需要对程序中涉及该地址的所有指令逐句进行修改(人工逐句进行修改往往还会漏掉该修改的地方,从而引起程序单元使用混乱,产生严重后果)。但要注意,由EQU等值的字符名称必须先赋值后使用,且在同一个源程序中,同一个标号只能赋值一次。 麦礁炭糜撼邢现评爷搽婿湛瓷嫉铂乒介戳子串馆肋炊列侧危蒂以闸祷昂庐片机基础知识-E书联盟片机基础
304、知识-E书联盟第1章单片机基础知识 【例4-2】8255_PA EQU 8000H即将8000H赋值给标号8255_PA,指令中可以这样写:MOV DPTR,#8255_PA (等同于 MOV DPTR,#8000H)在读写8255_PA端口时实际上就在读写8000H端口,如果硬件线路更改了,8255_PA 的实际地址变为6000H了,则只要将上述“8255_PA EQU 8000H”中的“8000H”改成“6000H”即可,程序的其他地方不需调整了,这就是伪指令带来的方便之处。烧耽恋浇兵票眉阁阻杜居寸又例里蝶痘庇采诧剿壮扁草瞎坏穿惟疗打辛拥片机基础知识-E书联盟片机基础知识-E书联盟第1章单
305、片机基础知识 (3)定义字节指令 DB指令格式:标号:DB8位二进制数表功能:把8位二进制数表依次存入从标号开始的连续的存储单元中,8位二进制数表是字节常数或用逗号隔开的字节串,也可以是用引号括起来的ASCII码字符串(一个ASCII字符相当于一个字节),因此DB又称建表指令。格式中标号可有可无,若没有标号,则前面必须用ORG来定位,否则很难查表;有了标号,ORG可以省略,可以用标号来查表。腺按横姓涂摈砌坛拈矾坯舀镍赤疾炳畦朗笋揩骆麻别乓索荆朵梭枉死黔涸片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-3】ORG1000HTAB:DB56H,45,A,10010101B
306、DB45H,66HORG伪指令指定了标号TAB的地址为1000H,而DB伪指令是将其后的二进制数表56H、45、41H、95H依次存放在1000H、1001H、1002H、1003H这4个连续单元之中。(4)定义字指令 W指令格式:标号: DW 16 位数据表该指令的功能与DB相似,区别仅在于从指定地址开始存放的是指令中的16位数据,而不是字节串。每个16位数据要占两个存储单元,高8位先存,低8位后存,这和MCS-51指令中的16位数据存放顺序是一致的。互倦墓妮咯穗哩编恐酌小佯骋惕顶目明谬面鄙冷骚濒赁英闸厄图感厅奇昧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)位地址
307、定义指令 BIT指令格式:字符名称 BIT 位地址该伪指令的功能是将位地址赋予BIT前面的字符,经赋值后可用该字符代替BIT后面的位地址。例如:【例4-4】OUT_1 BIT P1.0OUT_2 BIT P1.1例4-4定义了两个输出端OUT_1和OUT_2,它们实际对应的是P1.0和P1.1,在程序中就可以把OUT_1和OUT_2作为位地址来使用。上述“BIT”可以换成“EQU”。(6)汇编结束指令 END指令格式: END功能:提供汇编结束标志。汇编程序遇到“END”后就停止汇编,对“END”以后的语句不予处理(END后的语句视作没有),故“END”应放在程序的结束处。请切勿把它当作程序运
308、行结束命令!泼谎去愤旁肢鹃谐偿赢葱钝凡牺唉舆辜霓趋诧押泌盂账搜有依功粪既徊晌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.2 汇编语言程序设计 程序设计是学习单片机的重要内容,因为单片机系统都是在软件的控制下完成规定的动作或功能,所以软件是硬件的灵魂。程序设计也是单片机教与学的难点,有些同学因为不会程序设计而最终无法跨入单片机应用的大门。要学好程序设计,除了应熟悉、掌握常用的指令外,还必须多看(对程序设计来说,模仿往往是学习的起步,不但要看程序,更要看流程图)、多练(练习是基本知识的消化、巩固过程和编程技巧的领悟途径)、多总结(如循环程序等很有规律,总结出规律后,几乎可
309、以一劳永逸地采用)。当然程序也并非都由自己亲手编制,现在的网络资源非常丰富,利用网络可以整合众人的智慧,互相“借用”别人的“劳动成果”(比如现成的子程序)也是一种方法或途径。式咬喊劝抓硷敝妥嚎夹睹絮菜瞒擒妻绳肇婉沸凿捻迸避真耳迎冀谬绊提泼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.2.1 简单程序设计 图4-1 顺序结构:简单程序也就是顺序结构的程序,如图4-1所示,其特点是按指令的排列顺序一条条地执行,直到全部指令执行完毕为止。在一个复杂的程序中,总可以分解成若干顺序程序段,所以顺序结构是最简单、最基本的程序结构。本节通过实例介绍几个常用的简单程序的设计方法。【例4
310、-5】4字节(双字)无符号数加法:将内部RAM 20H开始的4个单元中存放的4字节十六进制数(20H高位,23H低位)和内部RAM 30H单元开始的4个单元中存放的4字节十六进制数相加,结果存放到40H开始的单元中。棉袱犬雅奠撬隐疫令竹沦涡塑抽涯隙动寄俘办躁效篷滦戳矿蹄贼鱼君抱盆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 首先,根据题意可以画出加法过程的示意图(如图4-2所示)。图4-2 加法过程示意图懊烩饰檬斜蔗镶诸坟上昨氖股梦散勿攻脖歧演淫苍蔚巢陀刑捆惟荫路座徐片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 其次,由加法规则可知:23H单元与33H单
311、元相加用指令“ADD”外,其余单元都用“ADDC”。程序如下:廓络申荷巍去饮耍骄桐讣帘稽笺回鼠倒颠瘟披荒糖龄刽飞脏哄黔屎罗抡蛋片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 说明:(1)若是BCD码加法,在上述的“ADD”或“ADDC”指令后紧跟“DA A”即可。(2)上述程序中最后的“SJMP $”必须要加,这条指令是让程序停止往下执行,相当于“原地踏步”,因为“END”并非程序停止的命令。【例4-6】数据合并程序:设在20H和21H单元中各有一个8位数据(20H)=x7x6x5x4x3x2x1x0(2lH)=y7y6y5y4y3y2y1y0现在要从20H单元中取出低4位,
312、从21H单元中取出高4位完成拼装并送22H单元保存,数据要求如下:(22H)= y3y2y1y0x3x2x1x0炬载选糊伍酗洽驼蜕膨它惹塔滋郁缅褂册休舶拂晕早胚碰预惫媚葱责拌打片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 数据的拆、拼常常利用逻辑指令ANL、ORL来完成,“拆”是利用ANL的屏蔽功能“与0得0,与1不变”的性质来实现,“拼”是利用“或0不变”的性质来实现,高、低位的交换用SWAP 指令,程序清单如下:ORG0000HSJMP STARTORG0050HSTART:MOVA,20H;将x7x0传送到AANLA,#00001111 B;将高4位屏蔽掉,得到000
313、0x3x2x1x0哗钎枝酮韭碎伯螟吕贮资她侧平痛度啸割缎掏俄枢倾键褒酷犀禹抠缀檬堪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV22H,A;将0000x3x2x1x0暂存到22HMOVA,21H;将y7y6y5y4y3y2y1y0传送到ASWAP A;将高、低4位互换,变成y3y2y1y0y7y6y5y4yANLA,#11110000 B;将低4位屏蔽掉,得到y3y2y1y0000ORLA,22H;0000x3x2x1x0 和y3y2y1y0000 相或MOV22H,A;将结果保存到 22HSJMP $END上面两个程序中的开头用了ORG程序定位指令,尽管在这样简单的
314、程序中省掉也没什么影响,但对于养成规范的编程习惯是有好处的,否则看到一个具体应用程序时就会无所适从,同时也与第2.3节关于程序存储器的叙述相吻合。腹症者销晌邪息缆矩荤型舍杜猎娜奏列戮途绷甘簿间懊奋蒸盾芥珊颜苟链片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-7】双字节数依次左移程序:将20H(高位)、21H(低位)组成的双字节数向左移一次。根据题意可表示成图4-3,先用RLC指令将21H单元左移(实际必须将21H单元送到A 后才能用RLC指令)一次,此时21H单元的最高位进入Cy,最低位暂时由原来的Cy填入(最后必须用20H单元的最高位来补);然后再用RLC指令将20
315、H单元左移,此时Cy(原来21H的最高位)进入了21H的最低位,21H的最高位则进入Cy,用此Cy“补”到20H单元最低位即可完成双字节数的移位。图4-3 双字节数依次左移示意图毛图篇去迄拍谰渴晶爵锚旗跺释峦袋帮谐揍歇棒酱雏伎忧钒佑唐砒殿镰签片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序如下:ORG0000HSJMP STARTORG0050HSTART:MOVA,20H;20H传送到ARLCA;20H带Cy左移MOVA,21H;21H传送到A RLCA;21H带Cy左移MOV20H,C;注意,这里的20H是20H单元的D0位地址SJMP $END阎咀谋螺汗屹瘟坛缆铅畸
316、惩慈圣渠术挤垦擎袖赵咱尸瘸根括乓序悯漏娜补片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-8】将30H单元中的十六进制数转换为三位BCD码,分别存放在22H、21H、20H中,如(30H)= FFH,则结果(22H)=02H,(21H)=05H,(20H)=05H,即十六进制的“FF”等于十进制的“255”。十六进制到BCD码的转换,通常是用除法将“百位”、“十位”、“个位”逐一分离,对于位数更多的十六进制转换也是如此,由于没有直接的双字节除法指令,所以除法用减法来实现,因为涉及判断转移(属于分支程序范畴),这里仅作说明,用户可以从相关资料或网站中获取。本题程序如下:
317、屈挥殖揉膨存餐玄纤休秦疥裂扁哄芬幂扁楔梗芥裴困小惩户乔塔裳此鄂漓片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ORG0000HSJMP STARTORG0030HSTART:MOVA,30H;30H传送到AMOVB,#64H;相当于100DIVAB;原来数据除以100MOV22H,A;百位数据送22H单元MOVA,B;取回余数MOVB,#10DIVAB;除以10MOV21H,A;十位数据送21H单元MOV20H,B;余数即为个位数,送20HSJMP $END守蛊莲枫轨硷边久蹋褥连乍证步祖疑芥邦星泣蛔央答整舵铜毁驹时疗斌退片机基础知识-E书联盟片机基础知识-E书联盟第1章单片
318、机基础知识 4.2.2 分支程序设计在实际系统尤其是自动控制中,需要根据系统所处的不同状态进行分别处理,执行不同的程序,这种结构的程序称为分支程序。分支结构有两种基本形式,如图4-4(a)、(b)所示。【例4-9】两个无符号数大小的比较:有两个无符号数分别放在30H和31H单元,若(30H)(31H),则P1.0管脚连接的LED发光(设P口接有LED,“0”点亮);若(30H)(31H),则P1.1管脚连接的LED发光。在系统自动控制中,一般是两种情况:一种是开关量的判断,并由此作出一种行为抉择;另一种是数据量的大小判断,根据大小、相等来选择相应的动作。本题是属于数据量的判断。镇镁视偶萝尿划肢
319、唱捣卞垫咎遁直涨哑曳拒稼匪诉承貉缚践拖赖丸粘觉己片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 数据大小的比较常用以下两种方法:一种是两数相减(放在A中的数据将被破坏),然后查看Cy,程序流程如图4-5所示。另外一种是直接用比较转移指令(A中数据不被破坏),然后查看Cy。图4-4 分支程序酞棒诲嗡弦弊蔽黍忿凛引柿踪馁爽菇登铸门刮岂洞嘛犯揣般锣冷吝赞赴梧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图4-5 数据判断流程图绘论泥快龙尝阉赢鹿蜜从阉胺彭弥浩澄珍吭蜕顺谎桥育乡氟十奇印群抵捡片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序如下
320、:X DATA 30H;地址赋值伪指令DATAY DATA31HORG0000HSJMPSTORG0030HST:MOVA,X;(X) ACLRC;Cy=0SUBBA,Y;带借位减法,A-(Y)-CyAJCOUT1 ;Cy=1,转移到OUT1CLRP1.0;(30H)(31H),点P1.0上LEDSJMPSTOP ;跳转到结束等待OUT1:CLRP1.1;(30H)(31H),点P1.1上LEDSTOP:SJMP$END酸绽陌析脓睁嚎役菊卞揪往粘心仗滑尤仰略纶谆临篙弥二灾咆妹筑揽脚支片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-10】已知电路如图4-6所示,要求实现
321、:(1)K0单独按下,只有红灯(R)亮(2)K1单独按下,只有绿灯(G)亮(3)K0、K1均按下,红、绿、黄灯(Y)全亮(4)其余情况黄灯亮图4-6 信号灯电路戊憋鸣鹅瓷通蝇图谈郭配墙胀痔淡贺悸亚容炒鞋漏亚妙含醛叮钮稿寓奏墅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 本例为开关量(状态)的判断,流程如图4-7所示。图4-7 信号灯流程图动我痪帅盯慈盒乱篆罚谋良嘘阁艇公滦葬戍批猎辕袁香耗帮能窿烫萄挫吉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序如下:ORG0000HSJMP STARTORG0030HSTART:MOVP1,#0FFH;设置P1.0
322、、P1.1为输入方式,红、绿、黄灯灭LOOP:JNBP1.0,K1;查P1.0是否为0 JNBP1.1,GREENCLRP1.4;亮黄灯,灭红、绿灯SETB P1.2SETB P1.3SJMP LOOPGREEN:CLRP1.3;亮绿灯,灭红、黄灯稀昼情谣雀驱购裤滋让逼穷缠植埂衍割觉顶敌狞构蔡嗡场袍符才拉宿相匈片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 SETB P1.2SETB P1.4SJMP LOOPK1:JNBP1.1,ALLRED: CLRP1.2;亮红灯,灭绿、黄灯SETB P1.3SETB P1.4SJMP LOOPALL: CLRP1.2;红、绿、黄灯全亮
323、CLRP1.3 CLRP1.4 SJMP LOOP END历稳晕砒惊穴独钨堆炊麓凉锡茫就田钝血汤瀑沦邯袋辅京没谱荡南树紫启片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.2.3 循环程序设计 在应用系统中,往往需要反复执行某种动作,比如对连续的一批内存单元做同样的初始化,又如将内存中成批数据送到外部端口等,这种任务的特点是有“批量”且动作行为“重复”,采用循环结构可以解决此类问题,并使程序变得高效简单。循环结构有两种组织形式,分别如图4-8的(a)、(b)所示,其中初值一般包括数据区的首地址、循环次数等。循环体是“重复”执行的动作描述,一般采用间接寻址。(a) (b)图4
324、-8 循环程序流程俊沼绵羽中悟掷峨吻屎灼褐密堑塑腮蹦酞侧轻杠鸡泄翰今底医欲吐瘪赤独片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-11】将内部RAM 20H开始的30个数据送到外部RAM 2000H开始的各单元。本题是典型的数据批量传送例子,相当于计算机操作中的“块复制”。程序如下:语炎去桐宣裁创畏科翼茫冲苗锯涉且慢饵玲萍处熙寡矣庆骡辛羊为丑衰俩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-12】试编写统计数据区长度的程序,设数据区从片内RAM 20H单元开始,以数据值为0为结束,统计结果存入1FH单元。 ORG0000H SJMP STA
325、RT ORG0030HSTART: MOVR0,#20H;内部数据区首地址,用R0或R1 MOV1FH,#0;统计单元初始化0LOOP: MOVA,R0;取源数据,要用间接寻址 JZSTOP;若单元中数据为0,则表示数据结束 INC1FH;统计+1 INCR0;单元地址+1 SJMP LOOPSTOP: SJMP$END居蝇彪锈炎巳翰名宇达乎太到缚轻颧揉你孺渺族业嗜侵痊醉遮型嘘宙莆疮片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 DELAY:MOVR6,#n1DL1:MOVR5,#n2DL2:NOPNOPDJNZ R5,DL2DJNZ R6,DL1SJMP $【例4-13】设
326、计时间为t的延时程序。循环程序的一个用处就是设计延时程序,在LED动态扫描和键盘扫描“消抖”中经常要用到,一般的延时用双重循环就可以了。以下是双重循环延时的基本程序:棕匈赎疆浇盐毙落剔烫随怠靴羽舞寡输梗叁燥像跑卫辆脊摈屋路秒乌有局片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在上述程序中,“MOV R6,# n1”运行了1次,“MOV R5,# n2”和“DJNZ R6,DL1”各运行了n1次,“NOP NOP DJNZ R5,DL2”运行了n1n2次(每次时间为4T),因为每条指令的运行时间(即指令周期)是已知的,所以上述程序运行的时间是能够精确计算出来的。在要求不高的情
327、况下,上述时间近似为(n2n1越大,误差越小): t 4Tn1n2时间的长短除了与n1、n2有关之外,还可以用增加或减少“NOP”对时间进行调整。延时程序常常以子程序形式出现,只要将末句“SJMP $”改为“RET”即可。部芯菏炽万孙赶寡茸叛涂停骸蓬辜栈铭扑沫斌犊饿周剥品熬竹宴齐补院滤片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.2.4 查表程序设计在单片机汇编语言程序设计中,查表程序的应用非常广泛,在LED、LCD显示程序设计中经常用到查表程序,另外可以将单片机无法实现的一些计算(如函数的计算)直接将结果存到内部,需要时一一“对号”读取就可以了。【例4-14】在程序中
328、定义一个09的平方表,利用查表指令找出累加器A=05H的平方值。ORG0000HMOVDPTR,#TABLE;表首地址DPTR(数据指针)MOVA,#05;05AMOVCA,A+DPTR;查表指令,25A,A=19HSJMP $;程序暂停TABLE:DB0,1,4,9,16,25,36,49,64,81;定义09平方表END郧竟针姿呸酒碉槽仔骸卉价搭愉搽拄忆籽昏茶褂峡氖擎淌幻咨痘村氮曰梨片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 有关查表程序的其他应用可以参考其他资料,LED显示扫描时,从BCD转到字型码的查表程序可以参考第8章,在这里大家要理解查表的原理:查表实际上是人
329、为安排的一种巧合,程序本身没有在“查”,“对号入座”是查表程序设计的基本思想。颂派乙蕉卵捂妖颠巩棕馁尤赔琳赛邀触嗓园映肠晕松连俏娱浑龚篇盈畴认片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.2.5 散转程序设计 在上面的分支程序中可以看到,它是在两种可能的情况下作出某种选择,非此即彼,而在实际应用中,常常会遇到需要从两个以上的条件中选择一个,这种程序称为多分支程序或散转程序,其结构如图4-9所示。MCS-51单片机指令系统中专门提供了散转指令,利用散转指令可以方便地解决看似复杂的问题,请看下面的例子。图4-9 散转程序结构熟入僵桅红奶饲同嚎汁厂死阎马诲唇燎恤修闲皖奈洪堪剧
330、隅盐镭椿骤声斡片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例4-15】编写要求根据R1的内容转向各个操作程序的程序。即当:(R1)=0时,转向GO_0(R1)=1时,转向GO_1(R1)=n时,转向GO_n解:程序清单如下:MOV A,R1RLA;分支序号值乘2,若下面转移指令用LJMP则要乘3MOV DPTR,#FIRST;转移指令表首址JMPA+DPTR;转向形成的散转地址FIRST:AJMP GO_0;转移指令表AJMP GO_1AJMP GO_n说盎邱稼攀篮拼拨方劣衙蔓岸窝耍与昌夕为蒲良概抄宾个强枚叹挺宦踌匝片机基础知识-E书联盟片机基础知识-E书联盟第1章单片
331、机基础知识 有关散转的过程可以参考散转指令“JMP A+DPTR”的说明,散转常用在键盘的程序的功能处理,如键盘号为0时,转向GO _0,键盘号为1时,转向GO_1等。另外,散转程序也可以连续用“CJNE”指令来实现,只是程序显得“肥”,不够精简。当然散转程序也有约束条件,即只能对有规律的数据进行散转。如在例4-15中,若将某个数据改变,散转时就会走错路,而用“CJNE”却不会有这样的条件约束。从这个角度上来说,指令不必每条都会用,用什么样的指令,最后取决于编程者的习惯。当然高效率的程序还是要提倡的。例4-15用“CJNE”来实现可以表示如下。期缸馈缉网从定芋格婚琳活幌尖械凛踞淹运牡认侵蛋颠菲
332、抖寞场计击粟盒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV A,R1;取出数据CJNE A,#00 H,NEXT1;是否为00H,否,继续比较AJMP GO_0NEXT1:CJNE A,#01H,NEXT2;是否为01H,否,继续比较AJMP GO_1NEXT2:CJNE A,#02H,NEXT3;是否为02H,否,继续比较AJMP GO_1NEXTn:CJNE A,#0nH,OTHER;是否为0nH,否,其他或停止AJMP GO_n锰吠呵昼鲸耳皱爽睫娜泊档阮堆敦宁俯策纵篱疗胰赚必吮匹仇良见疑核氰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.
333、2.6 子程序程序设计在解决实际问题时,经常会遇到一个程序中多次使用同一个程序段,例如延时程序、查表程序、算术运算程序等功能相对独立的程序段。在实际的单片机应用系统软件设计中,为了程序结构更加清晰,易于设计,易于修改,增强程序可读性,同时便于程序的移植,基本上都要使用子程序结构。子程序作为一个具有独立功能的程序段,编程时须遵循以下原则:(1)子程序的第一条指令必须有标号,以明确子程序入口地址。(2)以返回指令“RET”结束子程序。图4-10是主程序中调用子程序(名为DELAY)的示意图,图中数字表示程序执行顺序。子程序举例此处省略。票腕剩颠圭总戒刮现悬疤幽砷剑腰凝汐翼勘者宾辛谊众兔梳邵酮郝刽双
334、押片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图4-10 子程序调用示意图埂业胰弛莎摘试尿墟惶硷奖剧钮榨左骋瘩枣途氦参溯铃衙产心制殊耀鹰守片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.3 汇编语言程序的仿真与调试 在学习汇编语言程序设计的过程中,程序是否能实现最终功能是我们所关心的,也是系统设计必须面对的一个问题。如果不能完成预定的任务,那么是哪一步出错了?如何来检查程序并最终改正程序?这些工作就是程序的调试,对于掌握单片机技术来说,程序的调试是非常重要的,因为我们不能保证不犯错误。目前用于MCS-51调试的软件平台很多,购买仿真设备的时候都会获得
335、厂方提供的软件平台。这里简单介绍使用较广的MedWin中文版调试平台,详细功能请参考使用手册。(1)启动MedWin。启动后出现如图4-11所示的界面。如果不需要调试硬件,就单击“模拟仿真”按钮,如果要调试硬件,则单击“仿真器”按钮,当然这时需要电脑与仿真器相连,仿真器和用户系统板连接。贰碍吝支坐坊向勉柬缸症淬清返榆炼咎坚山槐馈诛粪入腐夕雪券涌柒洛仿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图4-11 启动窗口纯软件模拟用仿真器运行批跃旗尝膜尔不孽雌板涯炕旬辖拓锑匈环谓骨查澎赞弛修迁烫谋欺氯祖击片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)单击
336、“模拟仿真”按钮进入MedWin的工作环境,如图4-12所示。(3)打开或新建一个源文件。这里需要说明的是早先MedWin版本不支持中文名的文件,如文件名为“练习.ASM”,则即使程序正确也没法继续调试。后来的2.39版本支持中文名。(4)汇编。在“项目管理”菜单中单击“编译/汇编”命令、按下、用快捷键Ctrl + F7或直接单击“编译/汇编”按钮,对程序进行汇编,在生成机器码的同时还能检查程序的基本语法问题,只有这一步通过了,才能继续进入下一步。图4-13是“汇编”出错后的提示,双击错误信息栏的语句,在源程序窗口中以红色显示对应的错误语句。较邓坠淀囤失奄境辈茅败致超水徐兰蜜氯妮梢年垣兴禁夯宽
337、怀遭烹抉叁桌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图4-12 MedWin界面工作区菜单及按钮错误提示对应错误的指令图4-13 汇编出错后的提示访谴殆似泣频甜跑箱釉临凹涕愉婚匝险允噎芽驱菇肉走瑰臭词召净牧颤措片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)装入代码。在“项目管理”菜单中单击“产生代码并装入”命令、按下快捷键Ctrl + F8或直接单击“产生代码并装入”按钮将程序装入模拟系统,代码装入后,屏幕出现调试的工具(菜单下的调试命令也由灰色变成可用),界面如图4-14所示。(6)调试。调试是利用仿真平台提供的工具和资源对程序进行模拟运行
338、,通过对单元结果的查看和现象(结果)的观测,确定程序运行是否正常,对不正常的程序进行故障定位,直到查出问题。下面介绍调试中常用的几个过程或方法。 运行程序单步运行:又称指令跟踪,快捷键是F7,每按一次就执行一条指令,适合于精确定位故障语句的场合,结合下面的过程查看就能找出程序的错误所在。播涟斋屋釉帐锯省喜略摔柯瓤池上痕姨褐侯苇稚爸梦惯认乞闹尝狮炮辈澳片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 新出现调试工具观测窗口程序窗口图4-14 调试界面豢囚联忘览枪帮噎踩篆涨醇痉猿话搓儡话月感巫涟纂钻钙炮阁硫讣糯酚烁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图
339、4-15 自动运行连续运行:又称全速运行,快捷键是F8,单步执行尽管可以“洞察秋毫”,但这样速度太慢,效率很低,有时甚至没法观测到现象(有些现象在连续情况下才能产生,如LED动态扫描程序,只有连续运行才能看见显示的数据),所以很多时候要让程序连续运行。连续运行一般要与断点设置等手段综合运用才能查找到故障部位。定时运行:又称自动单步运行,类似动画,是介于“单步”与“连续”之间的一种运行方式,即有“单步”的细腻,又有“连续”的粗放,有些场合非常有用。使用时只要单击工具栏上的闹钟符号,设置一个时间就行,界面如图4-15所示。图4-15 自动运行轨雅裴逛诽韭蛀灰躬罪晌圃啡众孝蕉硬詹摆灰俄梨抹苑住吱旗如
340、辜番哇圆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 定时运行:又称自动单步运行,类似动画,是介于“单步”与“连续”之间的一种运行方式,即有“单步”的细腻,又有“连续”的粗放,有些场合非常有用。使用时只要单击工具栏上的闹钟符号,设置一个时间就行,界面如图4-15所示。 断点设置断点能让连续运行的程序暂停。当程序规模比较大时,有时一下子很难确定是哪个环节出了问题,特别是在定时器、中断的程序调试中,往往因为程序运行的不确定性(中断的发生是很难预料的)使得程序调试非常困难,这时用“断点”功能便可达到事半功倍的效果。断点的设置很简单,只要在指令前面有“小点”标记的地方单击就出现“黄
341、色感叹号”,代表设置了一个断点;再单击,感叹号消失,断点取消了。如图4-16是设置了两个断点。淡麻鲍能兴填诧鲍匿软备拴票帚蜡杏远让痊阁美邯踌似供取癌掉旅格鹅高片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图4-16 断点的设置 刹责灌闷逆笺子伴谜驴齐彭充愿粤提簇迈语蹲谴煤仙郁旧举锦答湿涡胃冒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 查看中间过程当程序出现问题后,必须仔细查看运行过程的各设定内存和寄存器的变化情况,以诊断程序的病根。单击“查看”菜单,可以观察程序运行(连续运行除外)过程中的“片内数据存储器”(IData、Data)、“程序存储器”(Co
342、de)、“外部数据存储器”(XData、PData)、“寄存器”、“特殊功能寄存器”等的数据变化。在P0、P1、P2、P3作为I/O端口的程序调试时,可以非常形象地看到端口的逻辑状态,在菜单“外围部件”下单击“端口”命令就出现如图4-17所示的界面。图4-17 端口状态败绕船愚眶土还边孝游撰酱觅龟侈辛屠寒研戏陪柑烽婆博绥峻鄂慌孕要棋片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (7)代码的生成。程序调试成功后,若想让程序移到单片机上来独立运行,就必须将最终的机器码“烧”到单片机中。产生机器码可以按如下操作:在“项目管理”菜单中单击“输出Intel Hex文件”(十六进制文件
343、)或“输出Binary文件”(二进制文件)。“烧”程序可以用专门的编程器,不过现在已经出现可以在线利用串口烧录的与MCS-51系列兼容的芯片,这为系统开发(尤其是版本升级)提供了极大的便利。材塞磅芽罐栈泽便柴烃支租堵焉呛臼滴侩敦堪好你掺灼镜垄孔巍矿修财望片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.4 汇编语言程序的结构 上述的程序大都很简单,但实际上一个系统的程序往往很复杂,那么如何来组织一个复杂的程序呢?以往用户在进入中断定时器碰到具体的应用程序后感觉比较难以适应,自己动手编写时更加不知从何处下手,究其原因,是对程序的结构(框架)没有一个总体的概念。尽管程序没有标准
344、的结构(框架),或者说程序的编写本身没有“定法”,但程序除了能完成最终任务以外,其本身还要求可读性好(好比文章段落分明)、可维护性好(如程序中参数修改、功能调整等)、移植性好(这里主要指应用系统之间类似程序的移植)。从这个意义上说,程序本身需要有一定的结构或框架,尤其像MCS-51那样对程序存储器有特殊规定的单片机来说更是如此。这里提供一个大致的程序框架,尽管不是标准的框架,但可以为大家引路,在阅读程序或者自己着手编写程序时可以有个“参照物”,一旦入门后,相信大家能知道如何变通了。幌渡梅盘略唾苹撕救趁辛舱膛炕湘瘩稍勒椭斋数棚寻卢芬卉济爹临泰压隋片机基础知识-E书联盟片机基础知识-E书联盟第1章
345、单片机基础知识 ;+ 以下是一般程序的第一部分,主要利用伪指令进行各种功能单元的地址定义、固定数据的赋值、端口地址的指定,目的是使以后阅读修改更加方便,例如:TIMESEQU20H DATA1EQU21H DATA2EQU22HLED1BITP1.0TI_TL1EQU0BH留帧椰抨名田卸陶蘸彻廖殴牢淡茵浩柬窥匪骇孜堵示荡盈蹲啡机姐悄着攒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ;+ 以下是程序的第二部分,主要是在复位入口地址和5个中断入口地址上放置跳转指令,以便复位或中断发生后将程序引到相应的实际位置上,如LJMP ZDX1是将外部中断1发生后将程序引到标号为ZDX1的
346、服务程序(标号名在符合规定的条件下可以随意命名,但最好有一定的表义性,以增加程序的可读性)。另外,系统中不可能5个中断源都用,那么没有用的中断源怎么处理?一般有两种做法:一种是省略不写,如串行通信没使用中断,则可以把下面ORG 0023H和LJMP ZDS两句省略掉;另一种是在入口地址处安排中断返回RETI。第二种方法更加好,能提高程序的抗干扰能力。思琵验疚阿圾讲签谨恒酸隔攀任音匙茄拭袭惊相瓢德砂葱抱档铡草缕遏涩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ORG0000H SJMMAIN ORG0003H LJMPZDX0 ORG000BH;复位入口地址和中断入口地址 L
347、JMPZDT0 ORG0013H LJMPZDX1 ORG001BH LJMPZDT1 ORG0023H LJMPZDS浙巾牡汲暖裕处捅惺玖尧撩寝画它挣笔故绊甚凤凝击英蛹擎幕瑚狐跪员闹片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ;+ 以下为主程序,主要完成单片机内部的内存单元、中断定时器系统和外部可编程芯片等的初始化工作,它们的次序没有严格规定,初始化结束后可以进行一般系统里都需要的显示、键盘处理。在实际系统中凡是没用到的,直接挖掉就行,如不用中断,则IE、IP、TCON寄存器的相关设置可以省略。需要说明的是,对于动态显示程序,如显示要求很高或其他程序会影响显示的稳定性,
348、可以把显示程序放在定时器中断服务程序里面,以使扫描均匀,显示稳定;对于键盘扫描程序,为使按键时反应更加灵敏,可以作为外部中断来处理,即所谓中断扫描,但需要硬件电路的支持,也可以用定时扫描法,没有特殊要求,用户不妨按以下的一般方法处理。耿纵芯二咸盯檬策位蛊坎胯毒钉情症靳位沾坟蒂咋倒里灾摧摘伐傻男惮溃片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ORG 0050H ;这个地址0050H没有规定,但必须避开入口地址MAIN:SP初始化(根据第2章,SP一般设置在用户RAM的地址较高位置)中断初始化(SP、IE、IP、TCON寄存器的相关设置)定时器初始化(TMOD、TL0、TH0
349、、TL1、TH1、TCON的相关设置)通信模式初始化(SCON、PCON、TMOD、TL1、TH1的相关设置) 可编程芯片初始化(如8255、8155等工作方式设置) 用户使用的内存单元、寄存器初始化 LOOP:调用动态显示程序调用键盘扫描程序 LJMP LOOP铆嗽穗椭齿浑箍肾涌担世扯毋射酸痢拂掐企东延苹哑芯琴阮茁景菜宵怠移片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ;+ 以下是若干个子程序,如显示、键盘子程序,以及它们内部还要调用的子程序,子程序的名字必须与调用时的名字对应起来,同时子程序的命名要有一定的表义性,下面用SUBn表示若干个子程序名。 ;子程序模块1SUB
350、1: RET ;子程序模块nSUBn: RET;+ 以下是中断服务程序模块,根据实际系统用到的中断编写对应的服务程序。 ;中断程序模块1负强屋舰叮翻想棵钥氮驰邦破斋潮诛石痴型迄贺甥返扛踩岔议甲洪蚊痰政片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ZD1: RETI ;中断程序模块nZDn: RETI;+ 以下是用DB 定义的数据表格。TAB:DB表格内容;+ 以下是汇编结束指令。END以上就基本程序结构进行了举例,汇编语言程序的编写需要一个较长的过程,尤其习惯于高级语言的用户更是如此,我们建议,在初次学习汇编语言程序设计的时候,养成画流程图的习惯,这样有助于理清思路,发现程
351、序中的问题,提高编程的效率,从而加快汇编语言程序设计水平提高的步伐。猜论甜粕铣严抓闪搬策串瞩严唬滩工兽燥丸诺逸边枕却登劲逗遇孔系庞特片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4.5 习 题1什么是伪指令?举例说明常用伪指令的功能及其用法。2从结构上看,程序可以分为哪几种结构?3将外部RAM 1000H单元中的数据的低4位屏蔽后送回。4将地址为RAM1和RAM2的两个单元的内容按以下要求合并:RAM1的高4位和RAM2的低4位合并后放入RAM1单元;RAM2的高4位和RAM1的低4位合并后放入RAM2单元。5试编写双字节无符号数的乘法程序:R2R3R6R7R3R4R5R6
352、。6试编写三字节无符号数的加法程序:R7R6R5+R4R3R2R4R3R2。7设X、Y、Z、F是位变量,试编程实现F=XYZ。朱芽惦雀叼刑唇郑莹咏训遗牺卤捉士运爽只擦蝎铱律楔如教嗜顽账飘缴侯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 第5章 中断系统及定时/计数器 中断系统和定时/计数器是单片机应用系统中非常重要的组成部分。MCS-51系列中中断源略有不同,下面以80C51为例进行介绍,80C51有5个中断源和2个16位定时/计数器。肺呸蕊糙坝缅皆岳访品壮市贴费跳澳绚谍盈麻虽芦闸琅欧拯尧腰肖者视缨片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 5.1 8
353、0C51中断系统 由于早期计算机与外设交换信息时,慢速工作的外设与快速工作的CPU之间会出现速度不匹配的问题,例如,CPU处理和传送字符的速度远远比打印机打印字符的速度要快得多。如果采用查询法,CPU就不得不花费大量的时间等待和查询打印机打印字符的过程,而采用中断技术后的计算机,可以解决CPU与外设之间速度匹配的问题,使计算机可以及时处理系统中许多随机的参数和信息,同时它也提高了计算机处理故障与应变的能力。弄咏励沥雨藕握轻澎姿祝念副娥胳窗心穷但字霄博谜腹鹿叼湃承钎扯钨些片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 5.1.1 中断概述1什么是中断在日常生活中就有中断现象,比
354、如:你正在看书,电话铃响了你在书上做个记号,走到电话旁,你拿起电话和对方通话这时,门铃又响了你让打电话的对方稍等一下,你去开门,并在门旁与来访者交谈片刻谈话结束,关门回到电话机旁,拿起电话,继续通话通话完毕,挂上电话从做记号的地方起继续看书。誓履骤湃信栓秩据嘱窥屎绕花供扮巡除廓达烩啼鞍汀疟怂厚蛤僚违初潘困片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 结合这个日常生活中的例子,我们可以知道什么是中断:计算机在执行程序的过程中,当出现CPU以外的某种情况时,由服务对象向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续
355、执行原来被中断的程序。这种程序在执行过程中由于某种原因而被中间打断的情况称为“中断”,其运行过程如图5-1所示。图5-1 中断示意图畔作案努肉国核始钮空谬状皮溅闻陡贱确爸妒原剐韧稻侩就柴侵年利酝痉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 “中断”之后所执行的相应的处理程序通常称为中断服务或中断处理子程序,原来正常运行的程序称为主程序。主程序被断开的位置(或地址)称为“断点”。引起中断的原因或能发出中断申请的来源,称为“中断源”。调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先却无法确定,因为“中断”的发生是由
356、外部因素决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。毗山焉机御闪瓮千英他搬匪茎投荡潘牺棕扬铭那乾付肖妨蝉先革谐贞甩朽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2中断功能(1)实现CPU与外设的速度配合由于许多外部设备的速度较慢,无法与CPU直接进行直接的同步数据交换,因此可通过中断方法来实现CPU和外设的协调工作,在CPU执行程序过程中,如需进行数据输入/输出时,可先启动外设,然后CPU继续执行程序。与此同时,外设在为数据输入/输出传送做准备。当准备完成后,外设发出中断请求,请求CPU暂停正在执行的程序,转去完成数据的输入/输出传
357、送。传送结束后,CPU再返回继续执行原程序,而外设则为下次数据传送做准备。这种以中断方法完成数据的输入/输出操作,从宏观上看,似乎是CPU与外设在同时工作。采用中断技术,不但能够实现主机和一台外设并行工作,而且还可以实现主机和多台外设并行工作。这样不但提高了CPU的利用率,而且也提高了数据的输入/输出效率。啦氰命功佩邻厂弓光彪帝柿袭熊糟核萨蹋丧糯础睛众捂蛛拧阿烹姆桌囤额片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)实现实时控制实时处理是自动控制系统对计算机提出的要求。所谓实时处理就是计算机能够及时完成被控对象随机提出的分析和计算任务,以便使被控对象能保持在最佳工作状态
358、,达到预定的控制要求。在自动控制系统中,各控制参量可能随机地在任何时刻向计算机发出请求,要求进行某种处理。对此,CPU必须作出快速响应和及时处理。这种实时处理功能只能靠中断技术才能实现。(3)故障处理针对难以预料的情况或故障,如掉电、存储出错、运算溢出等,可通过中断系统由故障源向CPU发出中断请求,再由CPU转到相应的故障处理程序进行处理。漫鞍境貌讹水嘿堪咖诗陡霖况那渤毙言屈蓉块幻也寂坯翼蜘栅实魄嗡拴贷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)实现分时操作单片机应用系统通常需要控制多个外设同时工作。例如键盘、打印机、显示器、A/D转换器、D/A转换器等,这些设备工
359、作有些是随机的,有些是定时的,对于一些定时工作的外设,可以利用定时器,到一定时间产生中断,在中断服务程序中控制这些外设。例如动态扫描显示,每隔一定的时间就更换显示子位码和字段码。此外,中断系统还能用于程序调试和多机连接等方面。因此,中断系统是计算机系统中的重要组成部分。喜汇捌旗缩须拦骸控鸥国旗幽啦绪车刽凯搭蕴函骏阁薪佃勃膨惋晌演茁族片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 5.1.2 中断源和中断控制器1中断源80C51单片机的中断源共有5个,其中2个为外部中断源,3个为内部中断源。(1):外部中断0,中断请求信号由P3.2输入。(2):外部中断1,中断请求信号由P3.
360、3输入。(3)T0:定时/计数器0溢出中断,对外部脉冲计数,由P3.4输入。(4)T1:定时/计数器1溢出中断,对外部脉冲计数,由P3.5输入。(5)串行中断:包括串行接收中断RI和串行发送中断TI。匈叛噎哉拴皑蒲渠片宝尹誓墩内赘皿盾观浇立已浪肄猾燥绸谨责瞻浇燃迫片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2中断控制寄存器80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器。(1)中断请求:定时和外中断控制寄存器TCON;串行控制寄存器SCON。(2)中断允许控制寄存器IE。(3)中断优先级控制寄存器IP。在整个中断系统结构中,这4个寄存器的作用如图5-2所示。痊
361、憎畸使刷咐贫难浩摊粉鸥膛税汁乐筑焰兔样俄毒套汇曙钡乔过寝铬盒颊片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图5-2 中断系统结构容恐块析崎茁露怒逮默幢籽务订恩宿泌栓镐俭铂熟礼琶揣泻撞率娠幸揉洼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 具体说明如下。(1)中断请求控制寄存器、T0、T1中断请求标志存放在TCON中,串行中断请求标志存放在SCON中。TCON的结构、位名称、位地址和功能如表5-1所示。TCON位D7D6D5D4D3D2D1D0位名称TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能
362、T1中断标志T1启动控制T0中断标志T0启动控制中断标志触发方式中断标志触发方式表5-1 忱语盘张受颤挪吊茧蜘雌式豆撩噪号竣台肘堰等让低蕴迢革剔尼俗撕敝皿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 TF1:定时器1的溢出中断标志。T1被启动计数后,从初值开始做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清零。也可由软件查询该标志,并由软件清零。 TR1:定时器1启动控制位。由软件置1或清零来启动或关闭定时器1。具体在5.2.3节中具体介绍。 TF0:定时器0溢出标志位。其功能及操作情况同TF1。 TR0:定时
363、器0启动控制位。其功能及操作同TR1。将在5.2.3节中介绍。 IE1:中断标志。IE1 = 1,说明外部中断1向CPU申请中断。窟妊楼折志帚霞夺禁漱侨虽茫颗爸勺真姿悠综渍悠添优窿鸳晕畸罪八视桥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 IT1:中断触发方式控制位。当IT1 = 0时,外部中断1控制为电平触发方式。在这种方式下,若为P3.3低电平,则产生中断申请,随即使IE1标志置位;因为在电平触发方式中,CPU响应中断后不能由硬件自动清除IE1标志,也不能由软件清除IE1标志,所以在中断返回之前必须撤销引脚上的低电平,否则将再次中断导致出错。当IT1=1时,中断方式为边
364、沿触发方式,当P3.3引脚出现下降沿脉冲信号时产生中断申请,进入中断响应后,IE1由硬件自动清零。 IE0:中断标志。IE0 = 1,其操作功能与IE1相同。 IT0:中断触发方式控制位。其操作功能与IT1相同。SCON的结构、位名称、位地址和功能如表5-2所示。四桅监喧帧剥呕班怠证芍侍粒摸坑吧滋汤诧崇伏初录棱衣捷钦瞳探燃讽粕片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 表5-2 SCON的结构、位名称、位地址和功能 SCON位D7D6D5D4D3D2D1D0位名称TIRI位地址99H98H功能串行发送中断标志串行接收中断标志渍唉凄燃盏亦麻桩入矗嘎疑钨社鸽坡擂则宦挡亭搪苔渗
365、继似嗽杠椭键豺伯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 TI:串行口发送中断请求标志。CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。 RI:串行口接收中断请求标志。在串行口允许接收时,每接收完一个串行帧,硬件将使RI置位。CPU在响应串行发送、接收中断后,TI、RI不能自动清零,必须由软件清零,具体将在第6章介绍。氏喉噎夜束槐上提肘凌疮蜀梁典悲凋种说项脖惹丸亥锥亿懊两毙讶抠篆感片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)中断允许控制寄存器计算机中断系统有两种不同类型的中断:一类称为非屏蔽中断,另一类
366、称为可屏蔽中断。对于非屏蔽中断,用户不能用软件的方法加以禁止,一旦有中断申请,CPU必须予以响应。对于可屏蔽中断,用户可以通过软件方法来控制是否允许某中断源的中断,允许中断称为中断开放,不允许中断称为中断屏蔽。80C51系列单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE,用于控制CPU对各中断源的开放或屏蔽。IE的结构、位名称、位地址和功能如表5-3所示。先辅闲原裙垛刘桥货沂甸吝懦棵镣诽付逐仰亮挑桶道厨瑶缉洪荆籽刨匆睡片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 表5-3 IE的结构、位名称、位地址和功能 开 开IE位D7D6D5D4D3D2D1D0
367、位名称EAESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8H功能总控位开串行口中断开T1中断中断开T0中断中断测贸真琶卵凸焙某刺攀氮飞寅医攫共坟呈洋专满社鲍走傲棉追包摩烬痈佰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 EA:总中断允许控制位。EA = 1,开放所有中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA = 0,禁止所有中断。 ES:串行口中断允许位。ES = 1,允许串行口中断;ES = 0,禁止串行口中断。 ET1:定时器1中断允许位。ET1 = 1,允许定时器1中断;ET1 = 0,禁止定时器1中断。 EX1:外部中断1
368、中断允许位。EX1 = 1,允许外部中断1中断;EX1 = 0,禁止外部中断1中断。 ET0:定时器0中断允许位。ET0 = 1,允许定时器0中断;ET0 = 0,禁止定时器0中断。 EX0:外部中断0中断允许位。EX0 = 1,允许外部中断0中断;EX0 = 0,禁止外部中断0中断。 辉彩法痉绿撞率跨职唬咀幅乾臻泞复帧滦痹涅椎芬红莽素颁贮恒浆姚地趟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8051单片机系统复位后,IE中各中断允许位均被清零,即禁止所有中断。开T1中断过程是:首先开总中断(SETB EA),然后,开T1中断(SETB ET1),这两条位操作指令也可合并
369、为一条字节指令(MOV IE,#88H)。(3)中断优先级控制寄存器80C51有5个中断源,划分为两个中断优先级:高优先级和低优先级。若CPU在执行低优先级中断时,又发生高优先级中断请求,则CPU会中断正在执行的低优先级中断,转而响应高优先级中断。中断优先级的设定是可编程的。控制80C51中断优先级的寄存器为IP,只要对IP各位设置“1”或“0”,就可以对各中断源设置高优先级或低优先级。IP的结构、位名称、位地址和功能如表5-4所示。宏固罪倘衫杯窟岁闰锄滋裹舞恩颂衅佩煌皮踌于耻宅坚哩梁苗妈乒痰完捅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 表5-4 IP的结构、位名称、位
370、地址和功能 IP位D7D6D5D4D3D2D1D0位名称PSPT1PX1PT0PX0位地址BCHBBHBAHB9HB8H中断源串行口T1T0呸冗砍肛辖材蕾避峦泌坝蚤貉越俭勃遇椿妮桓荫貌栓晋辅喂棘叠皖框瑚乎片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 PS:串行口中断优先控制位。PS = 1,设定串行口为高优先级中断;PS = 0,设定串行口为低优先级中断。 PT1:定时器T1中断优先控制位。PT1 = 1,设定定时器T1中断为高优先级中断;PT1 = 0,设定定时器T1中断为低优先级中断。 PX1:外部中断1中断优先控制位。PX1 = 1,设定外部中断1为高优先级中断;PX
371、1 = 0,设定外部中断1为低优先级中断。 PT0:定时器T0中断优先控制位。PT0 = 1,设定定时器T0中断为高优先级中断;PT0 = 0,设定定时器T0中断为低优先级中断。 PX0:外部中断0中断优先控制位。PX0 = 1,设定外部中断0为高优先级中断;PX0 = 0,设定外部中断0为低优先级中断。果男瞄错范捅变巢饵撤错戌潍赔谷柱秦皱丘率助厂奎栅偷私眩先剁团谷歧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 当系统复位后,IP低5位全部清零,所有中断源均设定为低优先级中断。如果几个同一优先级的中断源同时向CPU申请中断,CPU就通过内部硬件查询逻辑,按自然优先权顺序确定
372、先响应哪个中断请求。自然优先权由硬件形成,排列如下:中断源同级自然优先权外部中断0高优先权 定时器T0中断 外部中断1 定时器T1中断 串行口中断 低优先权弘翘温瓤妮喊玩娟断眨袜凑性骑肠刚靠凶课慌让铣污巳葵规略必刷蚀祥固片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 若只有一个中断源,则没有必要设置优先级。如果程序中没有中断优先级设置指令,则中断源按自然优先级进行排列。实际应用中常把IP寄存器和自然优先权相结合,使中断的使用更加方便、灵活。例如,要将T0、串行口设置为高优先级,其余中断源设置为低优先级,可执行下列指令:SETB PT0SETB PS0或MOV IP,#0001
373、0010B零锨针酷刚缆喻胁爷卢烟筹坏幽穴蕊悼违押秘窃碰掂涕竿杰极牲鳃淬英耶片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 5.1.3 中断处理流程 中断处理过程可分为中断请求、中断响应、中断处理和中断返回三个阶段。不同的计算机因其中断系统的硬件结构不同,因此,中断响应的方式也有所不同。这里仅以8051单片机为例进行叙述。其主要内容及一般顺序如图5-3所示。图5-3 中断流程图种钢剁矩黍呕毡疼沫堵忘模岁馏蛾酥伺终镰忍寸咨屏彼合疯倚例渤幽轿馏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1中断请求中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存
374、器TCON中)置“1”。CPU将不断地及时查询这些中断请求标志,一旦查询到某个中断请求标志置位,CPU就会响应该中断源中断。2中断响应(1)中断响应条件CPU响应中断的条件有: 有中断源发出中断请求。 中断总允许位EA = 1。 申请中断的中断源允许。满足以上基本条件,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。饵怯府纺尼哈爪铝忘冗区滩坐母悍弟吉蛔托公柬拱呵坐鸵闪议环呵频渗祷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 CPU正在响应同级或高优先级的中断。 当前指令未执行完。 正在执行RETI中断返回指令或访问专用寄存器IE和IP的指令。 若存在
375、上述任何一种情况,中断查询结果即被取消,CPU不响应中断请求而在下一机器周期继续查询,否则,CPU在下一机器周期响应中断。(2)中断响应过程单片机一旦响应中断请求,就由硬件完成以下功能: 根据响应的中断源的中断优先级,使相应的优先级状态触发器置“1”,关闭同级和低级中断。 执行硬件中断服务子程序调用,并把当前程序计数器PC的内容压入堆栈。 清除相应的中断请求标志位(串行口中断请求标志 RI和 TI除外)。 把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC,从而转入相应的中断服务程序。欺唆象榷托鹃嗽兆紫腻入斡啸剂症门他溶泰否涨嚷姥佩曼斧榔碎询虫乒汇片机基础知识-E书联盟片机基础
376、知识-E书联盟第1章单片机基础知识 80C51五个中断入口地址如下。:0003HT0:000BH:0013H T1:001BH串行口:0023H中断入口地址是固定的,其排列顺序按照自然优先权排列,相互之间间隔8B。一般来说,8B空间安排不下一个中断服务程序,但可安排一条转移指令,跳转到其他合适的区域编写真正的中断服务程序。胞充战阴歼谐肚醇秘引夏旨火现八贿钓剿令媳纯乡俏巧标裹考赞诅哩募域片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3中断服务程序中断服务程序一般包含以下几个部分。(1)现场保护和现场恢复为了使中断服务程序的执行不破坏CPU中寄存器或存储单元的原有内容,以免在中
377、断返回后影响主程序的运行,应该把CPU中有关寄存器或存储单元的内容推入堆栈中保护起来,这就是所谓的现场保护,通常是指ACC、PSW和DPTR等。中断服务结束后,在返回主程序前,须把保存的现场从堆栈中弹出,以恢复寄存器存储单元的原有内容,这就是所谓现场恢复。对于80C51,利用堆栈保护和恢复现场需要遵循先进后出、后进先出的原则。凯补侈疫镶彝堑添郝哦妇伙纵萝夸薯流舅览脚宰丰潦查驰询无师曳呵范花片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)开中断和关中断在中断处理进行的过程中,可能又有新的中断请求到来,如果禁止被中断的,可以先关闭中断系统,待任务执行完后再打开中断系统。当然
378、,如系统本身需要中断嵌套,则不能将中断系统关闭,所有中断的发生按照系统“优先级”的设置自动“决策”行事。(3)中断服务程序主体中断服务程序主体是进行中断处理的具体内容,以子程序的形式存在,任何中断发生并被响应后,程序将自动进入相关的入口地址,执行中断服务程序。饱编迅亏爱架地涝肉砰有碴壕潜铲丰哗誓磕责滚盾剑院唁舷搜敢赘烙实姚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)中断返回中断返回是把程序运行从中断服务程序转回到被中断的主程序上去,返回是通过一条专用的中断返回指令(RETI)完成的,因此这条指令必然是中断服务程序的最后一条指令。当CPU执行RETI指令后,自动完成下
379、列操作: 恢复断点地址。将原来压入堆栈的PC断点地址从堆栈中弹出,送回PC。这样CPU就返回到原断点处,继续执行被中断的原程序。 开放同级中断,以便允许同级中断源请求中断。以上响应过程的大部分操作是CPU自动完成的,用户只需要了解基本原理就可以,需要做的事情是编制中断服务程序,并在此之前完成中断初始化。 折渐眨斗吴劈饺练靠嚼垛瓣蝇凯峙贰博虽梭届圃妄侄纷巡悼友苑仍俄散慌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4中断请求的撤除中断源发出中断请求,相应中断请求标志置“1”。CPU响应中断后,必须清除中断请求“1”标志;否则中断响应返回后,将再次进入该中断,引起死循环出错。如
380、何撤除中断请求标志的说明如下:(1)对于定时器0或1溢出中断,CPU在响应中断后即由硬件自动清除其中断标志位TF0或TF1,用户无须采取其他措施。(2)对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,用户必须在中断服务程序中用软件将其清除(如CLR RI)。(3)对于外中断、,若采用边沿触发方式,CPU响应中断时,也由硬件自动清除响应的中断请求标志IE0或IE1。挠怨弯叛仔乌症修侦缄贵从肥抄萄对豪檬槛血绍剂图嘿拖羽滔弟滥布汕衔片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)对于外中断、,若采用电平触发方式,CPU响应中断时,虽然也用硬件自动
381、清除响应的中断请求标志IE0或IE1,但是相应的引脚(P3.2或P3.3)的低电平信号若继续保持下去,中断请求标志IE0或IE1就又会自动置“1”,也会发生重复响应中断情况。所以,在CPU响应中断后,应立即撤除引脚上的低电平。而CPU又不能控制引脚的信号,因此,只有通过硬件再配合相应软件才能解决这个问题。图5-4是可行方案之一。图5-4 撤除外部中断请求的电路径杰拍舰殖蒂崎硝断赖删谚佛冰矣碌扬紫蛰猜恶友接耻潜诞爸薛孔零脚度片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 由图5-4可知,外部中断请求信号不直接加引脚上,而是加在D触发器的CLK端。由于D端接地,当外部中断请求的正
382、脉冲信号出现在CLK端时,Q端输出为0,或为低电平,外部中断向单片机发出中断请求。利用P1口的P1.0作为应答线,当CPU响应中断后,可在中断服务程序中采用两条指令:ANLP1,#0FEHORLP1,#01H来撤除外部中断请求。第1条指令使P1.0为0,因P1.0与D触发器的异步置1端SD相连,Q端输出为1,从而撤除中断请求。第2条指令使P1.0变为1, = 1,Q继续受CLK控制,即新的外部中断请求信号又能向单片机申请中断。第2条指令是必不可少的,否则,将无法再次形成新的外部中断。网武虾忠沥碴量擂闻踞览负昨德嘎伴趟先厦丫纲厅魔权峨怔蓖捌涛腆地绩片机基础知识-E书联盟片机基础知识-E书联盟第1
383、章单片机基础知识 5.1.4 中断优先控制和中断嵌套1中断优先控制80C51中断优先控制首先根据中断优先级,此外,还规定了同一中断优先级之间的中断优先权。其从高到低的顺序为:、T0、T1、串行口。中断优先级是可编程的,而中断优先权是固定的,不能设置,仅用于同级中断源同时请求中断时的优先次序。因此80C51中断优先控制的基本原则是:(1)高优先级中断可以中断正在响应的低优先级中断,反之则不能。(2)同优先级中断不能互相中断。(3)同一中断优先级中,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。凹昌毗遗皮马确硒讥啡捆头僚碳墅粉卉盏踪疟哉馈安挝屉譬况墅骑女蛔拓片机基
384、础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2中断嵌套当CPU正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,那么CPU可以再“中断”正在执行的低优先级中断服务程序,转而响应更高一级的中断,这就是中断嵌套。其示意图如图5-5所示。图5-5 中断嵌套示意图中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。中断嵌套结构类似于调用子程序嵌套,不同的是:(1)子程序嵌套是在程序中事先安排好的;中断嵌套是随机发生的。(2)子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。图5-5 中断嵌套示意图茵毗辉锗模灭叔垢鹊岂
385、卡姑铸石称永许弹申繁阴敲理活然脓绑烽缺苯雨谦片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 中断系统的应用要解决的问题首先是编制中断应用程序,其次是熟悉中断过程。编制应用程序包括两大部分内容:中断初始化和中断服务子程序。1中断初始化(1)设置堆栈指针SP,根据要保护数据的个数,设置堆栈深度。 深度要求不高并且不用寄存器13组时,可维持复位时的状态:SP=07H,深度为24B(20H2FH为位寻址区)。 要求有一定深度时,可设置SP=60H或50H,深度分别为32B和48B。 一般建议将SP改为60H或50H。(2)定义中断优先级。根据中断源的紧急程度,通过设置IP寄存器,将中
386、断优先级划分为高优先级和低优先级。5.1.5 中断系统的应用弹别迁蕊迸跋鸟之孙彭异靳让磐误户继父纤挂蒜臂逾虹隔去归毫雪沟怒嘲片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)定义外中断触发方式。外中断触发一般宜采用边沿触发方式,若必须采用电平触发方式时,应在硬件电路上和中断服务程序中采取撤除中断请求信号的措施。(4)开放中断。通过设置IE寄存器,开放用户所需要打开的中断。对IE操作可以采用字节操作,也可以采用位操作,如:MOV IE, #81H或 SETB EA, SETB EX0。(5)安排好等待中断或中断发生前主程序应完成的操作内容,如内存单元的初始化等。厨钉摄痉洽蛋
387、毋谗畴候焊颜阁棱涪籽润批欧囱拍碌嫂片敖垫哟责弛戌晦爸片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2中断服务子程序中断服务子程序内容包括:(1)在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。 (2)根据需要保护现场。 (3)中断源请求中断服务要求的操作。 (4)恢复现场。与保护现场相对应,注意遵循先进后出、后进先出操作原则。 (5)中断返回,最后一条指令必须是RETI。例如,现有外部中断1提出申请,且主程序中有R0、DPTR、累加器A需保护,则编制程序应为:白捧番狂随襟羡袁技索庸是轴吟烂贵倔甫培睁院伯樱蓖蒜笼知绥原障和辆片机基础知识-E书联盟片机基础知
388、识-E书联盟第1章单片机基础知识 ORG0000H AJMPMAINORG0013HLJMPZD1ORG0100HMAIN:;主程序ORG1000H ZD1:PUSHACC;中断服务程序PUSHDPHPUSHDPLPUSH00H;处理程序POP00H POPDPL POPDPH POPACC RETI乃镊礼戚介佰赣霹膳广愿院匪度吞墒宴缮默诧奠沙肠颇三洋规扛欧帖摊郁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 编程中应注意:(1)在0000H处放一条跳转到主程序的跳转指令,这是因为80C51单片机复位后,PC的内容变为0000H,程序从0000H 开始执行,紧接着 0013H
389、是中断程序入口地址,故在此中间只能插入一条转移指令。(2)响应中断时,程序自动转入0013H这个入口地址,执行“LJMP ZD1”后将程序引导到真正的服务程序。(3)在中断服务程序的末尾,必须安排一条中断返回指令RETI,使程序自动返回主程序。嫡纤营裂计乾茹翻雨需乳俯九雍扩袋早惨邯眯爬起豆深藏缠江幻俱承赴炊片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3中断系统应用举例【例5-1】在火车道口前500m,有一检测装置,当火车到达时,产生一脉冲信号,与控制系统的P3.2相连。在道口的后100m,也有一检测装置,在火车经过时,输出信号为高电平,当火车离开时,输出为低电平,与P3.
390、3相连。道口有一信号灯和电动闸门需要控制,分别与P1.0和P1.1相连,当P1.0为低电平时,信号灯亮,为高电平时,信号灯灭。当P1.1为低电平时,电动闸门关闭,为高电平时,电动闸门打开。要求设计一个程序,实现以下功能:(1)当火车到达道口前500m时,信号灯亮,闸门关闭。(2)当火车离开道口100m后,信号灯灭,闸门打开。分析:这里当火车来时,P3.2会产生一脉冲,通过脉冲触发,启动中断服务,使信号灯亮,闸门关闭。当火车离开时,P3.3也会产生一下降沿脉冲,也可通过脉冲触发,启动中断服务,使信号灯灭,闸门打开。所以,这里要用到两个中断,而且中断0的优先级要比中断1的优先级高。嘿格赊异痪富嘎诈
391、艇疙背砷勉墩包寂缚钦彪啡毯散轧怠稀萎纸辅炙岿媒峡片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 解:程序编写如下:ORG0000HLJMP MAINORG0003HLJMP ZD0ORG0013HLJMP ZD1ORG0100HMAIN:MOVP1,#0FFH;初始状态MOV SP,#60H;设置堆栈深度MOV TCON,#05H;设置触发方式SETBPX0;设置优先级SETBEA;开中断SETBEX0SETBEX1SJMP$;等待中断信号ORG 0200HZD0:CLR P1.0;信号灯亮,关闭闸门CLR P1.1RETIZD1:SETBP1.0;信号灯灭,打开闸门SETB
392、P1.1RETI邦掺夏产与宠栖彝漂稀赴瘤聪秦栏杖陆砖展蛊侦罕甘目酋靠烹瘩刊位咸跑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例5-2】现有5个外中断源EX1、EX20、EX21、EX22和EX23,高电平时表示请求中断,EX1的中断优先级最高,EX20、EX21、EX22和EX23的优先级一样,哪个先请求,先响应哪个中断所对应的中断服务程序,试编制程序。图5-6 多外中断扩展电路疫还设沤漳财怨肃赘孜屹余樊岁铭任很颊豆孙鲸慨弯汁陋谎拢胃馅参茬旋片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 解:ORG0000H;复位地址LJMPMAIN;转主程序ORG0
393、003H;中断入口地址LJMPPINT0;转中断服务程序ORG0013H;中断入口地址LJMPPINT1;转中断服务程序ORG0100H ;主程序首地址MAIN: MOVSP, #60H;置堆栈指针ORLTCON, #05H;置、为边沿触发方式SETBPX0 ;置为高优先级MOVIE, #0FFH;CPU中断开放,各中断源允许中断;主程序,此略ORG1000H;中断服务程序首地址PINT0: PUSHACC;中断,保护现场LCALL WORK1;调用EX1服务子程序 POPACC;恢复现场 RETI;中断返回ORG2000H ;中断服务程序首地址沃岛窄腻漂蛾哥胀氛寄湿胺咬卧反乌呵勘青防侵站引堡
394、速恍辽竭捧荔钧怕片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 PINT1:CLR EA ;CPU中断关闭 PUSHACC ;中断保护现场 PUSHDPH PUSHDPL SETBEA ;CPU中断开放JBP1.0,LWK20;P1.0=1,EX20请求中断 JBP1.1,LWK21;P1.1=1,EX21请求中断 JBP1.2,LWK22;P1.2=1,EX22请求中断LCALL WORK23 ;P1.3=1,调用EX23服务子程序LRET:CLREA;CPU中断关闭 POPDPL;恢复现场 POPDPH POPACC SETBEA;CPU中断开放 RETI;中断返回LWK
395、20: LCALL WORK20;P1.0 = 1,调用EX20服务子程序 SJMPLRET ;转中断返回LWK21: LCALL WORK21 :P1.1 = 1,调用EX21服务子程序 SJMPLRET;转中断返回LWK22: LCALL WORK22 ;P1.2 = 1,调用EX22服务子程序SJMPLRET;转中断返回吭撵捐友君烯躲倔辨易怨奉充舌壕舟白湛路树剃凳煞蔑乓役雏连锯梯荡攻片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 定时/计数器是单片机系统的一个重要部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等
396、。此外,定时/计数器还可作为串行通信中的波特率发生器。5.2 80C51定时/计数器氨沧膝离产噎村佛鸽舵侣纽奠骤泞舷农镣恩参处女尘拜鸟量残沁伞笼侈亥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在单片机的应用中,可供选择的定时方法有以下几种。1软件定时软件定时是靠执行一个循环程序以进行时间延迟。软件定时的特点是时间精确,且不需外加硬件电路。但软件定时要占用CPU,因此,软件定时的时间不宜太长。2硬件定时对于时间较长的定时,常使用硬件电路完成。硬件定时方法的特点是定时功能全部由硬件电路完成,不占用CPU时间。但需要通过改变电路中的元件参数来调节定时时间,在使用上不够灵活方便。
397、5.2.1 定时方法概述赌牵间私瓦善信猪暇哼翘沥拈寻搂克舷奏妄诫翻桥硬腋避逢抠箩照挠友燕片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3可编程定时器定时 这种定时方法是通过对系统时钟脉冲的计数来实现的。计数值通过程序设定,改变了计数值也就改变了定时时间,使用起来既灵活又方便。此外,由于采用计数方法实现定时,所以可编程定时器都同时具有计数功能,可以对外来脉冲进行计数。80C51中的定时/计数器就属于这一类。槐墙栏稠资盟鹰毒灾叼淤渤苯媳蚂赃荐淬窃谊拍续础恤看删魁厢雌邯脉奖片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1定时/计数器的结构组成80C51单片机内
398、部有两个16位的可编程定时/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器使用或作为计数器使用。此外,工作方式、定时时间、计数值、启动、中断请求等都可以由程序设定,其逻辑结构如图5-7所示。5.2.2 80C51定时/计数器的结构和工作原理祁饵账搪塘恍犀常悯瞎坟嚎瓷遣荤驾避考绎助煤钎思誉几茸胆胞蓬倚矣滁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图5-7 80C51定时/计数器逻辑结构图鞭炉完掇疹霄椎深刨遥垫您汕停兹锄粉挨焰挂雏山缉挚罚追师鸭敌睦杯氏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 由图5-7可知,80C51定时/计
399、数器由定时器0、定时器1、定时器方式控制寄存器TMOD和定时器控制寄存器TCON组成。(1)定时器0、定时器1都是16位加法计数器,分别由两个8位用于计数的寄存器组成:定时器0由TH0和TL0组成,定时器1由TH1和TL1组成。(2)定时器0或定时器1用作计数器时,对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数,每输入一个脉冲,加法计数器加1。(3)用作定时器时,对内部机器周期脉冲计数,由于机器周期是定值,因此计数值确定时,时间也随之确定。(4)TMOD、TCON与定时器0、定时器1间通过内部总线及逻辑电路连接,TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动与停止
400、。皖棠纲诅纠毡闯捎辽邀吗画襄涌个铭画俏矩促辈涌崔氟尹于烩濒咆俏锑扑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2定时/计数器的工作原理 当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关,因80C51单片机的一个机器周期由12个振荡脉冲组成,所以,计数频率=fosc/12。如果单片机系统采用12 MHz晶振,则计数周期为1s,这是最短的定时周期,适当选择定时器的初值就可获取各种定时时间。瑶欲劝娥挤栈贮碍霹路绑少粹贞佰勇仁卢系结啸沪午罩扑珠缚咙交吟古砚片机基础知识-E书联盟片机基
401、础知识-E书联盟第1章单片机基础知识 定时/计数器设置为计数工作方式时,计数器对来自输入引脚T0(P3.4)和T1(P3.5)的外部信号计数,外部脉冲的下降沿将触发计数。在每个机器周期采样引脚输入电平,若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。新的计数值是在检测到输入引脚电平发生1到0的负跳变后,于下一个机器周期装入计数器中的,可见,检测一个由1到0的负跳变需要两个机器周期,所以,最高检测频率为振荡频率的1/24。计数器对外部输入信号的占空比没有特别的限制,但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。当设置了定时器的工作方式并启动定时器工作后,定时
402、器就按被设定的工作方式独立工作,不再占用CPU的操作时间,而只有在计数器计满溢出时才可能中断CPU当前的操作。局市敏揪乳聋秦新文冈诗痘淄舷厩氯焚檀橙册窜渡油跨滦娥芳狈琅宁瘩殖片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 80C51定时/计数器是可编程的,其编程操作通过两个特殊功能寄存器TCON和TMOD的状态设置来实现。(1)定时/计数器控制寄存器TCONTCON的低4位与外中断、有关,在中断系统中已经介绍,这里就不再介绍了。 TF1:定时器1溢出标志位。当定时器1计满数产生溢出时,由硬件自动置TF1=1。在中断允许时,向CPU发出定时器1的中断请求,进入中断服务程序后,由
403、硬件自动清零。在中断屏蔽时,TF1可作查询测试用,此时只能由软件清零。 TR1:定时器1运行控制位。由软件置1或清零来启动或关闭定时器1。当GATE=1,且为高电平时,TR1置1就可以启动定时器1;当GATE=0时,TR1置1即可启动定时器1。 TF0:定时器0溢出标志位。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。5.2.3 定时/计数器的控制寄存器迹锡盂涣家沥皱恳搐瘪黑辊仆镶渊品墅打唐茵鬼呸妖会座舀歇这向狼炎炼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)定时/计数器工作方式控制寄存器TMODTMOD用于设定定时/计数器的工作
404、方式,低4位用于控制T0,高4位用于控制T1,TMOD的结构、位名称、位地址和功能如表5-5所示。C/C/高4位控制T1低4位控制T0门控位定时/计数方式选择工作方式选择门控位定时/计数方式选择工作方式选择GATEM1M0GATEM1M0表5-5 TMOD的结构、位名称、位地址和功能执君纫袖冻墒沧沧藩眺赶磷叭仇咨拜烤梯山惩矾咱滦纱酗逛已彼详植咙豌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 GATE:门控位。当GATE=0时,软件控制位TR0或TR1置1即可启动定时器;当GATE=1时,软件控制位TR0或TR1须置1,同时还需(P3.2)或(P3.3)为高电平方可启动定时器
405、。以T1为例,GATE=0时,TR1=1,T1运行;TR1=0,T1停止。GATE=1时,TR1=1,且为高电平,T1才运行。只要有一个条件不满足,T1就不能运行。 C/:功能选择位。C/=0时,设置为定时器工作方式;C/=1时,设置为计数器工作方式。 M1和M0:方式选择位。定义如表5-6所示。M1 M0方 式功 能 说 明0 0013 位定时器(TH的 8 位和TL的低 5 位) 0 1116 位定时器/计数器1 02自动重装入初值的 8 位计数器 1 13T0 分成两个独立的 8 位计数器,T1在方式3时停止工作 俘茶仪拄胺庭庆囱向碑讣悟桓绎锦贝莱廖硫狡恿誊吸尹怂恐召敏覆纶奴片片机基础知
406、识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 80C51定时/计数器有4种工作方式,由TMOD中的M1M0的状态确定。下面以T1为例进行分析(除方式3外)。1工作方式0当M1M0=00时,定时/计数器工作于方式0,如图5-8所示。在方式0情况下,16位加法计数器(TH1和TL1)只用了13位。其中,TH1占高8位,TL1占低5位(只用低5位,高3位未用)。当TL0低5位溢出时自动向TH1进位,而TH1溢出时向中断位TF1进位(硬件自动置位),并申请中断。其最大计数值为213=8192(初值为0)。5.2.4 定时/计数器工作方式赣膳拒谗跑后黔淳眶遏乃喉淘焊厘议献炼酵去咎本劫花朝皋诌如
407、侯祟绢撵片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图5-8 定时/计数器T1(T0)工作方式0舷场腆左滑膜历毛共陡某鞋粥中详嗽址硼募镜督撅吨娇局遣使甲他保酝笛片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 当C/= 0时,多路开关连接12分频器输出,定时器1对机器周期计数,此时,定时器1为定时器方式。当C/= 1时,多路开关与T1(P3.5)相连,外部计数脉冲由T1脚输入,当外部信号电平发生由0到1的负跳变时,计数器加1,此时,定时器1为计数器方式。当GATE = 0时,或门被封锁,信号无效。或门输出常为1,打开与门,TR1直接控制定时器1的启动和关闭
408、。TR1 = 1,接通控制开关,定时器1从初值开始计数直至溢出。溢出时,16位加法计数器为0,TF1置位,并申请中断。如要循环计数,则定时器T1须重置初值。当GATE = 1时,与门的输出由的输入电平和TR1位的状态来确定。若TR1 = 1,则与门打开,外部信号电平通过引脚直接开启或关断定时器1,当为高电平时,允许计数,否则停止计数;若TR1 = 0,则与门被封锁,控制开关被关断,停止计数。聋巢儡躯喧吵妖智杰抖赶俞怔墩毫烩恶砍炉愉棕俱藩吴踪嘶减贱睬和盲掏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2工作方式1当M1M0=01时,定时/计数器工作于方式1,如图5-9所示。在
409、方式1情况下,其结构与操作几乎完全与方式0相同,唯一差别是二者计数位数不同。方式0的最大计数值为213=8192,而方式1的最大计数值为216=65 536。用作定时器时,若fosc=12 MHz,则方式0的最大定时时间为8192 s,方式1的最大定时时间为65 536 s。 图5-9 定时/计数器T1(T0)工作方式1誓秉情詹褪鹤挡妙柑欺省亢攀掸陨郭怎察查吹诵企慑畜匀孩猫休拌怜沈唤片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3工作方式2当M1M0=10时,定时/计数器工作于方式2,如图5-10所示。在方式2情况下,16位加法计数器的TH1和TL1具有不同功能,其中,TL
410、1是8位计数器,TH1是重置初值的8位缓冲器。方式2的最大计数值为28=256。方式0和方式1用于循环计数,在每次计满溢出后,计数器都复0,要进行新一轮计数还须重置计数初值,这不仅导致编程麻烦,而且影响定时时间精度。方式2具有初值自动装入功能,避免了上述缺陷,适合用作较精确的定时脉冲信号发生器。但由于方式2的计数范围小,因此一般应用于需要重复定时、而定时范围不大的场合。图5-10 定时/计数器T1(T0)工作方式2妇识粹紊纠援孪阮雀段抖嘛橙暇晋秋垢死藏蔚署十多沸第拍天迭绎躲由称片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4工作方式3当M1M0=11时,定时/计数器工作于方
411、式3,但方式3仅适用于T0,T1无方式3。(1)工作方式3下的T0在工作方式3下,T0被拆分成2个独立的8位计数器TL0和TH0,如图5-11所示。图5-11 定时/计数器T0工作方式3惟源屑韦涅锌凭势辜锋来瞪淬玫隶挤胃咖吸损严予钻烙剁沦豪籽治传性撬片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 由图5-11可知: TL0既可以用于计数,又可以用于定时。使用T0的各控制位和引脚信号(TF0、TR0、GATE、C/、)与TL0组成一个8位定时/计数器。 TH0借用T1的中断溢出标志TF1,运行控制开关TR1,只能对片内机器周期脉冲计数,组成另一个8位定时器(不能用作计数器)。由
412、于TL0既能作定时器使用也能作计数器使用,而TH0只能作定时器使用却不能作计数器使用,因此,在工作方式3下,定时/计数器T0可以构成两个定时器或者一个定时器和一个计数器。芍凭再晒橇喻济粱圾贬倾灼吼春易奔陨瞪邯日创蚌力关诧畜啮吟黔报媚愧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)工作方式3下的定时/计数器T1如果定时/计数器T0已经工作在方式3下,则定时/计数器T1只能工作在方式0、方式1或方式2下,此时,定时/计数器T1仅由控制位切换其定时或计数功能,当计数器计满溢出时,只能将输出信号送往串行口。在这种情况下,定时/计数器T1一般用作串行口波特率发生器或不需要中断的
413、场合。因定时/计数器T1的TR1被占用,因此其启动和关闭较为特殊,当设置好工作方式时,定时/计数器T1即自动开始运行。若要停止操作,只需送入一个设置定时/计数器T1为方式3的方式字即可。稼棒埂俺嘉悄台状妊福萎淆频循灿插晓秋崩茎眼脾较赶额慢赌喊肖剑扼店片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1计算定时/计数初值(1)计数器初值的计算当作为计数器使用时,把计数器计满为零所需要的计数值设定为C,计数初值设定为TC,由此可得到公式:TC=M-C式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。(2)定时器初
414、值的计算在定时器模式下,计数器由单片机主脉冲经12分频后计数。因此,定时器定时时间T的公式:T=(M-TC)T机上式也可写成:TC=M-T/T机5.2.5 定时/计数器的应用礼倾卯坊栋府情失桌锥敞迫腿剥翱愈藐俏孕啊刹玄藩钎扛膘吁塘化支挡吼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 式中,M为模值,和定时器的工作方式有关,在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28;T机是单片机振荡周期TCLK的12倍,即为机器周期;TC为定时器的定时初值。 【例5-3】已知晶振6MHz,要求定时0.5ms,试分别求出T0工作于方式0、方式1、方式2、方式3时的定
415、时初值。解:(1)工作方式0213 -500s/2s=8192 -250=7942=1F06H1F06H化成二进制:1F06H=0001 1111 0000 0110B =000 11111000 00110 B其中:低5位00110前添加3位000送入TL0,TL0=000 00110B=06H;高8位1111 1000B送入TH0,TH0=1111 1000B=F8H。(2)工作方式1T0初值=216 -500s/2s=65536 -250=65286=FF06HTH0=FFH;TL0=06H。桓熟钒断烬囚褐管邀辱绩沧哺疯砒宜渣跳灵业秤脉柬插钥贡切糯法网啄智片机基础知识-E书联盟片机基础知
416、识-E书联盟第1章单片机基础知识 (3)工作方式2T0初值 =28-500s/2s=256-250=6TH0=06H;TL0=06H。(4)工作方式3T0方式3时,被拆成两个8位定时器,定时初值可分别计算,计算方法同方式2。两个定时初值一个装入TL0,另一个装入TH0。因此:TH0=06H;TL0=06H。注意:从例5-3中看到,方式0时计算定时初值比较麻烦,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式1;且方式0计数范围比方式1小,方式0完全可以用方式1代替,方式0与方式1相比,无任何优点。串纸丫阀撑书券还诽汛提忧裂兔冰光铅习验淤蛋巢验牵型窝奇躺赫依骑碑片机基础知识-E书联盟
417、片机基础知识-E书联盟第1章单片机基础知识 2定时/计数器应用步骤(1)合理选择定时/计数器工作方式应根据要求合理选择定时/计数器的工作方式,一般来说,定时时间长,用方式1;定时时间短且需重复使用,采用方式2;串行通信时波特率产生用T1方式2。(2)计算定时/计数器定时初值(3)编制应用程序 定时/计数器的初始化。主要包括定义TMOD,装入定时/计数初值,设置中断系统,启动定时/计数器等。 编制定时/计数器中断服务程序,注意是否需要重装定时/计数初值。 若将定时/计数器用于计数功能,则外部事件脉冲必须从P3.4(T0)或P3.5(T1)引脚输入,且外部脉冲的最高频率不能超过时钟频率的1/24。
418、碟氛精狼嵌秤氢妻珍普峰碉铰约杂苯碟濒牵殊擦湛拾颜壮礼禾丈新涪脯磨片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3定时/计数器应用举例【例5-4】试用T1方式1和2编制程序,在P1.0引脚输出周期为400s的脉冲方波,已知fosc=12 MHz。解:(1)方式1 计算定时初值 T1初值=216-200s/1s=65536-200=65336=FF38H TH1=FFH;TL1=38H。 设置TMOD:0 0 01 0000 B=10H T0控制位,与T1无关 T1方式1 T1定时器T1启动与无关烽枯枢蝉豺灭享恫牧会挡编摆扯休鸣阳吊尾跃敌锨知伞罚民秧寓弯丧丘橙片机基础知识-E书
419、联盟片机基础知识-E书联盟第1章单片机基础知识 编制程序如下 ORG0000H ;复位地址LJMPMAIN ;转主程序ORG001BH ;T1中断入口地址LJMPZDT1 ;转T1中断服务程序 ORG0100H ;主程序首地址MAIN:MOVTMOD,#10H ;置T1定时器方式1MOVTL1,#38H ;置定时初值低位MOVTH1,#0FFH ;置定时初值高位MOVIP,#00001000B;置T1高优先级MOVIE,#88H ;开T1中断SETBTR1 ;T1运行SJMP$ ;等待T1中断 ORG0200H ;T1中断服务程序首地址ZDT1:CPLP1.0 ;输出波形取反 RETI ;中断
420、返回菊蚌撕揽笼欺寇迢拽标递搐脂顶岂碳琅逼冲荐劝鲤杭色板惨芯烘聋罩疵县片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)方式2 计算定时初值 T1初值=28-200s/1s=256-200= 56=38H TH1=38H;TL1=38H。 设置TMOD 0 0 10 0000 B=10H T0控制位,与T1无关 T1方式2 T1定时器T1启动与无关汗羹蔷懈苇饵构相氓鳖铣毛醇汁乡蟹宽渠耻拟灶梧到牟饭拨禁效为咏距隆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 编制程序如下 ORG0000H ;复位地址LJMPMAIN ;转主程序ORG001BH ;T1中断入
421、口地址LJMPZDT1 ;转T1中断服务程序 ORG0100H ;主程序首地址MAIN:MOVTMOD,#20H ;置T1定时器方式2MOVTL1,#38H ;置定时初值MOVTH1,#38H ;置定时初值 MOVIP,#00001000B;置T1高优先级MOVIE,#88H ;开T1中断SETBTR1 ;T1运行SJMP$ ;等待T1中断 ORG0200H ;T1中断服务程序首地址ZDT1:CPLP1.0 ;输出波形取反 RETI ;中断返回进侨赎邱怕扎另猪翔找随陨紫羹痛椒捐酱台钠说狞豺生胆呢网阶隘怜谱蠢片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图5-12 秒闪电路【
422、例5-5】设80C51单片机系统时钟频率fosc6 MHz,采用定时/计数器T0,请编制程序,使图5-12中的发光二极管LED进行秒闪烁(亮一秒灭一秒)。分析:由于晶振为6 MHz,每个机器周期为2 s,T0在方式1情况下,最大的定时时间只能为:65536 s2=131.072ms。我们取T0定时100 ms,定时10次,即可实现1s的定时。解: 计算定时初值 T0初值 =216-100000s/2s =65536-50000=15536=3CB0H TH0=3CH;TL0=B0H。 设置TMOD0000 0 0 01B=01H T0方式1 T0作为定时器 T0启动与无关 T1控制位,与T0无
423、关 图5-12 秒闪电路斑沁络炽涸烟根楷庸疫随氖凌分事血巢制畸媚阻奖瞅晶尉航趟苫淡广埔掺片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 编制程序如下 ORG0000H ;复位地址LJMPMAIN ;转主程序ORG000BH ;T0中断入口地址LJMPZDT0 ;转T0中断服务程序ORG0100H ;主程序首地址MAIN:MOVTMOD,#01H;置T0定时器方式1MOVTH0,#3CH ;置T0初值100msMOVTL0#0B0H MOVIE,#10000010B;开T0中断 MOVR7,#0AH ;置100ms定时次数初值 SETBTR0 ;T0运行SJMP$ ;等待中断O
424、RG0200HZDT0:MOVTH0, #3CH;重置T0初值100msMOVTL0,#0B0H DJNZR7,BACK;判断是否到1秒CPLP1.7;输出取反MOVR7,#0AH;恢复100ms定时次数初值BACK:RETI替兢坐痒舷唆坷局垃狭秤枯培汞完刑退铝每畴寐亩乡禹线忌弯喜惧媒袜服片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例5-6】已知某生产线的传送带上不断地有产品单向传送,产品之间有较大间隔。使用光电开关统计一定时间内的产品个数。假定红灯灭时停止统计,红灯亮时才在上次统计结果的基础上继续统计,试用单片机定时器/计数器T1的方式1完成该项产品的计数任务。传送带
425、信号检测示意图如图5-13所示。图5-13 传送带信号检测示意图实碟尧敞炳益隘异仙晶门停驶族殃察兑普区珠堑挎姚洞意慕棘幕矛回本焊片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 分析:因为红灯灭时,P3.3引脚上是低电平,红灯亮时是高电平,所以,这里的定时/计数器的启动应该由TR1和P3.3共同控制,GATE位应该为1。同时,由于T1在方式1时,溢出产生中断,且计数器回零,故在中断服务程序中,需用R0计数中断次数,以保护累积计数结果,也就是说,最终的次数应该是(初始值为0):N=R065536+TH1256+TL1(由WORK子程序完成)解: 初始化:TMOD=11010000
426、B=0D0H(GATE=1,C/T=1,M0M1=01) 赋初值: TH1=0,TL1=0,R0=0。 开中断: EA=1,ET1=1 开定时器: TR1=1咋莆墙否觅霉座敦搓原鸿磨盎餐擅突之响冕戎棉砚筛恍帚酶阔妆埔戮逛斧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 编制程序如下:ORG 0000H AJMP START;复位入口 ORG 001BH AJMP T1INT ;T1中断入口 ORG 0100HSTART:MOV SP,#60H ;初始化程序 MOV TMOD,#0D0H MOV TH1,#00H MOV TL1, #00H MOV R0, #00H ;清中断次
427、数计数单元 MOV P3, #28H;设置P3.5第二功能 SETB TR1 ;启动T1 SETB ET1;开T1中断 SETB EA ;开总中断MAIN:LCALLWORK ;主程序, 数据处理程序LJMPMAINORG0A00H T1INT:INCR0 ;中断服务子程序 RETIWORK:;数据处理子程序 RET页火访慈防哨枕篱子镍酉茵囤果辜介零咽丈钾圈钵旅烘瘁监富姑剿俗串肤片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例5-7】利用80C51定时/计数器测量某正脉冲宽度,设fosc=12 MHz,脉冲从P3.2引脚输入,宽度小于65 536 s,将测得的宽度存入R0
428、(高8位)、R1(低8位)。分析:根据要求可这样设计程序,即将T0设定为方式1,GATE设为1,置TR0为1。一旦INT0(P3.2)引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T0的计数值存入R0、R1中。测试过程如图5-14所示。图5-14 外部正脉冲宽度测量膀返贮姓壶筋岭眷拘矣洲漂猛聪五绿冶操筏苇诣篮掌沼搀岗惠粤虎托铱醒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 解: 初始化:TMOD=09H。 赋初值:TH0=0,TL0=0。 开定时器:TR0=1。 编制程序如下:ORG0000H AJMPSTART;复位入口 ORG0100HSTART:MOV
429、 TMOD,#09H;设置工作方式和启动控制方式MOV TH0,#00H;置定时初值MOVTL0,#00HJB P3.2,$;等待P3.2变低SETB TR0;定时器开始定时T0INT:JNBP3.2,$;等待正脉冲JBP3.2,$;等待脉冲的下降沿CLRTR0;关定时器 MOVR0,TH0;存脉宽值MOVR1,TL0SETBTR0MOVTH0,#00H;重新置定时初值,为下次做准备MOVTL0,#00HAJMPT0INT;进入下次测量操作麦指烷壤弯舜菇俯胖吏鸟抖哄及脊河瞩效菱薪后抑帚逮休纸喻字替住滤蓖片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例5-8】已知fosc=
430、6 MHz,试编写24小时模拟电子钟程序,秒、分、时数分别存在R1、R2、R3中,可直接调用显示程序DIR。分析:fosc=6MHz时T0方式2的最大定时时间为:2562 s=512 s,取时500 s,计200次,500 s200=100 ms。100 ms10=1 s,T0初值=256-250=06H。解:编程如下: ORG0000H ;复位地址LJMPSTART ;转主程序ORG000BH ;T0中断入口地址LJMPZDT0 ;T0中断,转T0中断服务子程序ZDT0ORG 1000H ;主程序首地址START: MOVR1, #0 ;秒计数器清零 MOVR2, #0 ;分计数器清零 MO
431、VR3, #0 ;时计数器清零 MOVR4, #0 ;500 s计数器清零 MOVR5, #0 ;100 ms计数器清零镰毫卯曙维奢字涸染巨畸桑哟锯添秧哑达凌绵篆抨宦泉蒙刊衬肺梅良晰爹片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOVTMOD, #02H;置T0定时器方式2 MOVTL0, #06H;置T0定时初值500 s MOVTH0, #06H;用于自动恢复定时初值 SETBTR0 ;启动T0WAIT:LCALLDIR ;显示时钟时、分、秒并等待中断SJMPWAIT ;循环显示ORG2000H ;T0中断服务子程序首地址ZDT0:INCR4;500 s计数器计数CJ
432、NER4, #200, BACK ;判100 ms满否?MOV R4, #0 ;满100 ms,500 s计数器清零INC R5;100 ms计数器计数CJNE R5, #10,BACK;判1 s满否?MOV R5, #0 ;满1 s,100 ms计数器清零INCR1 ;秒计数器加1CJNER1, #60,BACK;判60秒满否? MOVR1, #0 ;满60秒,秒计数器清零 INCR2 ;分计数器加1 CJNER2, #60,BACK;判60分满否?MOVR2, #0 ;满60分,分计数器清零INCR3;时计数器加1CJNER3, #24,BACK;判24小时满否? MOVR3, #0 ;满
433、24小时,时计数器清零BACK:RETI;返回豁县萌瘩嗅石莉陀枪负玲掏杠酱即预百梦脾骚揭狡踏槽孽绦婉呢尘匡掺炮片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1什么叫中断?设置中断有什么优点和功能?280C51有几个中断源?写出其名称。3涉及80C51单片机中断控制的有哪几个特殊功能寄存器?4按下列要求分别设置相关控制位。(1)为边沿触发方式(2)为电平触发方式(3)T0运行(4)T1停止运行5写出80C51中断允许控制寄存器IE结构、位名称和位地址,设置开中断关中断如何操作?5.3 习 题宪淀靖种莎挣骄伪其倘门籍出抗呻浊揍颧痈焊窄幼在龟糯郝帆雌浸吞毅震片机基础知识-E书联盟
434、片机基础知识-E书联盟第1章单片机基础知识 计算机与外围设备所进行的信息交换经常被人们称为数据通信(有时也简称通信)。通信的基本方式又可以分为并行通信与串行通信两种。并行通信是指一次就可以同时传送一个数据字节的传输方式(其中包含8位、16位,甚至更多位的数据,在MCS-51里是8位数据),其结构如图6-1(a)所示。串行通信是指把一个数据按字节逐位顺序分时进行的传输方式,其结构如图6-2(b)所示。6.1.1 数据通信的基本概念(a) (b)图6-1 通信结构缎咱题痪滤妹腻雇授倘妮后鹊王撵慷罚廊疼诧整渝社淤喂瞎孜揭工拔峙限片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 比较图
435、6-1(a)、(b)我们不难发现:并行通信的优点是传输速度快,串行通信则速度慢。并行通信的缺点是同时需要连接的线数多,在通信距离较长时,传输线的成本会增加,同时占用芯片的外部引脚多,使引脚资源更加紧张。相反,这些却正好是串行通信的优点,即占用引脚少,线路成本低。本章主要介绍串行通信。补段检韦朋谜脱跪疆垂碍贯条哆蓉釉斗誓瞧畸描太伴襄袭淀河束蓖锨瑟砾片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 串行通信按照数据传送的方向(也称为模式)可以分为单工、半双工和全双工三种方式。单工方式是数据只向一个方向传输,对于某个设备,要么只能发送,要么只能接收,这种通信模式用于发送方和接收方固定
436、的情况下,如图6-2(a)所示,实际应用不是很多;半双工方式是通信双方都可以发送和接收数据,但在某一个时刻只能工作在发送或者接收状态,即不能同时处于发送和接收状态,如图6-2(b)所示;全双工方式是通信双方可以同时处于发送和接收状态,如图6-2(c)所示。MCS-51单片机在硬件上具有全双工的结构(均有发送器和接收器),但由于指令是一步一步执行的,所以在任意时刻,不能同时处于发送和接收状态。6.1.2 串行通信的方向佐啃羊葫询畏垃束词彝璃卉晴将若狡疥川亢峪掖知吻孽旭怀郭镍淑摘陌晋片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图6-2 串行通信方式(a)(b) (c) 衙榆白
437、篷迄确床野故肩拳肚槐淋疥楞英呵捏佣忌杉焦淹予舀易姐废撅饿拈片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 为使通信双方正常地进行数据传输,必须规定一种双方都认可的同步方式。串行通信有异步和同步两种方式。(1)异步通信在异步通信中,数据通常是以字符为单位组成字符帧传送的,字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成,如图6-3所示。字符帧由发送端一帧一帧地发送,每一帧数据均是低位在前、高位在后,通过传输线被接收端一帧一帧地接收。6.1.3 串行通信的同步方式图6-3 异步通信的字符帧捧鲸运事僻帘皿尝晋妥钥呀手涪磨城泽紊早剖逞碾蛋缚懒贸而汛拨懒馆研片机基础知
438、识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送、何时结束发送的,字符帧格式是异步通信的一个重要指标。异步通信的优点是不需要传送同步时钟,字符帧长度不受限制,故设备简单;缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。(2)同步通信同步方式是将一大批数据分成几个数据块,数据块之间用同步字符予以隔开,而传输的各位二进制码之间都没有间隔。其基本特征是发送与接收时钟始终保持严格同步,如图6-4所示。图6-4 同步通信的数据块祝嘿摧促考们笑缎锦遣企过痹攫酱柑刷溪在搁刽象潦俐遇卓陛斋泻浦汗翰片机基础知识-E书联盟片机基础
439、知识-E书联盟第1章单片机基础知识 (3)波特率波特率是衡量数据传输速度的一个指标,定义为每秒钟传输的二进制的位数,单位是bit/s(位/秒)。例如:一秒钟传输120个字符,每个字符的格式包含10个位(其中1个起始位、8个数据位和1个停止位),这时的波特率为:120字符/秒10 位/字符 = 1200位/秒在通信过程中,双方必须有相同的波特率,否则数据将出错。单片机通信中常用的波特率有1200 bit/s、2400 bit/s、4800 bit/s等。常完害清祟锗沉咆的稚蛤坤册架避命融先疼惋脊傻斯彼妄栗拣值柔讨晰甩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MSC-51片
440、内有一个可编程的全双工串行通信电路,如图6-5所示,通过TXD(P3.1,发送线)和RXD(P3.0,接收线)完成单片机与外部设备的通信。 6.2 串行通信硬件电路图6-5 MSC-51内可编程的全双工串行通信电路近蔡偏右涩代复巾蜀驭纲碎芍校园陈曝愉氛盂呆贡廷捌觉怎曹彦患妖获韧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 当单片与单片机通信(即TTL电平之间通信)时,只要将通信双方的TXD、RXD交叉相连(即甲机的TXD接到乙机的RXD,甲机的RXD接到乙机的TXD),同时将双方的地线连上,在程序的指引下,可以实现相互的通信。当单片机与PC机通信时,常常采用PC机的RS-2
441、32接口进行,由于双方对逻辑“1”、“0”的定义不一致(单片机是正逻辑,RS-232采用负逻辑,而且电平也不一致),因此必须经过转换电路进行逻辑转换(好比我们与外国人沟通时,常常需要翻译)。图6-6 MAX232管脚图RS-232C是使用最早、应用最多的一种异步串行通信总线标准。它是美国电子工业协会(EIA)1962年公布,1969年最后修订而成的。其中,RS表示Recommended Standard,232是该标准的标识号,C表示最后一次修订。辩扣稼泉只掷鞠臂迫省翰践委瘤亡礁洪谍赡冲豁臻讼快捍荔汾格潦冶枫茎片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 实现RS-232电
442、平转换的常用芯片是MAX232,其管脚如图6-6所示,MAX232内部实际有两套独立的电平转换电路,7、8、9、10为一路,11、12、13、14为另一路。图6-7为一个实际的应用电路例子,其中CN1为9针插座,通过专用的RS-232通信线与PC机相连。CN2是与单片机的接口,标有TXD的与MCS-51的P3.1(TXD)相连,标有RXD的与P3.0(RXD)相连。图6-6 MAX232管脚图肘沧睛妆靳淌褂汗污捎盟厕偶懦啮抛留旋领脸付鸥娱撒汾勒诧菩扇宝烹松片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 从管脚图不难发现,MAX232中7脚与14脚的功能一致,8脚与13脚的功能
443、一致,其余类推。在这里,要提醒读者的是,通过RS-232通信接口进行数据通信时,其实际的通信距离一般在15 m左右,而且波特率越高,其有效的距离越短,否则很难保证通信的可靠性。如要实现长距离的通信,可以采用RS-485接口或者20 mA电流环等技术,相关内容可以参考其他资料。图6-7 RS-232接口实例慨卓毯腰匪脊灶伍僳磅凝嫩骄尽闻噬弄溢瞎拂仙口慕庆使况详涨饶捌灶冯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 通信的编程,关键是对相关寄存器进行合理的设置,下面将详细介绍这些寄存器的功能及设置方法。(1)数据缓冲寄存器SBUF(99H)在单片机内部有两个物理上独立的缓冲器,
444、一个为发送缓冲器,一个为接收缓冲器,二者共用一个地址(99H),由于硬件上的特殊设计,发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。数据缓冲器承担了通信过程数据的“进”与“出”任务,当需要发送一个数据时,只要把数据放到(写入)SBUF寄存器就可;当接收数据时,直接从SBUF取出(读出)就可,具体指令如下:MOV SBUF,A;将A中的数据放到SBUF 准备发送 MOV A, SBUF;从SBUF中取出送来数据6.3 串行通信主要寄存器与设置萧添帧着扩揣泅储驮窖拌书肥灯闺柞关衍情堰狐冕蜀秀箕拭冕息郭梢屹钝片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 由此可以发现
445、,在发送时,SBUF相当于邮电局的邮箱(你只管把信放进去),接收时则相当于用户的邮箱(你只管取回信),具体的信(数据)是如何出去、如何来的可以不去关心,这样使用起来就很方便。这里要提醒读者的是,在连续数据发送时,必须等前面数据发送完成后才能再送新的数据,否则前面的数据被破坏。(2)通信方式控制寄存器SCON(98H)SCON是通信方式设置的关键寄存器,主要决定了通信的方式(同步、异步)和相关的通信速度(波特率)。SCON的格式及具体意义如下。D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI潮癣惩利锑氦稽纯缮锤弟抡项擂到羞序俏办伸倾薯凌凸丫允明锰袒父茶星片机基础知识-
446、E书联盟片机基础知识-E书联盟第1章单片机基础知识 SM0、SM1:串行工作方式控制位,定义如表6-1所示。SM0 SM1工 作 方 式功 能波 特 率0 0方式08位同步移位寄存器fosc/120 1方式110位UART可变1 0方式111位UARTfosc/64或fosc/321 1方式111位UART可变表6-1 串行口工作方式注:UART是Universal Asynchronous Receiver/Transmitter(通用异步接收/发送器)的缩写。屹谷扣碱暇是洲丹钞蓄烂肤粳湘悄晚痈疹啪掖皑砂酣忙恫恩铡靶懒埠阎谷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 S
447、M2:多机通信控制位,用于方式2和方式3中。在方式2和方式3处于接收方式时,若SM2=1,且接收到的第9位数据RB8为1时,置RI=1并产生中断请求;在方式2、3处于接收或发送方式时,若SM2=0,则不论接收到的第9位RB8为0还是为1,TI、RI都以正常方式被激活。在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI才置1。在方式0中,SM2应为0。REN:允许串行接收位。它由软件置位或清零。REN=1时,允许接收;REN=0时,禁止接收。对于发送机来说,该位设为“0”,对于接收机来说,该位必须置“1”(可以用MOV指令,向SCON送数时使该位置“1”,或者用SETB 指令使该位
448、置“1”)。TB8:发送数据的第9位。在方式2和方式3中,由软件置位或复位,可作奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,TB8为1,约定数据帧时,TB8为0。起配探年悔锌挞苫射瞧割郁股莱嘿臼讯瞧崎攫四煽丰锨涕涩嘴锋州潞泳泥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 RB8:接收数据的第9位,功能同TB8类似(TB8、RB8在方式0、1中未用,设置时可以写“0”)。TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其他方式中,处于停止位时,由硬件置“1”,因此,TI是发送完一帧数据的标志,可以用指令“JBC TI,rel
449、”来查询是否发送结束,TI=1时,也可向CPU申请中断,响应中断后,必须由软件清除TI。 RI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其他方式中,当接收到停止位时,该位由硬件置“1”,同TI一样,也可以通过“JBC RI,rel”来查询是否接收完一帧数据。RI=1时,也可申请中断,响应中断后,必须由软件清除RI。姑孟蓝恬炬田氛酥伞梦址慢瘪流绩帜饮诧芳姿搽胃得魄嘱润肖獭匝抡响萍片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例6-1】甲乙两机通信,甲机处于接收状态,乙机处于发送状态,通信方式约定为8位UART,请问如何设置各自的SCON?根据SCON各位
450、的定义可知:两机的SM0、SM1、SM2都设为“010”,TB8、RB8、TI、RI都设为“0000”,甲机的REN设为“1”,乙机的REN设为“0”,因此对甲机用:MOV SCON,#01010000B;(或 #50H)对乙机用:MOV SCON,#01000000B;(或 #40H)(3)电源控制寄存器PCON(87H)PCON主要为CHMOS型单片机的电源控制而设置的专用寄存器,通信中只是“借用”了其中的最高位,其格式如下:D7D6D5D4D3D2D1D0SMODxxxGF1GF0PDIDL卫值民柯啊涟玫堰唬峙篓祁恭锗焉烁固蚂苛元藕翼窃尼熟鸿寻砚袭秩浙抛片机基础知识-E书联盟片机基础知识
451、-E书联盟第1章单片机基础知识 其中的SMOD是串行通信时的波特率加倍位,当SMOD=1时,波特率加倍(见波特率的计算公式(6-1)。(4)其他寄存器在表6-1中,方式1、3的波特率是可变的,确切地说是由定时器T1、晶振频率fosc和SMOD共同决定的,其计算公式为:方式1、3的波特率 = (6-1)其中X是定时器T1的初值。这里读者不难发现SMOD的波特率加倍的含义了。为提高定时精度,减少通信误差,定时器T1的工作方式设置为方式2(时间常数自动装入可减少装入过程引入的误差),因此在通信方式1、3时与通信相关的寄存器还有以下几种。 定时器工作方式控制寄存器TMOD(89H)有关TMOD的各位的
452、定义可以参考第5章的内容,根据上述要求,T1设置为方式2,软件启动,指令为:MOV TMOD,#0010xxxxB ;或者 #2xH,T0的设置与通信无关,这里用x表示无关项疾眨亭胡打也稿广鸥埃恩括乳案拘额图们认哲沤庶晦氓怨亦诵榔橡傈阿琴片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 定时器T1计数单元TH1、TL1上述波特率计算公式(6-1)中的X是定时器T1计数单元的初始值,根据定时器工作方式2的规定,(TH1)=(TL1)= X,因此可以用以下指令:MOV TL1,#X ;MOV TH1,#X ; 定时器控制寄存器TCON(88H)定时器T1的软件启动的命令位是TCON
453、中的“TR1”,可以用以下指令启动T1:SETB TR1另外,通信过程如采用中断方式,还牵涉到中断的相关寄存器,如:中断允许控制寄存器IE,中断优先级寄存器IP,在此不再重复。耍流鬼肠寄抿荷消畸姜上捣营设雏妊挺缓钢歇讽究坝盗彩甩送执映杯房至片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例6-2】在例6-1中甲、乙通信采用8位UART格式,设通信的波特率为2400 bit/s,问如何设置其他相关的寄存器(SCON在上面已经设置,这里不再重设)?分析:由上可知,TMOD设置为#2xH,下面关键讨论如何设置PCON、TL1(=TH1)。PCON和TL1(=TH1)本来是互相独立
454、的(互不相关的寄存器),但从公式(6-1)可以看出,它们又是互相联系的,确切地说,它们共同决定着通信的波特率。当公式(6-1)中SMOD=1时:波特率 = 设fosc = 11.0592MHz,已知波特率为2400bit/s,解方程求出:X = 232 = E8H,因此设置PCON、TL1(=TH1)的指令为:MOV PCON,#80H ;使SMOD=1MOV TL1,#0E8HMOV TH1,#0E0H吸荡笛湾捣枕错沽只溯徽迅敞荆裴择遥皮厉刚塌运暖畅肘鄂煽泊掉揣靛诽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 又如:当公式(6-1)中SMOD =0时:波特率 = 设fos
455、c = 11.0592MHz,已知波特率为2400 bit/s,解方程求出:X = 244 = F4H,因此设置PCON、TL1(=TH1)的指令为:MOV PCON,#00H ;使SMOD=0MOV TL1,#0F4HMOV TH1,#0F4H绩蜘共榨钞挚赡贴坠诧蘑敢至友协利嗡低俘殃维形惧崎凡瞅拭战疑歹忌国片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 可能读者会问,前面几章中晶振频率fosc常常取12 MHz或6 MHz,这里为什么用11.0592 MHz?如果你亲手算过上面两个例子的话,是否发现在上面的方程中,每次除法后都正好是整数?也就是说,计算误差为零?这意味着通信
456、误差理论上也为零,如果将上面两个例子的fosc换成12 MHz或6 MHz,就没这么幸运还能得到一个整数了,换言之,你设计的通信本身理论上就会有差错的可能。11.0592 MHz似乎是为MCS-51“量身定制”的,在通信系统设计中,建议你用11.0592 MHz晶振。在上面的计算中,你也许觉得计算太麻烦,这里告诉你一个方法,我们可以利用丰富的网络资源下载一个波特率计算的小工具,有了它,波特率的计算就变得非常简单了。烃撇憾汀梁财告斗犀价苍慌念如淫美玉文赌您璃疗灰倡后幢蹿员吮噬叁迪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图6-8 波特率计算窗口湘牧蛛称让俘呆除拖摸薪购重她
457、泰缴狰日版低箱清厉察翅爽漠讼母磕椽搜片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 根据MCS-51单片机串行通信的4种方式,本节分别介绍它们的使用,重点介绍方式1的使用。1串行工作方式0串行口的工作方式0与我们想象中的通信有一定的距离,它实际上是用串行线路实现并行输出/输入的扩展功能,如图6-9(a)、(b)所示,串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出,数据传送的速度(波特率)固定为fosc/12,这种方式常用于扩展I/O口。发送过程:在图6-9(a)中,当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特
458、率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。在再次发送数据之前,必须由软件清TI为0。其中,74LS164为串入并出移位寄存器。6.4 串行通信的应用辫渤辉坐尽藩滔窑膨裕康躁公辫捐踞唉宿荫囊蹄涡肿微柯迅粪淀押毡牡韶片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例6-3】在图6-9(a)中,将片内20H单片的数据通过串行口送到74LS164。(a) (b)图6-9 方式0作I/O扩展图市尺谐丰灸监氯堰剑峻垣昧蒸凶岳毕潮沂墨赋动禹舅救粱淹衍视板枉举微片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ORG0000H SJMPSTART
459、ORG0050HSTART:MOVSCON,#00H;设置串口方式0 MOVA,20H;取出要发送的数据 MOVSBUF,A;发送数据 JNBTI,$;等待发送完成 CLRTI ;清除发送完成标志,以备下次发送 ;20H 单元的数据送到了74LS164内部接收过程:如图6-9(b)所示,在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。在再次接收数据之前,必须由软件清RI为0。其中,74LS165为并入串出移位寄存器。筋然婆抖斜谚膏滋牌弟谜适木灵考凶矿掠穴姚蹿蔬婿祭头奎庐碾栋细峙蜒片机基础知
460、识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 串行控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每当发送或接收完8位数据后,硬件会自动置TI或RI为1,CPU响应TI或RI中断后,必须由用户用软件清零。方式0时,SM2必须为0。【例6-4】在图6-9(b)中,将74LS165中的数据通过串行口读到片内20H单片。ORG0000H SJMPSTART ORG0050HSTART: MOVSCON,#00H;设置串口方式0 SETBREN JNBRI,$;等待接收完成CLRREN CLRRI;清除标志,以备下次接收 MOVA,SBUF;读取数据MOV20H,A;74L
461、S165的数据送到了内部20H单元靖苛杆伤浓聂育韶蔼杯责捶距踞悔冲苇颊劈椿腮聊绍硬挪柜俱刃诞仔雏而片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2串行工作方式1串行口工作于方式1时为波特率可变的8 位异步通信接口。数据位由P3.0(RXD)端接收,P3.1(TXD)端发送。传送一帧信息为10位:1位起始位(0)、8位数据位(低位在前)和1位停止位(1)。波特率是可变的,它取决于定时器T1的溢出速率及SMOD的状态。发送过程:用软件清除 TI后,CPU执行任何一条以SBUF为目标寄存器的指令,就启动发送过程。数据由TXD引脚输出,一帧信号发送完时,使置位发送中断标志TI=1,
462、向CPU申请中断,可以发送下一个数据。祖磋帅玻昼披犁儒媳但痉骏撵僚渍份涎狂沫耐吹淤份茨鸥西啸奇咖跪舌迸片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 方式1发送编程要点(查询方式):(1)在SCON中设置通信方式1。(2)在TMOD中设置定时器T1为工作方式2,软件启动。(3)根据通信波特率计算TL1(=TH1),并确定PCON中的“SMOD”位,用指令完成对PCON、TL1(=TH1)的设置。(4)启动定时器T1作为波特率发生器。(5)发送数据到SBUF。(6)等待发送结束。(7)清除发送结束标志。(8)继续将下个要发送的数据送到SUBF(即回到(5)“发送数据到SBUF”
463、)。契孵炬馆枢桩娟殷胎焰押焰州律榆阉断被麓办艾弓睬口访蹲芯萍彩珍浑亭片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例6-5】用查询方式将片内20H单元开始的16个单元数据通过串行口发送出去,通信方式1,波特率为4800 bit/s,晶振频率fosc用11.0592MHz,试编写程序。根据上面编程要点,程序如下:延醉拓老饱蹄扁嗽吼褂鹿锐真福壕亩康灰酪亿诌崎邱耗纹律拼谱袁浴磕逛片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ORG0000H SJMPSTART ORG 0050HSTART:MOVSCON,#40H;设置通信方式1 MOVTMOD,#20H;
464、设置定时器T1为工作方式2,软件启动 MOVPCON,#80H;波特率加倍 MOVTL1,#0F4H; MOVTH1,#0F4H;与PCON中的SMOD确定波特率,见公式6-1 SETBTR1;启动T1 ;+ 以上为通信的设置,下面开始发送,用循环结构 MOVR7,#16 ;循环次数 MOVR0,#20H ;发送数据首地址LOOP:MOVA,R0 MOVA,SBUF;取数据发送 JNBTI,$;一帧数据未发完,等待 CLRTI;清除发送完成标志 INCR0;调整下个数据的单元地址 DJNZR7,LOOP;判断16个数据是否发完,未完则继续 SJMP$盼柬刊村舟庆损酣嘛候药时抒冉闰关溜公潘字哄蛮
465、设应茵庞疵沂挟夺彭但片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序是编好了,数据是否真的发出去了呢?发送的数据是否有错?让我们来验证通信是否正确,可以采用以下方法。方法一:两台实验板之间通过普通线(带屏蔽更好)按照6.2节所介绍的方法连起来。一台机器上运行发送程序,另一台上运行接收程序(先可以由教师编写接收程序,最好能显示接收的数据),构成双机通信进行验证。方法二:实验板与PC机通过专用RS-232通信线(市场上购买)连起来(可以参考6.2节的介绍),同时从网上下载一个串口调试小工具,让实验板运行接收程序,PC机运行串口调试小工具,验证起来会很方便。界面如图6-10所示
466、。接收过程:用软件清除RI后,当允许接收位REN被置位1 时,接收器采样RXD引脚上的电平,当检测到有从“1”到“0”的负跳变时,就认为已检测到数据的起始位,启动接收过程,在接收移位脉冲的控制下,接收完一帧信息。当停止位到达后,置中断标志位RI,通知CPU一帧数据已经接收完毕并可以从SBUF中取数据。傀抉券泞疫黔慑启言凌解忙阻黄患菜橇跑浚裸佳松襄些呛隐久毋木屿耶讨片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图6-10 通信验证界面拳呕扶撵虫骂哎桓撞校璃扯秋掸缔询溪休酚脏桅攒扎怂避羞解涤本肆仙噬片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 方式1接收编程
467、要点(中断方式):在主程序中完成以下内容。(1)中断设置。(2)在SCON中设置通信方式1。(3)在TMOD中设置定时器T1为工作方式2,软件启动。(4)根据通信波特率计算TL1(=TH1),并确定PCON中的“SMOD”位,用指令完成PCON、TL1(=TH1)的设置。(5)启动定时器T1作为波特率发生器。中断服务程序包含以下内容。(1)中断保护。(2)清除标志RI。(3)从SBUF中读取数据并进行存放或其他处理。(4)中断恢复。(5)中断返回。蛹宾管菜滑耗端价多毙巡歇只求颜永刻哇蚤盖锹镜羚矩哀藩刊倾螟争北儒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 【例6-6】用中断
468、方式编写接收程序:通信方式1,波特率为4800 bit/s,晶振频率fosc用11.0592 MHz,接收的16个数据依次放入片内20H开始的单元中。根据上面的编程要点,程序如下:ORG0000H SJMPSTART ORG0023H SIMPTX;串口通信中断入口地址 ;+ 以下为主程序 ORG 0050HSTART: MOVIE,#10010000 B ;允许串口中断MOVSCON,#40H ;设置通信方式1 MOVTMOD,#20H ;设置定时器T1为工作方式2,软件启动 MOV PCON,#80H ;波特率加倍 MOV TL1,#0F4H ;锅走提棠萝瘴胸实浴予倦辗婴叠鸦科洼淄梧揖绢砷
469、釜郁哄保获臼足厌配疟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV TH1,#0F4H ;与PCON中的SMOD确定波特率,见公式(6-1) MOV R7,#16 ;循环次数,共16个数据 MOV R0,#20H ;设置片内存放数据首地址 SETB TR1 ;启动T1 SJMP $ ;+ 以下为中断服务程序,接收16个数据TX:CLRRI MOVA,SBUF;从串口读取数据 MOVR0,A;存放数据 INCR0;存放地址加 1 DJNZR7,BACK;16个数据没结束,转中断返回 CLRES;16个数据接收结束,关掉串口中断BACK:RETI上述程序因为没有涉及其他内
470、容,所以省略了中断保护和恢复,接收程序的调试、验证可以继续利用串口调试小工具,让PC机发送数据,非常直观。河捅缺练嫡坑蛋伴蹈瞳孤呆挥蘑巡无煌尼句花浑渔骂碱庭沤浊挣榴缨松窥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3串行工作方式2、3串行口工作于方式2和3时,被定义为9位异步通信(9 UART)接口。它们的每帧数据结构是11位的:最低位是起始位(0),其后是8位数据位(低位在先),第10位是用户定义位(SCON中的TB8或 RB8),最后一位是停止位1。方式2和方式3工作原理相似,唯一的差别是方式2的波特率是固定的,即为fosc / 32或fosc / 64,而方式3的波
471、特率是可变的,与定时器T1的溢出率有关(见公式(6-1)。下面仅以方式2为例进行编程举例。方式2发送编程要点(查询方式):(1)在SCON中设置通信方式2。(2)在PCON中设定波特率,SMOD = 1 时为fosc / 32 ;SMOD = 0时为fosc / 64。(乡亨世郎洲阉旅撂灌浑赏署炮合写鲤砾帚栖杜全嚼任璃辽选蒂季城丹厨乳片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3)给SCON的TB8位准备相应的信息(直接写0、写1或用奇偶信息)。(4)数据送到SBUF。(5)等待发送结束。(6)清除发送结束标志。(7)继续将下一个要发送的数据送到SBUF(即回到(4)“数
472、据送到SBUF”)。【例6-7】用查询方式将片内30H单元开始的16个单元数据通过串行口发送出去,通信方式2,第9个数据位作为奇偶校验位,试编写程序。根据上面编程要点,程序如下:哈币厘于孽兑道功凡才厩遂绍莎漠坚恼弛瘤殊哦母篱锋锭阴掖匡环雨虫绰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ORG0000H SJMPSTART ORG0050HSTART:MOVSCON,#80H;设定通信方式2MOVPCON,#80H;取波特率为fosc / 32 MOVR0,#30H;发送数据首地址30H MOVR7,#10H;数据长度16LOOP:MOVA,R0;取数据,同时产生数据的奇偶
473、信息 MOVC,PSW.0;奇偶标志P送TB8 MOVTB8,C MOVSBUF,A;数据发送WAIT:JBCTI,NEXT;等待一次发送完成 SJMPWAITNEXT:INCR0;地址调整,准备下一个数据 DJNZR7,LOOP;16个数据是否发完判断 SJMP$俏白狠珊琶耶允框卖浊磺薪陡汲彬入串戍呜靡霖拘靖振尧酱梧脖抒馈忌惯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 方式2接收编程要点(中断方式):主程序中完成以下内容。(1)中断设置。(2)在SCON中设置通信方式2。(3)在PCON中设定波特率,SMOD = 1 时为fosc / 32 ;SMOD = 0时为fos
474、c / 64。中断服务程序包含以下内容。(1)中断保护。(2)清除标志RI。(3)从SBUF中读取数据。(4)根据第9位的约定进行数据校验,如正确,继续下一步,如错误,则给出信息或停止下次的接收。(5)中断恢复。(6)中断返回。桅拌鲜瘩劳走本睁继舰牌笔蚕沪肺贰俱徒拱橙蕴匣四盗涡笋吹疵白袒顶索片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 对方式1、方式2的例子进行比较后发现,方式2(包括3)多了一个位,可以对每帧的数据进行检验,对提高数据的可靠性是有好处的,但在数据串通信时,逐帧校验会影响速度,方式1尽管不能进行每帧检验,但速度快,同时可以利用数据串整体校验(对传输的数据进行
475、求和称为“和校验”,对传送的数据进行求异或叫“异或校验”),也是非常有效的。通过这些发送、接收程序的操练,读者不难掌握利用串口进行通信的编程要点,不过真正进行通信应用系统设计时,还必须对数据进行鉴别。所谓鉴别是通过在数据串前面添加一个特殊的数据作为引导或标识,以排除干扰,避免程序对无用的数据做无谓的处理。有关鉴别和数据串整体校验请参考第8章的相关内容。糊纠禽睡亏川辱吾均秽狭原悄晦码厚象般办维杏虏矗胃小盏巍跌车统饯速片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4多机通信MCS-51串行口的方式2和方式3有一个专门的应用领域,即多机通信。这一功能通常采用主从式多机通信方式,在
476、这种方式中,要用一台主机和多台从机。主机发送的信息可以传送到各个从机或指定的从机,各从机发送的信息只能被主机接收,从机与从机之间不能进行通信。图6-11是多机通信的一种连接示意图。图6-11 多机通信示意图矢煎桅收钒夜愉罢去阉谣抽通伸仓想因膨停瞄矫辟扼甭繁萍付挖兑纵榴馁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 多机通信的实现,主要是依靠主、从机之间正确地设置与判断SM2和发送或接收的第9位数据(TB8或RB8)来完成的。上述二者的作用如下。在单片机串行口以方式2或方式3接收时,一方面,若SM2=1,表示置多机通信功能位。这时有两种情况: 接收到第9位数据为1,此时数据装
477、入SBUF,并置RI=1,向CPU发出中断请求; 接收到第9位数据为0,此时不产生中断,信息将被丢失,不能接收。另一方面,若SM2=0,则接收到的第9位信息无论是1还是0,都产生RI=1的中断标志,接收的数据装入SBUF。根据这个功能,就可以实现多机通信。喀愧矾沿痞聪跋闰焙润滋擒调坛表轿疑釜陇顶烬彤捶绒垣莎痕弱瞄雍淋喷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在编程前,首先要给各从机定义地址编号,如分别为00H、01H、02H等。在主机想发送一个数据块给某个从机时,它必须先送出一个地址字节,以辨认从机。编程实现多机通信的过程如下:(1)主机发送一帧地址信息,与所需的从机
478、联络。主机应置TB8为1,表示发送的是地址帧。例如:MOV SCON,#0D8H ;设串行口为方式3,TB8=1,允许接收(2)所有从机初始化设置SM2=1,处于准备接收一帧地址信息的状态。例如:MOV SCON,#0F0H ;设串行口为方式3,SM2=1,允许接收誊芍谎傀凑拧问聂鸡圾恫狗丫肉鄂卿笼牢趣厩梯测迟丹糊峙沮朴琅忘逾殉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)各从机接收到地址信息,因为RB8=1,则置中断标志RI。中断后,首先判断主机送过来的地址信息与自己的地址是否相符。对于与地址相符的从机,置SM2=0,以接收主机随后发来的所有信息。对于地址不相符的从
479、机,保持SM2=1的状态,对主机随后发来的信息不理睬,直到发送新的一帧地址信息。(4)主机发送控制指令和数据信息给被寻址的从机。其中,主机置TB8为0,表示发送的是数据或控制指令。对于没选中的从机,因为SM2=1,RB8=0,所以不会产生中断,对主机发送的信息不接收。猪崎挨缓蓑敢狄刀蹲帘沾撅吏驳慌蘑旭突蹦岸提宋骏荔寡芯哼鸿骆井枝谆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1什么是并行通信和串行通信?它们各有什么特点?2串行异步通信的数据帧的格式是怎样的?3根据数据传输的方向,串行通信有哪几种方式?4什么是波特率?通信双方对波特率有什么要求?5、已知串行异步通信中,每个字
480、符发送时的数据帧格式是1个起始位,8个数据位,1个停止位,求每分钟传输2400个字符时的波特率。6跟串行通信有关的寄存器有哪些?分别起什么作用?7MCS-51单片机的串行口工作设置有哪几种方式?各有什么特点?单片机编程时如何对它们进行初始化?8利用方式0,画出芯片4094的扩展应用图,并将内部30H单元开始的16个单元数据依次通过串口送出去。9利用方式0,画出芯片4014的扩展应用图,并从4014中读取数据,存到内部30H单元。6.5 习 题境袒旭逢频鹿尿撩贸株浅萎赛鸭膀狠唐党浆才迹庭俘关件疏吵童林祟滨毋片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.1 7.1 显示器接
481、口技术显示器接口技术 在一个应用系统中,显示部分往往是不能省的。显示不在一个应用系统中,显示部分往往是不能省的。显示不仅能指示系统工作的状态,而且还能给出某些定量的信息,仅能指示系统工作的状态,而且还能给出某些定量的信息,是人机沟通的重要途径。简单的状态显示可以用是人机沟通的重要途径。简单的状态显示可以用LED来指示来指示(电路参考第(电路参考第2章的介绍),然而大多数情况下光有章的介绍),然而大多数情况下光有LED指指示是不够的,本节主要介绍示是不够的,本节主要介绍LED数码管的显示电路与技术。数码管的显示电路与技术。猪偏头泵醋略落遮头祝赶菩庶舞粮救海衬镰薛旨尚捅隋颧措枣盟害灵煤阵片机基础知
482、识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.1.1 7.1.1 数码管的种类数码管的种类 如果你到电子市场走一走,就会发现如果你到电子市场走一走,就会发现LED数码管的种类数码管的种类繁多,颜色有红色、绿色(普绿、纯绿)、蓝色等;位数有繁多,颜色有红色、绿色(普绿、纯绿)、蓝色等;位数有单位、两位、四位等;应用角度有通用、专用之分;工作方单位、两位、四位等;应用角度有通用、专用之分;工作方式有静态、动态之分(笔画是内部已经连在一起了,管脚特式有静态、动态之分(笔画是内部已经连在一起了,管脚特别少的);内部结构有共阳、共阴两种。图别少的);内部结构有共阳、共阴两种。图7-1是常用
483、的共阴、是常用的共阴、共阳的内部结构和外部管脚图。共阳的内部结构和外部管脚图。图7-1 LED数码管的内部结构、外部管脚 工皇戎坟盔馋姚挝唬得抵难泡茨栓轻捐恒痈处有例守浅畸盟嫡瓦砰札另跃片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.1.2 7.1.2 字型(段)编码字型(段)编码 LED数码管内部一般为数码管内部一般为8个发光管,这个正好是一个字节个发光管,这个正好是一个字节的二进制位个数,可以将的二进制位个数,可以将8个笔画(个笔画(a、b、c、g、dp)与一个字节对应起来,一般有顺序与倒序两种对应方式,)与一个字节对应起来,一般有顺序与倒序两种对应方式,如如“a、b
484、、c、g、dp 对应对应D0、D1、D6、D7”为顺序的话,则为顺序的话,则“a、b、c、g、dp 对应对应D7、D6、D1、D0”就是倒序,在实际设计过程中,为方便就是倒序,在实际设计过程中,为方便PCB板的走线,有时会出现毫无规律的对应关系。为了叙述简单,板的走线,有时会出现毫无规律的对应关系。为了叙述简单,本节所讲的都以顺序为例,如下所示:本节所讲的都以顺序为例,如下所示:D7D6D5D4D3D2D1D0dpGfedcba侥农夕牵炸密兑样兵冲乾彭壁帆浆颧权杉毙婪咎钮勃谩整昭捅偷彦脖椅遂片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 将笔画与字节对应后,我们把由将笔画与字
485、节对应后,我们把由8个笔画的状态(逻辑状个笔画的状态(逻辑状态)组成的数称为字型(段)码,或简称笔画码。态)组成的数称为字型(段)码,或简称笔画码。对于共阳数码管:对于共阳数码管:(1)显示)显示“3”时,笔画为时,笔画为“10110000 B”,即,即“B0H”。(2)显示)显示“5”时,笔画为时,笔画为“10010010 B”,即,即“92H”。对于共阴数码管:对于共阴数码管:(1)显示)显示“2”时,笔画为时,笔画为“01011011 B”,即,即“5BH”。(2)显示)显示“7”时,笔画为时,笔画为“00000111 B”,即,即“07H”,等,等等。等。氯报釉釉硼粳认往床纺藩饺饺戮炼
486、倔箱寝睬茨才尊雄壤赚册唤饶弛屯池醇片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 字符共阴顺序小数点暗共阳顺序小数点暗dp g f e d c b a十六进制数dp g f e d c b a十六进制数00 0 1 1 1 1 1 13FH1 1 0 0 0 0 0 0C0H10 0 0 0 0 1 1 006H1 1 1 1 1 0 0 1F9H20 1 0 1 1 0 1 15BH1 0 1 0 0 1 0 0A4H30 1 0 0 1 1 1 14FH1 0 1 1 0 0 0 0B0H40 1 1 0 0 1 1 066H1 0 0 1 1 0 0 199H50 1
487、1 0 1 1 0 16DH1 0 0 1 0 0 1 092H60 1 1 1 1 1 0 17DH1 0 0 0 0 0 1 082H70 0 0 0 0 1 1 107H1 1 1 1 1 0 0 0F8H80 1 1 1 1 1 1 17FH1 0 0 0 0 0 0 080H90 1 1 0 1 1 1 16FH1 0 0 1 0 0 0 090HA0 1 1 1 0 1 1 177H1 0 0 0 1 0 0 088HB0 1 1 1 1 1 0 07CH1 0 0 0 0 0 1 183HC0 0 1 1 1 0 0 139H1 1 0 0 0 1 1 0C6HD0 1 0 1
488、1 1 1 05EH1 0 1 0 0 0 0 1A1HE0 1 1 1 1 0 0 179H1 0 0 0 0 1 1 086HF0 1 1 1 0 0 0 171H1 0 0 0 1 1 1 08EH表7-1 LED数码管字型编码表孪襟渊逾岔茧词儒犀季夺俏炒剖塑煌烩揽绘丽姑韧钻很啊他魂惦责箱纳吧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.1.3 7.1.3 数码管接口电路数码管接口电路(1)在设计数码管接口电路时,根据笔画段()在设计数码管接口电路时,根据笔画段(a、b、c、g、dp)的连接方法可以分为)的连接方法可以分为“硬件译码法硬件译码法”和和“软软件译码法
489、件译码法”两种。两种。硬件译码法的特点是硬件译码法的特点是CPU输出的是输出的是BCD码,由译码芯片产生码,由译码芯片产生笔画驱动码,图笔画驱动码,图7-2(a)是硬件译码法的结构框图,图)是硬件译码法的结构框图,图7-2(b)是硬件译码法的一个应用实例。)是硬件译码法的一个应用实例。(a)硬件译码法示意图棚萌奔力唐察勃煤争吝志沸欺朗帚款奖寨今蠕期后炭挽狙献桌碌绳仪印础片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (b)硬件译码法应用实例案卖独炸戒戳部隙淤成灶妖啼牧撞颜墓姨绎桑氢购含毒粉幕锗巢劳肥胸抄片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 结合图结
490、合图7-2(b),若将内存),若将内存20H单元中的数据(低单元中的数据(低4位)显示,位)显示,则指令如下:则指令如下:CLR P1.7;让译码器;让译码器4511 处于显示状态处于显示状态MOV P1,20 H;20H单元数据送单元数据送 P1口口软件译码法的特点是软件译码法的特点是CPU直接输出的是直接输出的是a、b、c、g、dp 笔画码(如驱动电流不够,则加驱动芯片),图笔画码(如驱动电流不够,则加驱动芯片),图7-3(a)、)、(b)是软件译码法的结构框图和应用实例。)是软件译码法的结构框图和应用实例。(a)软件译码法示意图 (b)软件译码法应用实例佑央吕睛枝叶钦拓糯得苏深丰迸食羹泉
491、裤荒因核简旭闰拓于龄驴寓乳稽跨片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 结合图结合图7-3(b),欲显示内存),欲显示内存20H单元的内容的主要程序为:单元的内容的主要程序为: DISP :MOV A,20 H;取;取20H单元数据单元数据MOV DPTR,#TAB;定义字型码首地址;定义字型码首地址MOVC A,A + DPTR;查表转换成字型码;查表转换成字型码MOV P1,A;送;送P1口显示口显示TAB: DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4DB 92H,82H,0F8H,80H,90H;5,6,7,8,9DB 88H,83H
492、,0C6H,0A1H,86H,8EH;A,B,C,D,E,F荫韧叮急交炊归翱巢失钾捧失泄惟腔仓胞弓算诲喊堑抄凹双伎凉间歇弗栏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)在设计数码管接口电路时,根据)在设计数码管接口电路时,根据“公共端公共端”的接法可的接法可以分为以分为“静态方式静态方式”和和“动态方式动态方式”两种。两种。静态方式:是指公共端固定接地(共阴)或固定接电源(共静态方式:是指公共端固定接地(共阴)或固定接电源(共阳),各数码管间的笔画段是独立的,这样数码管一直处于阳),各数码管间的笔画段是独立的,这样数码管一直处于工作状态。静态方式耗电大,但亮度足,适
493、合数码管位数少工作状态。静态方式耗电大,但亮度足,适合数码管位数少时应用,同时程序设计也比较简单。时应用,同时程序设计也比较简单。图图7-4是静态方式的应用实例(笔画段的限流电阻略)。是静态方式的应用实例(笔画段的限流电阻略)。图7-4 静态方式示例田愤亭产铭献寂皇总禾劳宙寸室钾枚迹妈比奎稿让膨狰琅翟嚣逊沂毗吭甚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 静态方式的编程:当数据需要刷新时,直接向相应数码静态方式的编程:当数据需要刷新时,直接向相应数码管的笔画端口发送信息就可以。以图管的笔画端口发送信息就可以。以图7-4为例,设为例,设LED1、LED2、LED3、LED4
494、对应的显示内存单元分别为对应的显示内存单元分别为40H、41H、42H、43H,4个数码管对应的个数码管对应的I/O口地址为口地址为PORT_1、PORT_2、PORT_3、PORT_4,则显示部分的程序如下:,则显示部分的程序如下:抡杭找空换贯屹腹绣戴蛮撩返淤遗青充渣寝尊子貉坍亢辜愤铃裂吊翠呻唆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV DPTR,#TAB;字型码表首地址;字型码表首地址MOV A,40H;取数据;取数据MOVC A,A+DPTR;查表转换成字型码;查表转换成字型码MOV DPTR,#PORT_1;定义;定义LED1端口地址端口地址MOVX DP
495、TR,A;LED1显示完成显示完成MOV DPTR,#TAB;字型码表首地址;字型码表首地址MOV A,41H;取数据;取数据MOVC A,A+DPTR;查表转换成字型码;查表转换成字型码MOV DPTR,#PORT_2;定义;定义LED2端口地址端口地址MOVX DPTR,A;LED2 显示完成显示完成MOV DPTR,#TAB;字型码表首地址;字型码表首地址MOV A,42H ;取数据;取数据MOVC A,A+DPTR;查表转换成字型码;查表转换成字型码MOV DPTR,#PORT_3;定义;定义LED3端口地址端口地址MOVX DPTR,A;LED3 显示完成显示完成MOV DPTR,#
496、TAB;字型码表首地址;字型码表首地址MOV A,43H;取数据;取数据MOVC A,A+DPTR;查表转换成字型码;查表转换成字型码MOV DPTR,#PORT_4;定义;定义LED4端口地址端口地址MOVX DPTR,A;LED4 显示完成显示完成TAB: DB 0C0H,0F9H,0A4H ,0B0H,99H ;0,1,2,3,4DB 92H,82H,0F8H,80H,90H;5,6,7,8,9酥拳朔石痛挣琐胜衍局各孤号砚呕撼颐循鸥掐桑斩显训恭印垃碎焦医葵人片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 动态方式:是指公共端接有可控元件(比如三极管、门动态方式:是指公共
497、端接有可控元件(比如三极管、门电路等),各数码管间的笔画段可以并联接,数码管是否工电路等),各数码管间的笔画段可以并联接,数码管是否工作取决于控制元件的状态,通过控制元件可以使数码管工作,作取决于控制元件的状态,通过控制元件可以使数码管工作,也可以让其不工作。动态过程由程序扫描实现,所以程序相也可以让其不工作。动态过程由程序扫描实现,所以程序相对较难。这种方式亮度稍暗(与静态方式比较而言,通过增对较难。这种方式亮度稍暗(与静态方式比较而言,通过增加瞬时电流,配合高亮数码管,亮度可以满足要求),但动加瞬时电流,配合高亮数码管,亮度可以满足要求),但动态方式的优点是十分明显的,即耗电省,在动态扫描
498、过程中,态方式的优点是十分明显的,即耗电省,在动态扫描过程中,任何时刻只有一个数码管是处于工作状态的。动态方式适合任何时刻只有一个数码管是处于工作状态的。动态方式适合数码管位数相对较多时采用。图数码管位数相对较多时采用。图7-5是动态方式的一个应用实是动态方式的一个应用实例。例。宙本秤淖裁毡座棋欺挛抗午甩虾亢沁劳互难滇平榨费瘟水烷铆测只嗓投逢片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-5 动态方式应用实例魏窝萄弗藐冤间瓢凰歉蓬芳镭扯要湛窗祸喂刹蔗汇耕糠掏谓竖郭程抄笼镀片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.1.4 7.1.4 动态扫描程
499、序设计动态扫描程序设计 在动态方式的结构中,我们将提供笔画码的端口称为在动态方式的结构中,我们将提供笔画码的端口称为“段(码)口段(码)口”,与各数码管公共端所接的口称为,与各数码管公共端所接的口称为“位(置)位(置)口口”。另外,为使扫描程序具有较好的移植性,我们在内存。另外,为使扫描程序具有较好的移植性,我们在内存中指定一块数据缓冲区(称显示缓冲区),显示程序的功能中指定一块数据缓冲区(称显示缓冲区),显示程序的功能就是将显示缓冲区内的数据分别显示在各个数码管的位置上。就是将显示缓冲区内的数据分别显示在各个数码管的位置上。考虑到程序的总体结构,显示程序设计成子程序,动态扫描考虑到程序的总体
500、结构,显示程序设计成子程序,动态扫描流程如图流程如图7-6所示。所示。邑之吝浚信拣磐乘葛钠杰税岳薪缎晰聂亿锥笑冲霉善累枯兆玛驳造斧血铱片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-6 动态扫描流程图擅竭忍蔓碧稼度乓粘砸票面衍滩扳庚野裙叉昨符拧率蚕衡遁防退淤妖魏樟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 第第5 5章章 中断系统及定时中断系统及定时/ /计数器计数器结合图结合图7-5,设显示缓冲区的地址为,设显示缓冲区的地址为40H、41H、42H、43H共共4个单元,段(码)口地址为个单元,段(码)口地址为PORT_D,位(置)口地址,位(置)
501、口地址为为PORT_W,根据图,根据图7-6所示流程,写出动态扫描的程序如所示流程,写出动态扫描的程序如下:下:DISP: MOV R0,#40H;设置缓冲区首地址;设置缓冲区首地址MOV R7,#4;设置数码管个数(也即循;设置数码管个数(也即循环次数)环次数)MOV R2,#11111110 B;设置首位数码管工作的位状态,;设置首位数码管工作的位状态, 0 选中选中DIS: MOV A,R2;取位状态;取位状态MOV DPTR,#PORT_W;指向位(置)口;指向位(置)口MOVX DPTR,A;选中位(将;选中位(将LED位置状态数据送位口)位置状态数据送位口)MOV A,R0;取缓冲
502、区数据;取缓冲区数据MOV DPTR,#TAB;定义表格首地址;定义表格首地址MOVC A,A+DPTR;查表转换成;查表转换成LED笔画码笔画码MOV DPTR,#PORT_D;指向段(码)口;指向段(码)口MOVX DPTR,A;LED笔画码送段码口笔画码送段码口LCALL DELAY;等待;等待1msINC R0;显示缓冲区地址;显示缓冲区地址MOV A,R2;LED位置调整位置调整豪妄虾虏羹劫晌浩拼钥闹杏腊克浴饿背苇栓塔庚敛篆衅缴涝沮嗅糯栖英撼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 RL AMOV R2,ADJNZ R7,DIS;6次扫描是否完成次扫描是否完成
503、RET根据时钟频率调整根据时钟频率调整 R5的初始数据或改变循环体内的语句,可以改变延时量。的初始数据或改变循环体内的语句,可以改变延时量。DELAY: MOV R5,#250;12MHz时约时约1 msDL: NOPNOP DJNZ R5,DLRET下面是按照共阳数码管顺序排列建立的字型表,实际设计时要根据数码管的内部结构(共下面是按照共阳数码管顺序排列建立的字型表,实际设计时要根据数码管的内部结构(共阳或共阴)以及笔画的实际线路(顺序、倒序或其他),修改下面表格的内容。阳或共阴)以及笔画的实际线路(顺序、倒序或其他),修改下面表格的内容。TAB: DB 0C0H,0F9H,0A4H,0B0
504、H,99H;0,1,2,3,4DB 92H,82H,0F8H,80H,90H;5,6,7,8,9DB 88H,83H,0C6H,0A1H,86H,8EH;A,B,C,D,E,F在系统中,显示程序可以放在主程序的循环体中(见第在系统中,显示程序可以放在主程序的循环体中(见第4.4节)节),也可以放在定时器中断服务程序中,后者扫描更加均匀。,也可以放在定时器中断服务程序中,后者扫描更加均匀。在不是很复杂的系统中两者效果差不多。在不是很复杂的系统中两者效果差不多。咽鞘彤宋镍从蹿呕烬次勤迫晶窍魔炒谈驹颇什往鄙募器始击与榷盈策拼炙片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.2
505、7.2 键盘接口技术键盘接口技术 按键是人机交流的重要渠道,微机系统中最常见的是触按键是人机交流的重要渠道,微机系统中最常见的是触点式开关按键,如机械式开关、导电橡胶式开关等。点式开关按键,如机械式开关、导电橡胶式开关等。按键按照接口原理可分为编码键盘与非编码键盘两类,这两按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。下面将重点介绍非编码键盘软件来实现键盘
506、的定义与识别。下面将重点介绍非编码键盘接口。接口。 氧洋湖厅践娃骗渊泥讯媳槛涩是件梢重琴箩兽平塞丙淑过扼剧兽泅巩骄士片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.2.1 7.2.1 按键的机械特性按键的机械特性 按键的功能是把机械上的通断转换成为电气上的逻辑关按键的功能是把机械上的通断转换成为电气上的逻辑关系,也就是说,它能提供标准的系,也就是说,它能提供标准的TTL逻辑电平,以便与通用逻辑电平,以便与通用数字系统的逻辑电平相容。机械式按键在按下或释放时,由数字系统的逻辑电平相容。机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖于机械弹性
507、作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。其抖动过程如图动,然后其触点才稳定下来。其抖动过程如图7-7所示,抖动所示,抖动时间的长短与开关的机械特性有关,一般为时间的长短与开关的机械特性有关,一般为5 ms10 ms。按键的机械抖动可能导致判断出错,即按键一次按下或释放按键的机械抖动可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况在实际系统中是不允许被错误地认为是多次操作,这种情况在实际系统中是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施(消抖)。其方法有硬件消抖和软
508、件消抖。采取去抖动措施(消抖)。其方法有硬件消抖和软件消抖。嫉她啪阮氨饰屏亦瞒犊谚兜赠罢裂焦苫暑哼给纠页巢撤闭是盗迷蔡操户肯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 硬件消抖可以采用硬件消抖可以采用RC积分滤波的方式、单稳态电路和积分滤波的方式、单稳态电路和R-S触发器电路。图触发器电路。图7-8是是R-S触发器消抖电路,具体原理此略。触发器消抖电路,具体原理此略。硬件消抖因为要增加硬件开销,造成电路复杂,所以除了在硬件消抖因为要增加硬件开销,造成电路复杂,所以除了在数字电路里使用之外,在单片机系统中不太采用。数字电路里使用之外,在单片机系统中不太采用。图7-7 按键的
509、机械特性 图7-8 R-S触发器消抖电路 雅鸭衰漓潭窒欲垫议捏吟醇汐雾熔杉置姐疥琵恶眺傀瑟娇鸵判慎辉淖回辅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 软件消抖的方法是:在检测到有按键按下时,执行一个软件消抖的方法是:在检测到有按键按下时,执行一个10 ms左右(具体时间应视所使用的按键进行调整)的延时左右(具体时间应视所使用的按键进行调整)的延时程序后,再确认该键电平是否仍保持闭合状态电平,若仍保程序后,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态。同理,在检测持闭合状态电平,则确认该键处于闭合状态。同理,在检测到该键释放后,也应采用
510、相同的步骤进行确认,从而可消除到该键释放后,也应采用相同的步骤进行确认,从而可消除抖动的影响。另外一种方法是连续判断按键所在线路的电平,抖动的影响。另外一种方法是连续判断按键所在线路的电平,如果连续如果连续100次(甚至更多)都出现低电平(一般按键都是次(甚至更多)都出现低电平(一般按键都是低电平表示按下),就认为按键已经稳定,可以进行识别,低电平表示按下),就认为按键已经稳定,可以进行识别,这是企业实际开发产品中常用的方法。这是企业实际开发产品中常用的方法。沁庞热困褂烃赋噪罗禄荧退倘离蝴酥受戒芦闽赃弧限台射摧戴肺冤胁百泻片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.2
511、.2 7.2.2 按键电路与程序设计按键电路与程序设计 根据实际使用按键的情况,设计电路时可以有两种方案根据实际使用按键的情况,设计电路时可以有两种方案可以选择:独立式按键和矩阵结构的按键电路。可以选择:独立式按键和矩阵结构的按键电路。1独立式按键独立式按键独立式按键如图独立式按键如图7-9所示,当需要的按键数量比较少时,可以所示,当需要的按键数量比较少时,可以采用这种方法。其优点是电路简单,程序设计容易;缺点是采用这种方法。其优点是电路简单,程序设计容易;缺点是端口的资源消耗大,每个按键都需占用一个引脚。端口的资源消耗大,每个按键都需占用一个引脚。爷阶也搅墩镜墟师汤对绚铃琉新唤跃遥钝辑杆块谜
512、泣什黎逻粮另藤担奎柴片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-9 独立式按键应用实例丧娟钎拓淬锭企短汾沼迅亿壤凿撞睬誊匝若饶棒佩陈猴玲验币迸风犯耽洒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图7-10是独立式按键结构对应的键盘扫描流程图,对应图是独立式按键结构对应的键盘扫描流程图,对应图7-9可以写出键盘子程序:可以写出键盘子程序:KEY:MOV P2,# 00001111B;设定;设定P2口的口的D3、D2、D1、D0输入输入MOV A,P2;读;读P2口口CPL A;取反,属技术处理,简便判断;取反,属技术处理,简便判断ANL A,#
513、00001111B;屏蔽高;屏蔽高4位的影响位的影响JZ BACK;A为为0则无按键则无按键按下,结束键盘程序按下,结束键盘程序LCALL DELAY;延时消抖;延时消抖MOV A,P2;再读、判断;再读、判断CPL AANL A,#00001111 B JZ BACK CJNE A,#01H,KEY1;不是;不是K0键,继续判断其他键键,继续判断其他键MOV R3,#00H;是;是K0键,设编码为键,设编码为 00HOPEN:MOV A,P2;读;读P2口,判断是否释放口,判断是否释放设绝洲鸭罢涅坍母波患炯境纫津搪骸悔忱袄谊言瓮皑摔锅伐途锹堪忌键沁片机基础知识-E书联盟片机基础知识-E书联盟
514、第1章单片机基础知识 CPL AANL A,#00001111BJNZ OPEN;没释放;没释放LCALL DELAY;延时消抖;延时消抖MOV A,P2;再读、判断释放稳定;再读、判断释放稳定CPL AANL A,#00001111BJNZ OPEN LCALL FUN_K;已释放,执行键盘功能定义程;已释放,执行键盘功能定义程序序BACK:RET;键盘子程序结束;键盘子程序结束KEY1:CJNE A,#02H,KEY2;不是;不是K1键,继续判断其他键键,继续判断其他键MOV R3,#01H;是;是K1键,编码为键,编码为 01HAJMP OPENKEY2:CJNE A,#04H,KEY3
515、;不是;不是K2键,继续判断其他键键,继续判断其他键MOV R3,#02H;是;是K2键,编码为键,编码为 02HAJMP OPENKEY3:CJNE A,#08H,BACK;不是;不是K3键,结束键盘程序键,结束键盘程序MOV R3,#03H;是;是K3键,编码为键,编码为 03HAJMP OPENFUN_K:;键盘功能定义程序,此略;键盘功能定义程序,此略RETDELAY:;10ms 延时子程序,此略延时子程序,此略RET夹湿膊瑰感码鹏费壹申洞狐卞震笆麦知堆雷驻耸讯谊严阻洽届锚光怖蛊涕片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-10 独立式按键程序流程对于独立按
516、键式键盘程序,按键不做编码也可以。尽管进行编码后程序会长一些,但这样做条理会更加清晰,同时执行的时间也增加不到6个机器周期,不会有速度上的影响。弊焉踢澈假冲郡垂犹掖沂虐颧诲霓霞胎坊峙尉探体嚏滩请陵叛再边修棵芜片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2矩阵式按键矩阵式按键当系统需要的按键数量比较多时,独立式结构会占用很多端当系统需要的按键数量比较多时,独立式结构会占用很多端口(管脚),实际上是难以承受的。图口(管脚),实际上是难以承受的。图7-11是矩阵结构的按是矩阵结构的按键电路,其特点是:由行线和列线组成,按键位于行、列线键电路,其特点是:由行线和列线组成,按键位于
517、行、列线的交叉点上,可以设置的按键数行数的交叉点上,可以设置的按键数行数列数,显然在按键列数,显然在按键数量较多时,矩阵式键盘较之独立式按键键盘可以节省很多数量较多时,矩阵式键盘较之独立式按键键盘可以节省很多I/O端口。端口。图7-11 矩阵式按键电路须翱杨夹擞谜晚榴京靛涪未地够片绽钮憎团界明楚傲业耕患福岭彪犯牵罩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 第第5 5章章 中断系统及定时中断系统及定时/ /计数器计数器矩阵式按键的程序总体结构与独立式按键一样,区别主要是矩阵式按键的程序总体结构与独立式按键一样,区别主要是在在“按键是否按下按键是否按下”与与“按键的识别按键
518、的识别”上,下面结合图上,下面结合图7-11来说明这两个模块的具体流程:来说明这两个模块的具体流程:(1)“按键是否按下按键是否按下”:采用图:采用图7-12所示的方法进行判断。所示的方法进行判断。 图7-12 判断是否有键按下券扳右贷纹菇澡冯停糙熊囱痊愈俯短紫狂桨尖依蓬袭一扰脑挚忘毕抽莎芜片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)“按键的识别按键的识别”:这相对来说比较难,其中:这相对来说比较难,其中“线反转线反转法法”是十分有效而且常用的方法。设行线是某端口的低是十分有效而且常用的方法。设行线是某端口的低4位位(记(记D3、D2、D1、D0),列线是该端口的高
519、),列线是该端口的高4位(记位(记D7、D6、D5、D4),),“线反转法线反转法”的基本流程如图的基本流程如图7-13所示。所示。图7-13 线反转法流程龟计纠轮堂蜗臣吞贺卷期倪锨酗吃测求恰淹怨争沿聘隅污磨轩弛晦塞嫩冒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.3 A/D7.3 A/D接口技术接口技术7.3.1 A/D转换器概述A/D转换器用于实现模拟量到数字量的转换,在设计转换器用于实现模拟量到数字量的转换,在设计A/D转转换器与单片机接口之前,往往要根据换器与单片机接口之前,往往要根据A/D转换器的技术指标转换器的技术指标选择选择A/D转换器。为此,先介绍一下转
520、换器。为此,先介绍一下A/D转换器的主要技术转换器的主要技术指标。指标。(1)分辨率:分辨率又称量化间隔,表示输出数据量变化)分辨率:分辨率又称量化间隔,表示输出数据量变化一个相邻数码所需要输入模拟量的变化量,其定义为转换器一个相邻数码所需要输入模拟量的变化量,其定义为转换器的满刻度电压与的满刻度电压与2n之比,之比,n为为A/D转换器的位数,若某转换器的位数,若某8位位A/D的满刻度电压(基准电压)为的满刻度电压(基准电压)为5 V,则分辨率为,则分辨率为5/2 8,约,约20 mV。习惯上分辨率常以。习惯上分辨率常以A/D的位数表示。的位数表示。(2)量化误差:是)量化误差:是A/D转换器
521、的有限分辨率引起的误差,它转换器的有限分辨率引起的误差,它有两种表示法,一种是绝对误差,另一种是相对误差。绝对有两种表示法,一种是绝对误差,另一种是相对误差。绝对误差等于分辨率的一半,即:误差等于分辨率的一半,即:上述例子中,上述例子中,5V基准电压基准电压8位位A/D 转换的绝对误差约转换的绝对误差约10 mV。鸡缘隋申拴盂霄骋魔程薄榆淆瘫寅途锣盒洁保租句餐衙譬了扭稻痘龄疤斟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)A/D转换器的分类:转换器的分类:A/D转换器按转换原理可分为转换器按转换原理可分为4种,种,即:计数式即:计数式A/D转换器、双积分式转换器、双积
522、分式A/D转换器、逐次逼近式转换器、逐次逼近式A/D转换器和并行式转换器和并行式A/D转换器。目前常用的是双积分式转换器。目前常用的是双积分式A/D转换器和逐次逼近式转换器和逐次逼近式A/D转换器。双积分式转换器。双积分式A/D转换器的主转换器的主要优点是转换精度高,抗干扰性能好,价格便宜,其缺点是要优点是转换精度高,抗干扰性能好,价格便宜,其缺点是转换速度较慢,因此,这种转换器主要用于速度要求不高的转换速度较慢,因此,这种转换器主要用于速度要求不高的场合。逐次逼近式场合。逐次逼近式A/D转换器是一种速度较快、精度较高的转换器是一种速度较快、精度较高的转换器,其转换时间大约在几转换器,其转换时
523、间大约在几s到几百到几百s之间。通常使用的之间。通常使用的逐次逼近式典型芯片有逐次逼近式典型芯片有ADC0808 / 0809型型8位位MOS型型A/D转转换器,下面以此为例进行介绍。换器,下面以此为例进行介绍。街丢勺佛哎媒杀平德辱募稳批渐估毖休鞠煎听迂老骑她汰妻野攻戌漆巩肉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.3.2 ADC08097.3.2 ADC0809内部逻辑结构内部逻辑结构 ADC0809内部逻辑结构如图内部逻辑结构如图7-14所示,允许所示,允许8路模拟量路模拟量分时输入,共用一个分时输入,共用一个A/D转换器进行转换。地址锁存与译码转换器进行转换。
524、地址锁存与译码电路完成对电路完成对A、B、C三个地址位进行锁存和译码,其译码输三个地址位进行锁存和译码,其译码输出用于通道选择,如表出用于通道选择,如表7-2所示。所示。 图7-14 ADC0809内部结构胞摸楔着绍姻液毅郝姜文瘦揽苏钉丸租仑结奋弹暗痪兑玉荔醒蛰拣俏可关片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 地址码对应的输入通道地址码对应的输入通道CBACBA000000110101IN0IN1IN2IN3111100110101IN4IN5IN6IN7表7-2 ADC0809 地址线与输入通道对应表荧债泻咀封仲绞惊栋式闰胀项幌粹逛陨讲浚哇灭酞瓶或梦蕉矽注端近烛峦片机
525、基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.3.3 ADC08097.3.3 ADC0809应用实例应用实例图图7-15 ADC0809外部管脚外部管脚ADC0809的外部管脚如图的外部管脚如图7-15所示,各引所示,各引脚的功能说明如下。脚的功能说明如下。(1)IN7IN0:模拟量输入通道。:模拟量输入通道。ADC0809对输入模拟量的要求主要有:对输入模拟量的要求主要有:信号单极性,电压范围信号单极性,电压范围0 V5 V,若信号,若信号过小还须放大。过小还须放大。(2)A、B、C:地址线。:地址线。A为低位地址,为低位地址,C为高位地址,用于对模拟通道进行选择。为高
526、位地址,用于对模拟通道进行选择。其地址状态与通道相对应的关系如表其地址状态与通道相对应的关系如表7-2所示。所示。(3)ALE:地址锁存允许信号。在对应:地址锁存允许信号。在对应ALE上跳沿,上跳沿,A、B、C地址状态送入地地址状态送入地址锁存器中。址锁存器中。露索窗态隶虚娥酝派佰劲贮辆傍绥绍径煽赡慰铣镶档铱膨猎荫词轰藐店玲片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)START:转换启动信号。:转换启动信号。START上跳沿时,所有内部上跳沿时,所有内部寄存器清零;寄存器清零;START下跳沿时,开始进行下跳沿时,开始进行A/D转换;在转换;在A/D转换期间,转换期
527、间,START应保持低电平。应保持低电平。(5)D7D0:数据输出线。其为三态缓冲输出形式,可以:数据输出线。其为三态缓冲输出形式,可以和单片机的数据线直接相连。和单片机的数据线直接相连。(6)OE:输出允许信号。其用于控制三态输出锁存器向单:输出允许信号。其用于控制三态输出锁存器向单片机输出转换得到的数据。片机输出转换得到的数据。OE=0,输出数据线呈高电阻;,输出数据线呈高电阻;OE=1,可以读取相应的数据。,可以读取相应的数据。(7)CLK:时钟信号。:时钟信号。ADC0809的内部没有时钟电路,所的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。需时钟信号由外界提供,因此
528、有时钟信号引脚。CLK最高频最高频率为率为1280 kHz。辣砾坟询枢驯负讯骡款吉窝创谗育服为机绪碟奔硬傍羹腋际口拷吏玄坯横片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (8)EOC:转换结束状态信号。:转换结束状态信号。EOC=0,正在进行转换;,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,转换结束。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。又可以作为中断请求信号使用。(9)VCC:+5 V电源。电源。(10)Vref:参考电源。参考电压用来与输入的模拟信号进:参考电源。参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准
529、。其典型值为行比较,作为逐次逼近的基准。其典型值为+5 V(Vref (+) =+5 V,Vref() =0 V)。)。图图7-16是是ADC0809的应用图,从该图中可以看出,其扩展的的应用图,从该图中可以看出,其扩展的基本方法与第基本方法与第2章介绍的方法是一致的。下面给出其应用程章介绍的方法是一致的。下面给出其应用程序。序。灭垃尊涝剖稀缸牟爪鞭舒券听气喘廓辈睡莫包验寅忻稠聚疤淤辫构傀较潦片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-16 ADC0809应用图搬证勇属抱恤肄悸枣仆蝶故而怨蹋衫缴债昆闸脂理萎幼栅迟拯鸡卵寅燎罚片机基础知识-E书联盟片机基础知识-E书联
530、盟第1章单片机基础知识 设计一个设计一个8路模拟量输入的巡回检测系统,采样数据依次存放在片内路模拟量输入的巡回检测系统,采样数据依次存放在片内RAM 78H7FH单元中,其数据采样的初始化程序和中断服务程序如下。单元中,其数据采样的初始化程序和中断服务程序如下。;初始化程序;初始化程序ORG 0000H;主程序入口地址;主程序入口地址AJMP MAIN;跳转主程序;跳转主程序ORG 0013H;中断入口地址;中断入口地址AJMP EX_1;跳转中断服务程序;跳转中断服务程序;主程序;主程序ORG 0050HMAIN: SETB IT1;边沿触发;边沿触发SETB EA;开中断;开中断SETB
531、EX1;允许中断;允许中断BEGIN: MOVR0,#78H;数据暂存区;数据暂存区首址首址MOV R2,#08H;8路计数初值路计数初值MOV DPTR,#6000H;指向;指向0809 IN0通道地址通道地址MOV A,#00H;此指令可省,;此指令可省,A可为任意值可为任意值料粕滩振幸摹徘盛崩竭栅柯大唆伏钦张炕峭溢扯锨陆磨佯元逞撑吵拣摩孙片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 LP:MOVX DPTR,A;启动;启动A/D转换转换SJMP $;等待中断;等待中断DJNZ R2,LP;巡回未完继续;巡回未完继续SJMP BEGIN;8次检测完成,再重复次检测完成,
532、再重复;中断服务程序;中断服务程序EX_1: MOVX A,DPTR;读;读A/D转换结果转换结果MOV R0,A;存数;存数INC DPTR;更新通道;更新通道INC R0;更新暂存单元;更新暂存单元RETI;返回;返回END至此可以总结出至此可以总结出ADC0809的使用要点如下。的使用要点如下。(1)启动:实际上使)启动:实际上使START产生正脉冲,同时锁存地址信息。产生正脉冲,同时锁存地址信息。(2)等待:可以采用查询、延时和中断方式,直到)等待:可以采用查询、延时和中断方式,直到EOC= 1。(3)读取数据:当)读取数据:当EOC=1后,使后,使OE=1就可读得数字量。就可读得数字
533、量。整帛迸林伦其糊皂拒笨餐蒙肌放盯梗批孪孤疤懒上彰惮幌皿绷贤密眩弗浪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.3.4 7.3.4 串行接口串行接口A/DA/D的应用的应用 TLC1549是是10位位I2C串行串行A/D转换器,管脚如图转换器,管脚如图7-17所示。各所示。各管脚功能说明如下。图管脚功能说明如下。图7-17 TLC1549管脚管脚TLC1549VCCREF(1)REF+:基准电压高端,常接:基准电压高端,常接 +VCC。(2)REF:基准电压低端,常接地。:基准电压低端,常接地。(3)AIN:模拟电压输入端,要求驱动源有大于:模拟电压输入端,要求驱动源
534、有大于10mA的电的电流驱动能力。流驱动能力。(4):片选端,低电平有效。):片选端,低电平有效。(5)DOUT:转换后的数据输出端,片选无效时为高阻态;:转换后的数据输出端,片选无效时为高阻态;片选有效时,在时钟信号作用下数据从高位到低位依次输出。片选有效时,在时钟信号作用下数据从高位到低位依次输出。(6)CLK:时钟端,最高频率达:时钟端,最高频率达2.1MHz。(7)VCC:电源正端,:电源正端,4.5V5.5V。(8)GND:地。:地。接都那啤戎糟妖铭咬赤琶俺服佰凝耗毡肚凤若酝核璃上掉董斟渣劈匆窥密片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-17 TLC15
535、49管脚方 式I/O时钟数引脚6处出现MSB*快速方式方式1转换周期之间为高电平10下降沿方式2连续低电平10在21s内方式3转换周期之间为高电平11至16*下降沿方式4连续低电平16*在21s内慢速方式方式5转换周期之间为高电平11至16*下降沿方式6连续低电平16*第16个时钟下降沿表7-3 TLC1549工作方式加芜穴危麓艇凑为狙密循链罕业台命棕吊见师淡舒纂引涪扼吗斜凑哭赣寂片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 其中方式其中方式1与方式与方式3属于同一类型,方式属于同一类型,方式2与方式与方式4属于同属于同一类型,快速与慢速并没有本质区别,主要取决于一类型,快
536、速与慢速并没有本质区别,主要取决于CLOCK的周期,一般地,的周期,一般地,CLOCK频率大于频率大于280kHz为快速,否则为为快速,否则为低速。若不考虑速度,则方式低速。若不考虑速度,则方式3与方式与方式5相同,方式相同,方式4与方式与方式6也相同。图也相同。图7-18是是TLC1549工作方式工作方式1的时序,图的时序,图7-19是是TLC1549的一个应用实例。的一个应用实例。图7-18 TLC1549工作方式1时序图7-19 TLC1549应用实例剃澄礼掀讶拟箩故剪般在漠宣乡啤邑泻贝文屏哥宝姜倘晋骄内陋基仕播佯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 结合图结
537、合图7-18、图、图7-19,从,从TLC1549读取读取10位数字量,存放在位数字量,存放在21H(高(高2位)、位)、20H(低(低8位)单元中,程位)单元中,程序如下:序如下:CS_1549EQU P1.7CLK_1549EQU P1.5DOUT_1549EQU P1.6;定义片选、时钟等;定义片选、时钟等 RD: CLRCLK_1549CLRCS_1549;片选为;片选为0MOVR7,#2LCALLRD_1549;读高;读高2位位ANLA,#00000011B;保留;保留2位数据,其余清零位数据,其余清零MOV21H,A;高;高2位暂存在位暂存在21H单元中单元中MOVR7,#8LCA
538、LLRD_1549;读低;读低8位位SETBCS_1549CLRCLK_1549;10位读完片选恢复位读完片选恢复1,时钟复,时钟复0MOV20H,A;低;低8位保存在位保存在20H单元中单元中NOPRET;+读一位数据子程序读一位数据子程序RD_1549:CLR CLK_1549MOV C,DOUT_1549RLC ASETB CLK_1549DJNZ R7,RD_1549RET砌页盛所歼冒鞘袖孤磊视驳削枕态话圆萌寡尉呵醉淳娘爹搞傻罚艳挎瞅复片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.4 D/A7.4 D/A接口技术接口技术7.4.1 D/A转换器概述 D/A转换器
539、输入的是数字量,经转换后输出的是模拟量。转换器输入的是数字量,经转换后输出的是模拟量。D/A转换器的主要指标有分辨率、线性度、转换精度、建立转换器的主要指标有分辨率、线性度、转换精度、建立时间、温度系数。下面就部分指标作一介绍。时间、温度系数。下面就部分指标作一介绍。(1)分辨率:分辨率是)分辨率:分辨率是D/A转换器对输入数字量变化一个数转换器对输入数字量变化一个数码时对应模拟量的变化量,表示为码时对应模拟量的变化量,表示为“模拟量满量程模拟量满量程/2 n”,n为为D/A转换器的位数。分辨率也可用相对分辨率转换器的位数。分辨率也可用相对分辨率1/2 n来表示。来表示。例如,例如,8位数的分
540、辨率为位数的分辨率为1/256,10位数的分辨率为位数的分辨率为1/1024等。等。因此,数字量位数越多,分辨率就越高,亦即转换器对输入因此,数字量位数越多,分辨率就越高,亦即转换器对输入量变化的敏感程度也就越高。使用时,应根据分辨率的需要量变化的敏感程度也就越高。使用时,应根据分辨率的需要来选定转换器的位数,来选定转换器的位数,D/A转换器常用的有转换器常用的有8位、位、10位、位、12位位三种。三种。靠古帜缅谦焦糯澄廓碎哉陪疤亲矗蛊逢秒箔溢峦囱吟密砌烬匪活嫌肯婿戎片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)转换精度:转换精度以最大静态转换误差的形式给出。)转换精
541、度:转换精度以最大静态转换误差的形式给出。应该指出,转换精度与分辨率是两个不同的概念。转换精度应该指出,转换精度与分辨率是两个不同的概念。转换精度是指转换后所得的实际值相对于理想值的接近程度。而分辨是指转换后所得的实际值相对于理想值的接近程度。而分辨率是指能够对转换结果发生影响的最小输入量。率是指能够对转换结果发生影响的最小输入量。(3)建立时间:建立时间是描述)建立时间:建立时间是描述D/A转换速度快慢的一个参转换速度快慢的一个参数,指从输入数字量发生变化后,输出模拟量达到稳定值数,指从输入数字量发生变化后,输出模拟量达到稳定值(即进入规定的精度范围内)所需要的时间。(即进入规定的精度范围内
542、)所需要的时间。愈茶徒篮锅妓立雪佐暗朔稿棉坝文赵以慎唁怨莽喂叼鹃袒鸟悠虞土骇惑鸟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.4.2 DAC08327.4.2 DAC0832内部逻辑结构内部逻辑结构 在在8位位D/A转换器中,常用的型号有转换器中,常用的型号有DAC0830/31/32,图,图7-20是是DAC0832的内部结构。从该图中可见的内部结构。从该图中可见DAC0832内部有内部有两个两个8位寄存器和一个位寄存器和一个8位位D/A转换器,设置两个寄存器的好转换器,设置两个寄存器的好处是可以进行两次缓冲,在双路需要同步输出时硬件电路设处是可以进行两次缓冲,在双路
543、需要同步输出时硬件电路设计会非常简单。计会非常简单。图图7-21是是DAC0832的外部管脚,各引脚的功能分别如下。的外部管脚,各引脚的功能分别如下。 图7-20 DAC0832内部结构 图7-21 DAC0832 外部管脚卒酋况汗辫誊铭寝环淹药侍漱沸嘛众碰耗和侩惫旬矢蛾挖膝堡尊船鼓嚏谐片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1)DI7DI0:转换数据输入。:转换数据输入。(2):片选信号(输入),低电平有效。):片选信号(输入),低电平有效。(3)ILE:数据锁存允许信号(输入),高电平有效。:数据锁存允许信号(输入),高电平有效。(4):第):第1写信号(输入)
544、,低电平有效。写信号(输入),低电平有效。(5):第):第2写信号(输入),低电平有效。写信号(输入),低电平有效。(6):数据传送控制信号(输入),低电平有效。):数据传送控制信号(输入),低电平有效。(7)Iout1:电流输出:电流输出1。(8)Iout2:电流输出:电流输出2。Iout1+Iout2=常数。常数。(9)Rfb:反馈电阻端,为了简化,有时可以省却。:反馈电阻端,为了简化,有时可以省却。(10)Vref:基准电压,其电压可正可负,范围是:基准电压,其电压可正可负,范围是10 V10 V。(11)DGND:数字地。:数字地。(12)AGND:模拟地。:模拟地。汐匙说宽谣临貉仙哑
545、物馋菩阅涵耿不萝秸吨匆更贰绕韶检趴做刁浦式展骑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.4.3 DAC08327.4.3 DAC0832的工作方式的工作方式 鉴于鉴于DAC0832内部双缓冲这种特殊结构,在使用时可以内部双缓冲这种特殊结构,在使用时可以有三种工作方式供选择。有三种工作方式供选择。1直通方式直通方式让让DAC0832的的5个控制脚始终有效(除了个控制脚始终有效(除了ILE接高电平之外,接高电平之外,其余都接低电平),这时输入的数字量就直接被转换成模拟其余都接低电平),这时输入的数字量就直接被转换成模拟量,这种方式一般应用在不带微机控制的数字系统中。量,
546、这种方式一般应用在不带微机控制的数字系统中。2单缓冲方式单缓冲方式将将5个控制脚在指令的控制下一次选通,与直通方式的区别个控制脚在指令的控制下一次选通,与直通方式的区别是控制脚受指令控制。为简化控制电路,是控制脚受指令控制。为简化控制电路,5个控制脚往往将个控制脚往往将其中几个先直接接成有效,相当于减少了控制脚,简化外部其中几个先直接接成有效,相当于减少了控制脚,简化外部电路。这种方式应用在微机控制的单路电路。这种方式应用在微机控制的单路D/A输出的场合,图输出的场合,图7-22是是DAC0832单缓冲方式的应用实例。单缓冲方式的应用实例。织弟斗汉欢权陶匝袜惺苗幌猛柏造躯缆笔湖括殴遍晶二石坪连
547、径逸碘灌鞠片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-22 DAC0832 单缓冲方式应用实例奢事盘烘哄佣桃瞪肌早菇呕办芹忆羊右淬漓麓皂般弓睦你慷哇豪茨惧榆右片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 DAC0832是电流输出,为了取得电压输出,须在电压输出端是电流输出,为了取得电压输出,须在电压输出端接运算放大器,而且经过运算放大器后的电压极性是倒相的,接运算放大器,而且经过运算放大器后的电压极性是倒相的,图图7-22中第一个运算放大器输出的模拟电压是中第一个运算放大器输出的模拟电压是0 V5 V(与基准有关),第二个运算放大器的放大倍数为(
548、与基准有关),第二个运算放大器的放大倍数为1,所,所以最后的输出以最后的输出OUT为为0 V5 V。下面结合图。下面结合图7-22编写一个锯编写一个锯齿波发生器的程序:齿波发生器的程序:ORG00000HSJMPSTARTORG0050HSTART: MOV DPTR,#7FFFH;设置;设置D/A地址,图地址,图7-22中中P2.7 = 0 MOV A,#00H;锯齿波起始电压;锯齿波起始电压GO_ON: MOVX DPTR,A;数字量送;数字量送D/A INC A;锯齿波电压递增;锯齿波电压递增 1 SJMP GO_ON;继续送;继续送D/A END 樱讲郎毙配讶豁豺桓疮节垂宏牵伶焦障谐暇
549、乍唆耍橡步枷淋腻泛渊咱选察片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3双缓冲方式双缓冲方式在多路在多路D/A转换需要同步的时候,双缓转换需要同步的时候,双缓冲方式是非常有用的,比如数字式示波冲方式是非常有用的,比如数字式示波器,要求器,要求X轴的扫描电压与轴的扫描电压与Y轴的电压必轴的电压必须同步输出,否则造成光点偏离实际的须同步输出,否则造成光点偏离实际的位置(尽管有时肉眼没法区分)。双缓位置(尽管有时肉眼没法区分)。双缓冲的基本思想是:数据可以分次(不同冲的基本思想是:数据可以分次(不同步)传送到各个步)传送到各个D/A转换器,由各个转换器,由各个D/A内部的输入寄
550、存器将数据暂存下来,然内部的输入寄存器将数据暂存下来,然后用同一条指令同时打开各个后用同一条指令同时打开各个D/A内部内部的第二级锁存器(即的第二级锁存器(即DA锁存器),最后锁存器),最后由各自内部的由各自内部的D/A转换器输出对应的模转换器输出对应的模拟量,实现最终输出的同步。典型应用拟量,实现最终输出的同步。典型应用如图如图7-23所示,下面给出其应用程序。所示,下面给出其应用程序。图7-23 DAC0832双缓冲应用实例孔秒醉除讥滤诈蒙突铁笺统辉笺澜羔洋沙竟继浪继虹届任又华绵鸦氖泼洽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图形显示器图形显示器X轴的数据在轴的数
551、据在40H单元,单元,Y轴的数据在轴的数据在41H单元,单元,要求要求X轴、轴、Y轴的轴的D/A同步输出。同步输出。OUT: MOV DPTR,#0DFFFH;图中接;图中接0832(1)的)的P2.5=0MOV A,40H;取;取X轴数据轴数据MOVX DPTR,A;X轴数据送入轴数据送入0832(1)并锁存)并锁存MOV DPTR,#0BFFFH;图中接;图中接0832(2)的)的P2.6=0MOV A,41H;取;取Y轴数据轴数据MOVX DPTR,A;Y轴数据送入轴数据送入0832(2)并锁存)并锁存MOV DPTR,#7FFFH;同时指向;同时指向0832(1)、()、(2)的)的M
552、OVX DPTR,A;X、Y轴同步转换并输出轴同步转换并输出殃圈粱餐锥篷炕赵赶傣擂垮奎晶务豫壹晌祷揪郎铅栖徽钧功哼炔旷送铡太片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.4.4 7.4.4 串行接口串行接口D/AD/A的应用的应用图图7-24 TLC5615管脚管脚与与A/D相类似,在速度要求不高的系统中,用相类似,在速度要求不高的系统中,用I2C串行串行D/A转转换器能更加简化硬件电路,而且同样具有精度高的优点,换器能更加简化硬件电路,而且同样具有精度高的优点,TLC5615是常用的是常用的10位串行位串行D/A,图,图7-24是它的管脚图,各是它的管脚图,各脚的功能
553、如下。脚的功能如下。CS(1)DIN:串行数据输入端。:串行数据输入端。(2)SCLK:串行时钟输入。:串行时钟输入。(3):片选信号,低电平有效。):片选信号,低电平有效。(4)OUT:串行数据输出,用于级联。:串行数据输出,用于级联。(5)AGND:模拟地。:模拟地。(6)REF:基准电压输入。:基准电压输入。(7)VDD:电源输入(:电源输入(4.5V5.5V)。)。 图7-24 TLC5615管脚较转墒励惦狞部舵遂屉绅洗怂撤酋壳掏艇杀增偶仗遁揣往犀击猛剃莱颈蕉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图7-25是是TLC1565的时序图,数据的输入是高位(的时
554、序图,数据的输入是高位(MSB)在)在前,低位(前,低位(LSB)在后。)在后。TLC5615内部的数据锁存器是内部的数据锁存器是12位位的,数据送往的,数据送往TLC5615时有两种格式。图时有两种格式。图7-26(a)是)是12位的位的数据格式,在数据格式,在10位有效数据的后面另外添加两位数字位有效数据的后面另外添加两位数字XX(无关位不影响转换的结果)。图(无关位不影响转换的结果)。图7-26(b)是)是16位的数据格位的数据格式,可用于级联,它是在式,可用于级联,它是在10位有效数据的后面加上两位无关位有效数据的后面加上两位无关位位XX,同时在前面添加,同时在前面添加4个虚位(内部不
555、会被锁存的)。个虚位(内部不会被锁存的)。图7-25 TLC5615时序图扩贺仟逞禹豪钥堡舰霓垂惦追抉毋泼肘钵恳蜜压固石颇团伊肃疮痔壤投尾片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (a)送往TLC5615的12位数据结构(b)送往TLC5615的16位数据结构图7-26 送往TLC5615的数据结构呼镜蝴薯朋旭斑殿它疵汛嘶泅傣援于磨戈狭搓苔须液导疥砷磁溅法陕溢悠片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 TLC5615的实际应用如图的实际应用如图7-27所示,需要说明的是,基所示,需要说明的是,基准电压最大值为准电压最大值为“VDD-2V”,根据内
556、部换算关系:模拟量,根据内部换算关系:模拟量=2数字量数字量/1024,实际基准取,实际基准取“2.5V”最好。结合此图,下面最好。结合此图,下面给出其应用例子。给出其应用例子。图7-27 TLC5615应用实例撞军铝绷依呻吏谰项乾毛毛坍倾惕拯肚羞援瑶徒躁驼山示疲堕泽朔壕慰醛片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 例如,将内存单元例如,将内存单元31H、30H中的中的10位数据(其中位数据(其中31H中中D1、D0是数据的高是数据的高2位,位,30H中中D7、D6、D0是数据的低是数据的低8位)送往位)送往TLC1565进行进行D/A转换。转换。分析:在数据送到分析:
557、在数据送到TLC5615前,首先要将数据装前,首先要将数据装“拼拼”成成TLC5615本身的数据格式,按照图本身的数据格式,按照图7-26(b)的)的16位的数据位的数据格式,只要将格式,只要将31H、30H单元联合进行左移单元联合进行左移2次就行,传送时,次就行,传送时,先传送先传送31H高高8位(含实际有效数据位(含实际有效数据4位),再送位),再送30H低低8位位(含实际有效数据(含实际有效数据6位),程序如下:位),程序如下:;D/A转换子程序,转换子程序,DA_DH为数据高为数据高2位,位,DA_DL为数据低为数据低8位位 CS_5615EQUP1.3 CLK_5615 EQUP1.
558、2 DIN_5615 EQU P1.1;定义片选等地址;定义片选等地址DA_DL DATA30HDA_DH DATA31H;+DAOUT:MOVA,DA_DL;31H、30H联合左移联合左移2位位RLCAMOVDA_DL,AMOVA,DA_DH类绳崇寇渍坎镐警幕逼孵心镍粥友谷隧晶暂个曾弊夸庶蝇型坏有腋冒襄瓮片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 RLCAMOVDA_DH,AMOVA,DA_DLRLCAMOVDA_DL,AMOVA,DA_DHRLCAMOVDA_DH,ACLRCLK_5615;时钟清零;时钟清零CLRCS_5615;片选有效;片选有效NOPNOPMOVR
559、7,#16 ;定义;定义16次循环次循环DAOUT1: MOVA,DA_DL;31H、30H联合移入联合移入D/ARLCAMOVDA_DL,AMOVA,DA_DHRLCAMOVDA_DH,AMOVDIN_5615,CSETBCLK_5615NOPNOPCLRCLK_5615DJNZR7,DAOUT1SETBCS_5615CLRDIN_5615RET菌呐郊柜伯霉叶祖湖翔嚏堤则膏鼎闯氛甘富韶欲拉洼奢恒噪政钨肖挛痴挞片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.5 7.5 串行串行RAMRAM接口技术接口技术 在第在第2章曾经详细地介绍了并行接口的章曾经详细地介绍了并行接口的
560、RAM(如(如RAM6116/6264等)扩展技术,在实际应用过程中,等)扩展技术,在实际应用过程中,RAM虽虽然读、写方便,但掉电后数据无法保存,这在有些系统中是然读、写方便,但掉电后数据无法保存,这在有些系统中是无法容忍的,早期为了保存数据,采用了备用电池,这样比无法容忍的,早期为了保存数据,采用了备用电池,这样比较麻烦,而且电池久了失效后数据照样没法保护。随着半导较麻烦,而且电池久了失效后数据照样没法保护。随着半导体的发展,体的发展,EEPROM技术较好地解决了这一难题,技术较好地解决了这一难题,AT24Cxx系列存储器是采用系列存储器是采用EEPROM技术的串行传输存储技术的串行传输存
561、储器,它既有普通器,它既有普通RAM能在常态(正常电源电压)下能在常态(正常电源电压)下“随机存随机存取取”的优点,也有的优点,也有ROM掉电数据不消失的特长,而且采用掉电数据不消失的特长,而且采用I2C串行接口,硬件资源消耗少,电路简单,在实际系统中串行接口,硬件资源消耗少,电路简单,在实际系统中得到了广泛的应用。得到了广泛的应用。盎辰霸泣敬溢健毯拐朗道翰羡缺携每号刺评射跌龄耽喉汲阂豆意磅呐云兜片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 AT24Cxx系列中有多款型号,如系列中有多款型号,如AT24C01、02、08等,等,它的容量可以用最后两位数除以它的容量可以用最后
562、两位数除以8来计算(单位是来计算(单位是KB),如),如AT24C01就是就是1/8 KB,也即,也即128B,AT24C08就是就是1KB。本节。本节以以AT24C02(256B)为例进行介绍,其管脚如图)为例进行介绍,其管脚如图7-28所示,所示,各脚功能如下。各脚功能如下。图7-28 AT24C02管脚淘铭庸条葬坏栽查眷掩狱二娜吝迅乡未白沤鸳寐韧州贤彦鲍耪兼鞠镣啸侧片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1)A0、A1、A2:地址输入。:地址输入。(2)SDA:串行数据输入。:串行数据输入。(3)SCL:时钟输入。:时钟输入。(4)WP:写控制,低电平可写。:
563、写控制,低电平可写。(5)VCC:电源正(:电源正(+5V)。)。(6)GND:接地。:接地。图图7-29是是AT24C02起始、停止的定义。起始、停止的定义。图7-29 AT24C02起始、停止定义釉骡磐功雨涤俱斌牲些羔复雍袱宜菏基侨藩漳名硅灵窟抡佯更脸礁细捍飞片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图7-30是是AT24C02应答信号定义。应答信号定义。图7-30 AT24C02接收应答信号定义裴喝蹿艘彼裙率犀釉凭惹妇门铲尖椿坞圭您篷揖虚静亡逻俱婶熏蛮真喷估片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-31 AT24C02字节写格式定义
564、娇眠袱腮奏良撬战砂萝角婶知蛔绊极澄隶拴松睬眺劣拧棕衬回昨速双危圆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-32 AT24C02字节读格式定义览斧磅仍陇区啼律坪瞧贴邢醚惊控耍靡莫缴转霸愿哀耕蹈磐乱绿你认叛遏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-33 AT24C02应用实例驹帘嘎喘煌堪敝们黄债贝躯播勤行菩竣油嗓坞登伏到六勾翻脾旬滞疮蜗疥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 SDABITP1.5SCLBITP1.4SWCBITP1.3 F24C02_ADD DATA50H;地址单元定义;地址单元定义 F24C
565、02_DATADATA51H;数据单元定义;数据单元定义 ;- ;24C02 字节写操作子程序。字节写操作子程序。WR_24C02为写入子程序,为写入子程序,RD_24C02是读取子程序,是读取子程序, ;F24C02_ADD为写存贮器为写存贮器24C02的地址字节;的地址字节;F24C02_DATA为写入数据的缓冲区为写入数据的缓冲区 ;占用资源:;占用资源:ACC,20H,PSW,R7WR_24C02:PUSHACC;保护;保护原来原来ACC、PSW的内容的内容 PUSHPSW CLRWP LCALLSTART;发起;发起始信号始信号 MOVA,#0A0H;指定芯片地址;指定芯片地址 LC
566、ALLARL_SDA LCALLINACK;读应;读应答信号答信号 JNB20h.4,WR24_1;查应;查应答标志答标志 LJMPWR24_3 泽危刷瞎莎踪百戌容抠忌张剁陌在拜橙埠徘旱柳那按得拭怒村峦张吟内剑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 WR24_1: MOVA,F24C02_ADD;写单元地址;写单元地址 LCALLARL_SDA LCALLINACK;读应;读应答信号答信号 JNB20h.4,WR24_2 LJMPWR24_3WR24_ 2: MOVA,F24C02_DATA;写数据;写数据 LCALLARL_SDA LCALLINACK;读应;读应答
567、信号答信号WR24_3: LCALLSTOP;发停;发停止信号止信号 SETB WP POP PSW;恢复数据;恢复数据 POP ACC RET ;- ;24C02 随机字节读子程序随机字节读子程序 ;F24C02_ADD为读存贮器为读存贮器24C02的地址字节的地址字节;F24C02_DATA为读入数据为读入数据的缓冲区的缓冲区 ;-RD_24C02:PUSHACC;保护;保护原来原来ACC的内容的内容PUSH PSW盗瀑旁傅颈睹找钧僧脑掺怕肇疆屏添峭贿室血悼矽篇徘磅幻措指谐戍辅剩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 LCALLSTART;发起始信号;发起始信号
568、MOVA,#0A0H LCALLARL_SDA;指定芯片地址;指定芯片地址 LCALLINACK;读应;读应答信号答信号 JNB20h.4,RD24_1;查应答标志;查应答标志 LJMPRD_24C02;失败,重读;失败,重读RD24_1:MOVA ,F24C02_ADD;指定;指定读单元地址读单元地址LCALLARL_SDALCALLINACK;读应答信号;读应答信号JNB20h.4,RD24_2;查应答标志;查应答标志LJMPRD_24C02;失败,重读;失败,重读RD24_2:LCALLSTARTMOVA,#0A1H;准备读数据;准备读数据LCALLARL_SDALCALLINACK侣嗡
569、光吉记犁促橡兵缔笨添膜姨音缨叔麓僵毒浅测看荡理雍铡篆甥沾佯谷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ;读应答信号;读应答信号JNB20h.4,RD24_3;查应答标志;查应答标志LJMPRD_24C02;失败,重读;失败,重读RD24_3:LCALLSDA_ARL;读数据;读数据NOPRD24_4:LCALLSTOP;发停止位;发停止位MOVF24C02_DATA,A;存数据;存数据POP PSWPOPACCRET;- ;24C02中的数据读入累加器中的数据读入累加器ASDA_ARL:MOVR7,#8SDA_A1:SETBSCLNOPNOPNOPNOPNOPMOVC,
570、SDARLC ACLR SCL牧撑地您雾拆孩辆暂拨棕崔涂坡耳络周筏存察基漠债役袍汲习留故身悲享片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 NOPNOPNOPDJNZR7,SDA_A1NOPNOPRET ;- ;应答位检查 INACK: SETBSDA;应答位检查 SETBSCL CLR20h.4 JNBSDA,CEND SETB20h.4CEND: CLRSCL NOP NOP NOP NOP RET ;-骄臆雅赴歉违袋藤六杏珊朱讣羞掣檄夺宪悍袭喇扔滥胃亭京礁鼎涧劣怯部片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ;累加器;累加器A中的内容写入中的内容
571、写入24C02ARL_SDA:MOVR7,#8ARL_S1:RLCAMOVSDA,CSETBSCLNOPNOPNOPNOPCLRSCLNOPNOPNOPDJNZR7,ARL_S1NOPNOPRET ;-密尤阀酱夺葱噬款恼咋俞硝逆怀懈启布碴昧策摊辙颠丽寿阿娶岭瑶允袭旷片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ;产生起始条件;产生起始条件START: SETB SDA;产生起始条件;产生起始条件 SETBSCL NOP NOP NOP NOP CLR SDA NOP NOP NOP NOP CLR SCL RET ;- ;产生停止条件;产生停止条件炊撩扣奖煤藉彤务侥拇褂沪液
572、瘴鳞又韦碰工纽猴爬抒贬攻辞炔首漳墨蜀万片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 STOP: CLRSDA;产生停止条件;产生停止条件 SETBSCL NOP NOP NOP NOP SETBSDA NOP NOP NOP NOP CLR SCL RET ;- ;发送应答信号;发送应答信号OUTACK:CLR SDA;发送应答信号;发送应答信号SETBSCLNOPNOPNOPNOPCLR SCLRET筷帚瑞燃淹掌谤刊腹蛊耐种窥烛湃壳崔拄土才令飘构啤琢忧壤诀亚歼予稳片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.6 7.6 可编程可编程I/OI/O接口
573、技术接口技术所谓可编程的接口芯片是指其功能可由微处理机的指令来加所谓可编程的接口芯片是指其功能可由微处理机的指令来加以以“指定指定”的接口芯片,利用编程的方法,可以使一个接口的接口芯片,利用编程的方法,可以使一个接口芯片执行不同的接口功能。目前,各生产厂家已提供了很多芯片执行不同的接口功能。目前,各生产厂家已提供了很多系列的可编程接口,系列的可编程接口,MCS-51单片机常用的两种接口芯片是单片机常用的两种接口芯片是8255A以及以及8155。7.6.1 8255A可编程并行I/O出接口18255A的结构的结构8255A内部集成了锁存、缓冲及与内部集成了锁存、缓冲及与CPU联络的控制逻辑,是联
574、络的控制逻辑,是一种通用性强、应用广泛的一种通用性强、应用广泛的I/O接口芯片。图接口芯片。图7-34是是8255A的的外部管脚和内部结构图。外部管脚和内部结构图。 秤宦淄荔否肘造极窥影劈虚激部扒泥箔蹭值拔铡哥窟埃炒圾淤荧鸵产漏谊片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图7-34 8255A管脚及内部结构郊砷挖蛋掌敢桅寇保鬼醋纤国咨鼎榜渡扩倍煌铂姿棵竭等陨靴书貌烹柔最片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (1)A口、口、B口和口和C口:口:A口、口、B口和口和C口均为口均为8位位I/O数据口,数据口,但结构上略有差别。但结构上略有差别。A口
575、由一个口由一个8位的数据输出缓冲位的数据输出缓冲/锁存器锁存器和一个和一个8位的数据输入缓冲位的数据输入缓冲/锁存器组成;锁存器组成;B口由一个口由一个8位的数位的数据输出缓冲据输出缓冲/锁存器和一个锁存器和一个8位的数据输入缓冲器组成;位的数据输入缓冲器组成;C口口由一个由一个8位数据输出锁存器位数据输出锁存器/缓冲器和一个缓冲器和一个8位数据输入缓冲位数据输入缓冲器(输入不锁存)组成;三个端口都可以和外设相连,分别器(输入不锁存)组成;三个端口都可以和外设相连,分别传送外设的输入传送外设的输入/输出数据或控制信息。输出数据或控制信息。(2)A、B组控制电路:这是两组根据组控制电路:这是两组
576、根据CPU的命令字控制的命令字控制8255A工作方式的电路。工作方式的电路。A组控制组控制A口及口及C口的高口的高4位,位,B组控组控制制B口及口及C口的低口的低4位。位。(3)数据缓冲器:这是一个双向三态)数据缓冲器:这是一个双向三态8位的驱动口,用于和位的驱动口,用于和单片机的数据总线相连,传送数据或控制信息。单片机的数据总线相连,传送数据或控制信息。(4)读)读/写控制逻辑:这部分电路接收写控制逻辑:这部分电路接收MCS-51送来的读送来的读/写写命令和选口地址,用于控制对命令和选口地址,用于控制对8255A的读的读/写。写。久纠式褥烷威蔷丑染肩地矮诬丘宋夷惮础啊邦蝎帅贿繁崔方靖完竟脾涕
577、垂片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 28255A的外部引脚及功能的外部引脚及功能(1)数据线()数据线(8条):条):D0D7为数据总线,用于传送为数据总线,用于传送CPU和和8255A之间的数据、命令和状态字。之间的数据、命令和状态字。(2)控制线和寻址线()控制线和寻址线(6条):条): RESET。复位信号,输入高电平有效。一般和单片机的。复位信号,输入高电平有效。一般和单片机的复位相连,复位后,复位相连,复位后,8255A所有内部寄存器清零,所有口都所有内部寄存器清零,所有口都为输入方式。为输入方式。 、。读、。读/写信号线,低电平有效。当为写信号线,低
578、电平有效。当为0时(必为时(必为1),),所选的所选的8255A处于读状态,处于读状态,8255A送出信息到送出信息到CPU;0时时(必为(必为1),则为写状态。),则为写状态。 。片选线,低电平有效。片选线,低电平有效。(3)A0、A1:地址输入线。这两位的:地址输入线。这两位的4种组合种组合00、01、10、11分别用于选择分别用于选择A口、口、B口、口、C口和控制寄存器。口和控制寄存器。(4)I/O口线(口线(24条):条):PA0PA7、PB0PB7、PC0PC7为为24条双向三态条双向三态I/O总线,分别与总线,分别与A口、口、B口、口、C口相对应,口相对应,用于用于8255A和外设
579、之间传送数据。和外设之间传送数据。(5)电源线()电源线(2条):条):VCC为为+5 V,GND为地线。为地线。悦宜抚屹幌眨曾歇寥亭辉棒靠涉痢搐吧而墟芝县绑笺疑峦羌报置君搀拉都片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 38255A的接口技术的接口技术根据第根据第2章介绍的硬件扩展的基本思想,结合章介绍的硬件扩展的基本思想,结合8255A各管脚本各管脚本身的功能,我们很容易将身的功能,我们很容易将8255A与与MCS-51单片机连起来,为单片机连起来,为单片机系统增加单片机系统增加3个并行端口,图个并行端口,图7-35是典型的扩展图。是典型的扩展图。 图7-35 825
580、5A与单片机连接图旷巴萧汇玲光怒轻碌畸令傍玛祁施绒零们似芍夫蚜押讯滥莱殉艺营剥纪甭片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 在在8255A内部,内部,PA、PB、PC及控制单元的地址由及控制单元的地址由A1、A0、决定,如表决定,如表7-4所示。所示。A1 A0 输入操作(读)0 0 0 1 0A口数据总线0 1 0 1 0B口数据总线1 0 0 1 0C口数据总线输出操作(写)0 0 1 0 0数据总线A口0 1 1 0 0数据总线B口1 0 1 0 0 数据总线C口1 1 1 0 0数据总线控制口禁止操作 1数据总线为三态1 1 0 1 0非法状态 1 1 0数据总
581、线为三态因此,可以写出图7-35中8255A的各单元地址如下。PA:FF7CH。PB:FF7DH。PC:FF7EH。控制单元:FF7FH。上述计算中,未用的线均取“1”。藏猴砂唉棋险诌巢掷兰嗜卸养淖枯广严环褒欠久涩谰欠邦饼叉溯悉颁噬锁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 48255A的控制字的控制字8255A的三个端口具体工作在什么方式下,是通过的三个端口具体工作在什么方式下,是通过CPU对控对控制口的写入控制字来决定的。制口的写入控制字来决定的。8255A有两个控制字:方式选有两个控制字:方式选择控制字和择控制字和C口置口置/复位控制字。用户通过程序把这两个控制复
582、位控制字。用户通过程序把这两个控制字送到字送到8255A的控制寄存器(的控制寄存器(A0A1=11)来规定各端口的工)来规定各端口的工作方式,这两个控制字以作方式,这两个控制字以D7作为标志。作为标志。(1)方式选择控制字)方式选择控制字方式选择控制字的格式和定义如图方式选择控制字的格式和定义如图7-36(a)所示。)所示。设设8255A控制字寄存器的地址为控制字寄存器的地址为F3H,试编程使,试编程使A口为方式口为方式0输出,输出,B口为方式口为方式0输入,输入,PC4PC7为输出,为输出,PC0PC3为为输入。其程序为:输入。其程序为:MOV DPTR,#FF7FH;DPTR指向控制口指向
583、控制口MOV A,91H;控制字为;控制字为10000011MOVX DPTR,A;控制字写入控制单元;控制字写入控制单元猫涛框伏伪战厢醒交窃群瑟宪曼最区蒜闪全耶扫隔信药肝灸噎酱鳞绥来罪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 恰泉碧远潦砸辩磺下涡贸舱旧札廓蜕忱混舞辩飘秩胳夺胶枝峦科咋腾迄锌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 控制字一旦写入控制单元后,各个端口可以按照设定的方式控制字一旦写入控制单元后,各个端口可以按照设定的方式进行数据传送,如内存中的进行数据传送,如内存中的30H单元的数据送到单元的数据送到PA口,程序口,程序可以表示为:
584、可以表示为:MOV DPTR,#FF7CH;DPTR作地址指作地址指针,指向针,指向PA口口MOV A,30H;取;取30H单元数据单元数据MOVX DPTR,A;数据送到;数据送到PA口口又如从又如从PC口的低口的低4位读入数据,存入内部位读入数据,存入内部40H单元,程序可单元,程序可以表示为:以表示为:MOV DPTR,#FF7EH;DPTR作地址指作地址指针,指向针,指向PC口口MOVX A,DPTR;从;从PC口读入数据口读入数据ANL A,#00001111 B;因为;因为PC口高口高4位是输出,读入位是输出,读入有效的只有低有效的只有低4位位MOV 40H,A;保存数据;保存数据
585、掏零挛桑件章罐街旱石掂舟蒸愉鄙粉杰替咎葛生吞扭岛摊嚼贿筏捻巫洒最片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)C口置口置/复位控制字复位控制字C口置口置/复位控制字的格式和定义如图复位控制字的格式和定义如图7-36(b)所示。)所示。C口具口具有位操作功能,把一个置有位操作功能,把一个置/复位控制字送入复位控制字送入8255A的控制寄存的控制寄存器,就能将器,就能将C口的某一位置口的某一位置1或清零而不影响其他位的状态。或清零而不影响其他位的状态。例如:在不影响其他位的情况下,将例如:在不影响其他位的情况下,将PC6置置“1”,程序可以,程序可以表示为:表示为:MOV
586、 DPTR,#0FF7FH;DPTR作地址指作地址指针,指向控制口针,指向控制口MOV A,#00001101 B;PC口控制字口控制字MOVX DPTR,A;写入控制单元;写入控制单元锌臂重疙绊牟招出挖罪绸竭吝拐溯逛烛食耙棘找酵怠逮恬瑶斋嚣桌坊巨疵片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 58255A的工作方式的工作方式8255A有三种工作方式:方式有三种工作方式:方式0、方式、方式1、方式、方式2。方式的选择。方式的选择是通过上述写控制字的方法来完成的。是通过上述写控制字的方法来完成的。(1)方式)方式0(基本输入(基本输入/输出方式):输出方式):A口、口、B口及
587、口及C口高口高4位、位、低低4位都可以设置输入或输出,不需要选通信号。单片机可位都可以设置输入或输出,不需要选通信号。单片机可以对以对8255A进行进行I/O数据的无条件传送(数据的无条件传送(MOVX指令),外设指令),外设的的I/O数据在数据在8255A的各端口能得到锁存和缓冲。的各端口能得到锁存和缓冲。(2)方式)方式1(选通输入(选通输入/输出方式):输出方式):A口和口和B口都可以独立口都可以独立地设置为方式地设置为方式1,在这种方式下,在这种方式下,8255A的的A口和口和B口通常用口通常用于传送和它们相连外设的于传送和它们相连外设的I/O数据,数据,C口作为口作为A口和口和B口的
588、握口的握手联络线,以实现中断方式传送手联络线,以实现中断方式传送I/O数据,数据,C口作为联络线的口作为联络线的各位分配是在设计各位分配是在设计8255A时规定的。时规定的。(3)方式)方式2(双向传送方式):此方式仅适用于(双向传送方式):此方式仅适用于PA,PB没没有工作方式有工作方式2。在这种方式下,。在这种方式下,PC口高口高5位作为位作为PA口的联络口的联络信号,低信号,低3位可以工作在方式位可以工作在方式0、方式、方式1。8255A有关方式有关方式1、方式、方式2的应用可参考相关书籍。的应用可参考相关书籍。齐功氧拥或罩尿氖聘佯懈橡充皋饯渭利月桅殿众苔返垃焰酮泻凭澳汁朔夜片机基础知识
589、-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.6.2 81557.6.2 8155可编程多功能接口可编程多功能接口8155芯片含有芯片含有2568位静态位静态RAM,两个可编程的,两个可编程的8位位I/O口,口,一个可编程的一个可编程的6位位I/O口,一个可编程的口,一个可编程的14位定时器位定时器/计数器。计数器。8155芯片具有地址锁存功能,与芯片具有地址锁存功能,与MCS-51单片机的接口简单,单片机的接口简单,是单片机应用系统中广泛使用的芯片。是单片机应用系统中广泛使用的芯片。8155的逻辑结构如图的逻辑结构如图7-37(a)所示,引脚分布如图)所示,引脚分布如图7-37(
590、b)所示。)所示。齿墩职氏储映佩鼠华汹歼卯镭脚尝典褪钟豺多卜半柯位泰炎凉稚丁得泻咯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 18155的结构与引脚的结构与引脚(1)地址)地址/数据线数据线AD0AD7(8条):是低条):是低8位地址线和数位地址线和数据线的共用输入总线,常和据线的共用输入总线,常和MCS-51单片机的单片机的P0口相连,用口相连,用于分时传送地址数据信息,当于分时传送地址数据信息,当ALE=1时,传送的是地址。时,传送的是地址。(2)I/O口总线(口总线(22条):条):PA0PA7、PB0PB7分别为分别为A、B口线,用于和外设之间传递数据;口线,用于
591、和外设之间传递数据;PC0PC5为为C端口线,端口线,既可与外设传送数据,也可以作为既可与外设传送数据,也可以作为A、B口的控制联络线。口的控制联络线。(3)控制总线()控制总线(8条):条): RESET。复位线,通常与单片机的复位端相连,复位后,。复位线,通常与单片机的复位端相连,复位后,8155的的3个端口都为输入方式。个端口都为输入方式。 、。读、。读/写线,控制写线,控制8155的读、写操作。的读、写操作。冶莲苇腥窄脓梳桅效恕吨幌糜睛碗译仰缘赃淖喝山条瓮酣沛桥越愈傻舞谁片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ALE。地址锁存线,高电平有效。它常和单片机的。地
592、址锁存线,高电平有效。它常和单片机的ALE端端相连,在相连,在ALE的下降沿将单片机的下降沿将单片机P0口输出的低口输出的低8位地址信息位地址信息锁存到锁存到8155内部的地址锁存器中。因此,单片机的内部的地址锁存器中。因此,单片机的P0口和口和8155连接时,无需外接锁存器。连接时,无需外接锁存器。 。片选线,低电平有效。片选线,低电平有效。 IO/。RAM或或I/O口的选择线。为口的选择线。为0时,选中时,选中8155的的256 B RAM;为;为1时,选中时,选中8155片内片内3个个I/O端口以及命令端口以及命令/状态寄存状态寄存器和定时器和定时/计数器。计数器。 TIMERIN、TI
593、MEROUT。定时。定时/计数器的脉冲输入、输计数器的脉冲输入、输出线。出线。TIMERIN是脉冲输入线,其输入脉冲对是脉冲输入线,其输入脉冲对8155内部的内部的14位定时位定时/计数器减计数器减1;TIMEROUT为输出线,当计数器计为输出线,当计数器计满回零时,满回零时,8155从该线输出脉冲或方波,波形形状由计数器从该线输出脉冲或方波,波形形状由计数器的工作方式决定。的工作方式决定。烘哥斡弹篇丸札县硝休宫杆鬃晋苯醒托秉省啼张肺莎况筏榴芝盈砰萎赋锤片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 28155与单片机的连接与单片机的连接根据硬件扩展的基本思想及根据硬件扩展的
594、基本思想及8155各管脚的功能,我们很容易各管脚的功能,我们很容易将其与将其与CPU连起来,如图连起来,如图7-38所示。所示。图7-38 8155与CPU的连接图坏鼻侦蚤珐恬珍酗谷牺寅漆润刘怪逆葫飞迭帜催黍剑割主噪垃苛柿惜劲袍片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 38155的使用的使用8155既包含了既包含了RAM,有具有,有具有I/O口,另外还有定时器。它可口,另外还有定时器。它可以作为片外以作为片外RAM使用,也可以作使用,也可以作I/O使用。使用。当当0,IO/0时,时,8155只能作片外只能作片外RAM使用,共使用,共256 B。其。其寻址范围由、寻址范围
595、由、IO/以及以及AD0AD7的接法决定,当系统同时扩的接法决定,当系统同时扩展片外展片外RAM芯片时,要注意二者的统一编址。在图芯片时,要注意二者的统一编址。在图7-38中:中:计算计算RAM的地址时,的地址时,P2.1=0,P2.2=0,所以地址表如下。,所以地址表如下。IO/P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0xxxxxxA7A6A5A4A3A2A1A0xxxxxx 0 0 0 0 0 0 0 0 0 0xxxxxx 0 0 1 1 1 1 1 1 1 1屈驱哪坦屡映烩劫授绽输集篷侮肤蔼郸幻练假皋
596、饯钩阐妆犁吵烛噬吝萨仓片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 所以地址空间为:所以地址空间为:FC00HFCFFH。对这些对这些RAM的操作使用的操作使用“MOVX”指令进行读、写,此略。指令进行读、写,此略。当当0,IO/1时,可以对时,可以对8155片内片内3个个I/O端口以及命令端口以及命令/状状态寄存器和定时态寄存器和定时/计数器进行操作。与计数器进行操作。与I/O端口和计数器使用端口和计数器使用有关的内部寄存器共有有关的内部寄存器共有6个,需要个,需要3位地址来区分,表位地址来区分,表7-5为地为地址分配情况。址分配情况。 AD7 AD6 AD5 AD4 A
597、D3 AD2 AD1 AD0端 口000命令状态寄存器(命令/状态口)001PA口010PB口011PC口100定时器低8位101定时器高8位表7-5 8155作I/O地址表娟驳例度祭叠炕粤享晓煤谤橙獭休坠氰侍叼泞炳凌阐妹末译锭畅潍怠划冗片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 根据图根据图7-38,可以计算出各端口的地址:此时,可以计算出各端口的地址:此时P2.1 = 0,P2.2 = 1,其余由,其余由AD2、AD1、AD0决定,以决定,以PA口为例列出地址口为例列出地址表如下。表如下。IO/P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7
598、P0.6P0.5P0.4P0.3P0.2P0.1P0.0xxxxxxA7A6A5A4A3A2A1A0xxxxxx 0 1 x x x x x 0 0 1今累仁跟鸿窒迅迎绽勉纬囱手耍逃汪鹃赖岂唯喻呐促阂哈铲述迎王枝捅瑰片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 所以所以PA口地址为口地址为FDF1H。同理,其他地址分别如下。同理,其他地址分别如下。命令状态口:命令状态口:FDF0H。PB口口 :FDF2H。PC口:口:FDF3H。定时器低定时器低8位:位:FDF4H定时器高定时器高8位:位:FDF5H对端口的操作比对端口的操作比RAM复杂,和接口芯片复杂,和接口芯片8255
599、A一样,芯片一样,芯片8155 I/O口的工作方式的确定也是通过对口的工作方式的确定也是通过对8155的命令寄存器的命令寄存器写入控制字来实现的,写入控制字来实现的,8155控制字的格式如图控制字的格式如图7-39所示。所示。图7-39 8155控制字抱揣羞迁瞧旭随括急箱码固踊棉遭姐岁兢卤套例竟长漫皿妥垦悍堰酚拂肤片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 例如,例如,PA、PB、PC工作在基本输入工作在基本输入/输出状态,输出状态,PA为输出、为输出、PB和和PC为输入,程序表达为:为输入,程序表达为:MOV DPTR,#0FDF0H;DPTR作地址指针,指作地址指针,
600、指向命令控制口向命令控制口MOV A,#00000010 B;PA、PB、PC口控制字口控制字MOVX DPTR,A;写入控制单元;写入控制单元在基本输入在基本输入/输出下,对输出下,对PA、PB、PC的操作同样用的操作同样用“MOVX”指令,如从指令,如从PB口读入数据送单片机内部口读入数据送单片机内部30H可以表示为:可以表示为:MOV DPTR,#0FDF2H;DPTR作地址指针,指作地址指针,指向向PB口口MOVX A,DPTR;从;从PB口读入到口读入到ACCMOV 30H,A;数据送目标单元;数据送目标单元内部内部30H的数据送到的数据送到PA口的程序可以表示为:口的程序可以表示为
601、:搏鄂柯拳碌晃聋匡盐叮昼桨默讽庄啃刑伏艺拳嘿窗归畜宦题萎站稀竟峨督片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV DPTR,#0FDF1H;DPTR作地址指针,指作地址指针,指向向PA口口MOV A,30H;取数据送;取数据送ACCMOVX DPTR,A;送到;送到PA口口除了基本输入除了基本输入/输出外(对应图输出外(对应图7-39中的方式中的方式1、方式、方式2),),8155的的I/O还有其他两种工作方式:方式还有其他两种工作方式:方式3时,时,A口为选通口为选通I/O方式,由方式,由C口的低口的低3位作联络线,其余位作位作联络线,其余位作I/O线,线,B口为基
602、本口为基本I/O方式;方式方式;方式4时,时,A、B口均为选通口均为选通I/O方式,方式,C口作为口作为A、B口的联络线。这两种方式的使用这里不作介绍了。口的联络线。这两种方式的使用这里不作介绍了。另外,另外,8155内部还有一个内部还有一个14位的减法定时器位的减法定时器/计数器,当单计数器,当单片机本身定时器资源不够的时候,也是一个好帮手,定时器片机本身定时器资源不够的时候,也是一个好帮手,定时器/计数器的使用可以参考其他资料。计数器的使用可以参考其他资料。须庶锨趾尧温砂甄季袍裸瓦膨夫仿滞蚂绞达大可戌孔授槽振阂熏病瘤釜逞片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 7.
603、7 7.7 习习 题题1根据内部结构,数码管可以分为哪两类?将某个笔画点根据内部结构,数码管可以分为哪两类?将某个笔画点亮时,公共端和笔画端应该是什么样的信号或逻辑?亮时,公共端和笔画端应该是什么样的信号或逻辑?2对共阳数码管,在以下的笔画与字节的对应中,写出数对共阳数码管,在以下的笔画与字节的对应中,写出数字字“6”的笔画码。的笔画码。(1)顺序)顺序(2)倒序)倒序(3)D7 D6D5D4D3D2D1D0DP afcbdge3数码管接口电路设计时,根据笔画端的设计,可以有哪数码管接口电路设计时,根据笔画端的设计,可以有哪两种方案?两种方案?4数码管接口电路设计时,根据公共端的设计,可以有哪
604、数码管接口电路设计时,根据公共端的设计,可以有哪两种方案?两种方案?5设计两位静态、软件译码的设计两位静态、软件译码的LED接口电路。接口电路。6什么是动态扫描方式?与静态相比较有什么优点?什么是动态扫描方式?与静态相比较有什么优点?不羽严晌篙梗育机纷现阔给值咯砍驶浇霜孙现炙售豁恭屯梯家殆阐于凑场片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8.1 8.1 设设 计计 概概 述述 单片机应用系统的设计虽然没有固定的模式,但根据设单片机应用系统的设计虽然没有固定的模式,但根据设计的一般过程,我们可以将其分解成以下几个步骤。计的一般过程,我们可以将其分解成以下几个步骤。1确定任
605、务确定任务在对应用系统进行总体设计时,应根据应用系统提出的各项在对应用系统进行总体设计时,应根据应用系统提出的各项技术性能指标,综合考虑系统的先进性、可靠性、可维护性技术性能指标,综合考虑系统的先进性、可靠性、可维护性及成本、经济效益,拟订出设计方案。在方案设计中,对软及成本、经济效益,拟订出设计方案。在方案设计中,对软件和硬件进行分工是一个重要的环节,原则上,能够由软件件和硬件进行分工是一个重要的环节,原则上,能够由软件来完成的任务就尽可能用软件来实现,以降低硬件成本,简来完成的任务就尽可能用软件来实现,以降低硬件成本,简化硬件结构,减少由硬件引发的故障。同时,还要求大致规化硬件结构,减少由
606、硬件引发的故障。同时,还要求大致规定各接口电路的地址、软件的结构和功能、上下位机的通信定各接口电路的地址、软件的结构和功能、上下位机的通信协议、程序的驻留区域及工作缓冲区等内存划分。协议、程序的驻留区域及工作缓冲区等内存划分。柞酥槐好系躯沦莎捉诀芒诸歌变直氯巨闪催显噶药债猛藉入钒柠最疽嫡磊片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2硬件设计硬件设计硬件设计是指应用系统的电路设计,包括硬件设计是指应用系统的电路设计,包括CPU、控制电路、控制电路、存储器、存储器、I/O接口、接口、A/D和和D/A转换电路等。硬件设计时,应转换电路等。硬件设计时,应考虑留有一定的余量,电路
607、设计力求正确无误,要考虑各类考虑留有一定的余量,电路设计力求正确无误,要考虑各类器件间的电平匹配问题、硬件器件产生的干扰和抗干扰问题器件间的电平匹配问题、硬件器件产生的干扰和抗干扰问题等。有时因为干扰或电平匹配不良引起的系统问题在软件调等。有时因为干扰或电平匹配不良引起的系统问题在软件调试中很难发现,所以硬件设计得越完善,软件的调试也就越试中很难发现,所以硬件设计得越完善,软件的调试也就越顺利。下面讨论顺利。下面讨论MCS-51单片机应用系统硬件电路设计时的单片机应用系统硬件电路设计时的几个问题。几个问题。伪庆旨笨彭坍遏缨褐慷凄勾颠靖桓垒辗界裴膜私好撩烯谆鹤恫波张始躁盎片机基础知识-E书联盟片
608、机基础知识-E书联盟第1章单片机基础知识 (1)CPU的选择的选择目前产品设计时的目前产品设计时的CPU一般是选用一般是选用ATMEL公司的产品,如公司的产品,如AT89C51/52/2051等,性能可靠、价格低廉,调试也比较方等,性能可靠、价格低廉,调试也比较方便。也可以选用与便。也可以选用与MCS-51兼容的兼容的Philips系列产品,其特点系列产品,其特点是内置是内置A/D转换器、看门狗等,如转换器、看门狗等,如P87LPC767等,对于有在等,对于有在线升级需求的可以采用宏晶公司线升级需求的可以采用宏晶公司STC系列的单片机,如系列的单片机,如STC89C54RD+(16KB闪存),
609、或者采用华邦公司的闪存),或者采用华邦公司的W78E516B(内核与(内核与8052完全兼容,具有完全兼容,具有64KB的主闪存和的主闪存和4KB的附加闪存,的附加闪存,4KB闪存中装有专门的装载程序,用来更闪存中装有专门的装载程序,用来更新新64KB闪存中的程序)。选择了有内置程序存储器的闪存中的程序)。选择了有内置程序存储器的CPU后,一般不必扩展程序存储器了,当然,对于特殊的系统,后,一般不必扩展程序存储器了,当然,对于特殊的系统,如包含很多字库的系统,还需要外部的如包含很多字库的系统,还需要外部的EPROM芯片(如芯片(如8 KB的的2764、16KB的的27128和和32KB的的27
610、256等)来存储字型码。等)来存储字型码。括给骗淖擦鸥礼侮一骸纂络犯携贝傣稽置雕硼梧念熟施审垒蘑蛔韧谓矫起片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)数据存储器和)数据存储器和I/O接口接口根据系统功能的要求决定是否配置外部根据系统功能的要求决定是否配置外部RAM或或I/O口。口。RAM芯片可选用芯片可选用6116(2 KB)、)、6264(8 KB)或)或62256(32 KB),原则上应尽量减少芯片数量,使译码电路简单。),原则上应尽量减少芯片数量,使译码电路简单。I/O接口芯片一般选用接口芯片一般选用8155(兼带(兼带256 KB静态静态RAM)或)或825
611、5(3个个8位口),这类芯片具有口线多、硬件接口电路简单等特位口),这类芯片具有口线多、硬件接口电路简单等特点。若口线要求很少,且仅需要简单的输入或输出功能,则点。若口线要求很少,且仅需要简单的输入或输出功能,则可选用不可编程的可选用不可编程的TTL电路或电路或CMOS电路。电路。A/D和和D/A电路芯片主要根据精度、速度和价格等来选用,电路芯片主要根据精度、速度和价格等来选用,同时还要考虑与系统的连接是否方便,如并行接口占用的口同时还要考虑与系统的连接是否方便,如并行接口占用的口线多,串行接口的就非常简单。线多,串行接口的就非常简单。观炙悠散蜕箍驾衬卿寞咸篮伺梧捶钠催扦汛贩骨鸳宵蝴磕腾哑茶搞
612、窝甥孕片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)总线驱动能力)总线驱动能力MCS-51系列单片机的外部扩展功能很强,但系列单片机的外部扩展功能很强,但4个个8位并行口位并行口的负载能力是有限的,的负载能力是有限的,P0口能驱动口能驱动8个个LSTTL电路,电路,P1P3口只能驱动口只能驱动4个个TTL电路。在实际应用中,这些端口不能满电路。在实际应用中,这些端口不能满载工作,这样会降低系统的抗干扰,当负载较重时应采用总载工作,这样会降低系统的抗干扰,当负载较重时应采用总线驱动电路,以提高端口的驱动能力和系统的抗干扰能力。线驱动电路,以提高端口的驱动能力和系统的抗干
613、扰能力。数据总线宜采用双向数据总线宜采用双向8路三态缓冲器路三态缓冲器74LS245作为总线驱动器,作为总线驱动器,地址和控制总线可采用单向地址和控制总线可采用单向8路三态缓冲器路三态缓冲器74LS244作为单向作为单向总线驱动器。总线驱动器。(4)系统速度匹配)系统速度匹配MCS-51系列单片机时钟频率可在系列单片机时钟频率可在2 MHz12 MHz之间任选之间任选(AT89C51/52可以工作在可以工作在24 MHz)。在不影响系统技术性)。在不影响系统技术性能的前提下,时钟频率选择低一些为好,这样可降低系统中能的前提下,时钟频率选择低一些为好,这样可降低系统中对元器件工作速度的要求,从而
614、提高系统的可靠性。对元器件工作速度的要求,从而提高系统的可靠性。灶忿宝拍呕阅评娩惦诲啮棋蕊熏玲腔钠尔乌钥牙持冕阁攻筐时住和泊谷震片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)抗干扰措施)抗干扰措施单片机应用系统的工作环境往往都是具有多种干扰源的现场,单片机应用系统的工作环境往往都是具有多种干扰源的现场,抗干扰措施在硬件电路设计中显得尤为重要,在每个芯片的抗干扰措施在硬件电路设计中显得尤为重要,在每个芯片的VCC和地之间添加一个和地之间添加一个0.1 F的瓷片电容是个简单有效的方的瓷片电容是个简单有效的方法。对有大功率电机的系统中一般选用光电隔离,使干扰大法。对有大功率
615、电机的系统中一般选用光电隔离,使干扰大大减少,另外,在大减少,另外,在PCB设计时的布线也非常有讲究。设计时的布线也非常有讲究。 (6)状态指示)状态指示系统本身的状态指示是用来实现人机交流的,一般都安装在系统本身的状态指示是用来实现人机交流的,一般都安装在面板上。在硬件设计时,在内部板子上稍增加(或预留)些面板上。在硬件设计时,在内部板子上稍增加(或预留)些状态指示电路是非常必要的,对于调试是非常有利的,包括状态指示电路是非常必要的,对于调试是非常有利的,包括日后的维护也是如此。比如通信系统中,收到数据正确后点日后的维护也是如此。比如通信系统中,收到数据正确后点亮一个指示灯(也可以用声音提示
616、),对维护人员来说,若亮一个指示灯(也可以用声音提示),对维护人员来说,若看到指示灯不亮,就重点去检查跟通信相关的硬件和软件部看到指示灯不亮,就重点去检查跟通信相关的硬件和软件部分就可以,而对最终分就可以,而对最终“功能为什么没有实现功能为什么没有实现”可以暂时不去可以暂时不去关心。关心。塑爷费昭尹硬玄滚生耘荤瓤喇私沏城糠羽啸算打肘浑坊府呛挠砒罢停衍职片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3软件设计软件设计应用系统中的软件是根据系统功能要求设计的,应可靠地实应用系统中的软件是根据系统功能要求设计的,应可靠地实现系统的各种功能。应用系统种类繁多,应用软件也各不相现系统
617、的各种功能。应用系统种类繁多,应用软件也各不相同,但是一个优秀的应用系统的软件应具有以下特点。同,但是一个优秀的应用系统的软件应具有以下特点。(1)软件结构清晰、简捷、流程合理。)软件结构清晰、简捷、流程合理。(2)各功能程序实现模块化、系统化。这样,既便于调试、)各功能程序实现模块化、系统化。这样,既便于调试、连接,又便于移植、修改和维护。连接,又便于移植、修改和维护。(3)程序存储区、数据存储区规划合理,既能节约存储容)程序存储区、数据存储区规划合理,既能节约存储容量,又能给程序设计与操作带来方便。量,又能给程序设计与操作带来方便。(4)运行状态实现标志化管理。各个功能程序运行状态、)运行
618、状态实现标志化管理。各个功能程序运行状态、运行结果及运行需求都设置状态标志,以便查询,程序的转运行结果及运行需求都设置状态标志,以便查询,程序的转移、运行、控制都可通过状态标志条件来控制。移、运行、控制都可通过状态标志条件来控制。(5)实现全面软件抗干扰设计。软件抗干扰是计算机应用)实现全面软件抗干扰设计。软件抗干扰是计算机应用系统提高可靠性的有力措施。系统提高可靠性的有力措施。(6)对于要求较高的系统,为了提高运行的可靠性,可在)对于要求较高的系统,为了提高运行的可靠性,可在应用软件中设置自诊断程序,在系统运行前先运行自诊断程应用软件中设置自诊断程序,在系统运行前先运行自诊断程序,用以检查系
619、统各特征参数是否正常。序,用以检查系统各特征参数是否正常。椅献磁池撼簧削臂制橙殿玉所压歼彝皂央百讹炳翱含丢墨采圃饱区影骑回片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 4调试调试硬件与软件的设计需要一个过程,这个过程中很重要的部分硬件与软件的设计需要一个过程,这个过程中很重要的部分是调试,只有通过调试才能确保系统软硬件功能的正常,企是调试,只有通过调试才能确保系统软硬件功能的正常,企业开发中调试一般采用业开发中调试一般采用“PC+仿真器仿真器+目标系统目标系统”(目前学校(目前学校教学过程中单片机的学习大都采用实验箱,对培养应用性人教学过程中单片机的学习大都采用实验箱,对培
620、养应用性人才是不利的),仿真器可以选万利公司的才是不利的),仿真器可以选万利公司的ME52系列仿真器,系列仿真器,该仿真器占用系统资源少,能进行实时仿真,操作简单。不该仿真器占用系统资源少,能进行实时仿真,操作简单。不同仿真器提供的仿真软件尽管不同,但调试的基本方法大致同仿真器提供的仿真软件尽管不同,但调试的基本方法大致相同,即单步运行、自动单步运行、全速运行、断点设置等,相同,即单步运行、自动单步运行、全速运行、断点设置等,在运行过程中结合内部在运行过程中结合内部RAM、SFR查看和硬件的动作反应等,查看和硬件的动作反应等,一般可以查出软件或硬件的故障。一般可以查出软件或硬件的故障。5程序烧
621、录程序烧录当程序软硬件联机调试成功后,系统要脱离原来的仿真平台当程序软硬件联机调试成功后,系统要脱离原来的仿真平台进行独立工作,所以要把程序进行独立工作,所以要把程序“下载下载”到单片机中,这个过到单片机中,这个过程就是程序的烧录。烧录可以用专用编程器,有些程就是程序的烧录。烧录可以用专用编程器,有些CPU内置内置了下载程序,可以在线烧录,如宏晶公司的了下载程序,可以在线烧录,如宏晶公司的STC89C54RD+等。等。届狞掣嚷垢经兄侵湘统仁月详抚獭捍躺咨遣昂勉肪鄂梗骄绢畅罪影方痹啥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8.2 8.2 设设 计计 举举 例例1设计实例
622、一:手机主板稳压芯片在线测试器设计实例一:手机主板稳压芯片在线测试器(1)任务要求描述)任务要求描述某手机主板上有个稳压芯片,当手机在工作时,其稳压输出某手机主板上有个稳压芯片,当手机在工作时,其稳压输出电压必须在电压必须在2.7V2.9V之间(相对误差之间(相对误差1%内),超过此范内),超过此范围则该芯片(主板)不合格。围则该芯片(主板)不合格。(2)设计要求)设计要求因为该产品在生产线上使用,所以必须具备性能可靠、操作因为该产品在生产线上使用,所以必须具备性能可靠、操作简单、结果提示简洁明了(这一点对提高工作效率尤其重要)简单、结果提示简洁明了(这一点对提高工作效率尤其重要),该测试器具
623、有如下功能。,该测试器具有如下功能。 能测量被测端的电压,相对误差能测量被测端的电压,相对误差1%。 线路接通(一般采用专门模型让主板接到测试器)后线路接通(一般采用专门模型让主板接到测试器)后0.5秒内完成测试,以满足生产线的速度要求。秒内完成测试,以满足生产线的速度要求。庄聊飘鬃臀挑官敷票推伤篡莲粕走根颤健吗敛借迟咯苫志悟懈且膘仗窃嗓片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 测试结果采用声音提示和电压值显示两种方式。当测试电测试结果采用声音提示和电压值显示两种方式。当测试电压在正常范围内,在电压显示的同时,有嘟压在正常范围内,在电压显示的同时,有嘟嘟嘟间歇间歇性声音
624、提示;当测试电压超过正常范围时,只显示测量结果,性声音提示;当测试电压超过正常范围时,只显示测量结果,供记录后作返修参考(测试结论:没声音的主板是有问题的)供记录后作返修参考(测试结论:没声音的主板是有问题的)。(3)硬件电路设计)硬件电路设计根据系统要求,硬件电路主要由根据系统要求,硬件电路主要由CPU、晶体振荡电路、复位、晶体振荡电路、复位电路、电路、A/D转换器、数码管显示电路、声音提示电路等组成。转换器、数码管显示电路、声音提示电路等组成。CPU:选用:选用AT89C51,4 KB程序存储器。程序存储器。晶体振荡电路:选用晶体振荡电路:选用6 MHz晶振。晶振。复位:采用上电复位和手工
625、复位。复位:采用上电复位和手工复位。声音提示电路:采用直流蜂鸣器提示,电路简单。声音提示电路:采用直流蜂鸣器提示,电路简单。以上部分如图以上部分如图8-1所示。所示。 鸿押翰棱驮豺疽沽潞逻章淀宽粥札汝单桔耗半驭倒蜂堆曝准雏出娶犹告湘片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-1 复位、晶振、提示电路蘸途汾畅哼误隔绒仕淳缀吮稚案迷潜浩槛嘴靳孽采傅体婪需韧无钦捐蕊茹片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 A/D转换器:转换器:8位的位的A/D的相对误差为的相对误差为1/256(约(约0.4%),),优于相对误差优于相对误差1%指标,所以这里选用
626、指标,所以这里选用ADC0809,与,与CPU的的连接电路如图连接电路如图8-2所示,所示,ADC0809“0”通道的地址是通道的地址是7FFFH,时钟信号来自时钟信号来自CPU的的ALE,A/D的的“EOC”经过反相后作为经过反相后作为CPU的外部中断的外部中断1信号,每次转换结束产生一次中断。信号,每次转换结束产生一次中断。图8-2 DAC0809 与CPU连接图匙软柒熟窗熄构宙秃逊晚齐赊饺米结宦桔若躲啤伤诉揽芹笨茁只鳖恩靖荚片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 数码显示电路:根据测试电压要求,数码管用三位,并数码显示电路:根据测试电压要求,数码管用三位,并将小
627、数点固定,能显示将小数点固定,能显示“x .x x”。为节约硬件投入,采用动。为节约硬件投入,采用动态扫描、软件译码方式:态扫描、软件译码方式:P1口提供段码,口提供段码,P3口口P3.0、P3.1、P3.2作为位控制,如图作为位控制,如图8-3中的中的W1、W2、W3。图8-3 三位动态扫描数码管显示电路熏萧月碉串舒丢袋梗羊泞索喀顷头究拴日矣糠贸葛潭戴滩死浪绊荔抿温大片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)软件设计)软件设计根据系统要求实现的功能,软件部分可以分为以下几个模块。根据系统要求实现的功能,软件部分可以分为以下几个模块。主程序:主要完成端口状态的设置
628、,中断、定时器工作方式主程序:主要完成端口状态的设置,中断、定时器工作方式设置、内部缓冲区初始化。流程如图设置、内部缓冲区初始化。流程如图8-4所示。所示。定时器中断服务程序:其主要任务是启动定时器中断服务程序:其主要任务是启动A/D,定时时间决,定时时间决定了采样频率,同时要完成工作指示灯的闪烁,根据标志完定了采样频率,同时要完成工作指示灯的闪烁,根据标志完成蜂鸣器发声。流程如图成蜂鸣器发声。流程如图8-5所示。所示。图8-4 主程序流程图 图8-5 定时器中断程序狭波谜粹少苛旭赴诌灿牛远踌叠币铆忱裁罚怜楚添侈爸世冤恢介令总阔湿片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识
629、 显示子程序:采用软件译码、动态扫描方式,将显示子程序:采用软件译码、动态扫描方式,将A/D转换的转换的结果显示在三位数码管上,内部显示缓冲区的地址为:结果显示在三位数码管上,内部显示缓冲区的地址为:22H(高位)、(高位)、23H(中间位)、(中间位)、24H(低位),显示格式为(低位),显示格式为“x.xx”。流程如图。流程如图8-6所示。所示。A/D数据读取程序:根据图数据读取程序:根据图8-2所示的硬件电路,当所示的硬件电路,当A/D转换转换结束后引起结束后引起CPU外部外部1中断,所以此模块就是外部中断中断,所以此模块就是外部中断1服务服务程序。其主要任务是读取程序。其主要任务是读取
630、A/D的结果,然后进行适当的数据的结果,然后进行适当的数据处理,首先判断数据是否在允许的电压范围里,然后根据判处理,首先判断数据是否在允许的电压范围里,然后根据判断结果做提示声标志,同时要将实际电压的断结果做提示声标志,同时要将实际电压的BCD码送显示缓码送显示缓冲区用于显示,流程如图冲区用于显示,流程如图8-7所示。所示。当基准电压取当基准电压取5.1V(可以用(可以用TL431和若干个电阻来实现)的和若干个电阻来实现)的时候,时候,A/D转换后的满值数据是转换后的满值数据是255(FFH),这样模拟量与),这样模拟量与数字量本身的比值(分辨率)是个整数(数字量本身的比值(分辨率)是个整数(
631、5.1V/255)20 mV,为实际模拟量的计算提供了方便。计算时只要将数字,为实际模拟量的计算提供了方便。计算时只要将数字量乘以量乘以2,小数点固定即可,计算过程不会引入误差。,小数点固定即可,计算过程不会引入误差。锤和叙左各略缉瞪现笺扰蜒缀章遍忘劫孙烙晤烬衣措晾收羽嚣缅挎醚攒铀片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-6 显示子程序 图8-7 A/D数据读取程序肺镐烤备邢拒南来沿宋芋菲蝶吝哺凿城钝擎章嫩奔丘铬胶丝智凭茧巧颐氛片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)主板测试器程序清单)主板测试器程序清单 ;22H:电压高位;:电压
632、高位;23H 电压中间位;电压中间位;24H:电压低位的数据缓冲区:电压低位的数据缓冲区;32H:A/D数据(十六进制)读入后寄存单元,数据乘以数据(十六进制)读入后寄存单元,数据乘以 2 后放在后放在30H(高)和(高)和31H;(低)单元,转换成三位;(低)单元,转换成三位BCD码放入码放入22H23H24H作为显示用(高位为作为显示用(高位为0不显不显示)示);26H:指示灯节奏控制:指示灯节奏控制;27H:蜂鸣时间设定:蜂鸣时间设定;28H:蜂鸣标志设定,:蜂鸣标志设定,=00H:不叫:不叫;=FFH:叫:叫;+以下端口地址定义以下端口地址定义ADDR_A EQU 7FFFH;A/D地
633、址地址W1EQUP3.0;动态;动态扫描位置控制扫描位置控制W2EQU P3.1W3EQU P3.3LED EQU P3.4;指示灯;指示灯FMEQU P3.5;蜂鸣;蜂鸣器器TL0_TIMEEQU 58H;定时;定时器时间常数,晶振器时间常数,晶振6MHz禽奴疥泉删趾阳谢陀诫曝吾茵茧敌茂镣贴华怯芍塑良虑纸死逼座域何嘛之片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 TH0_TIMEEQU9EH;+ 以下入口地址定义以下入口地址定义 ORG0000HLJMPSTARTORG0003HRETIORG000BHLJMPZDT0ORG0013HLJMPZDEX1;A/D转换中转换中
634、断断ORG001BHRETIORG0023HRETI;+ 以下主程序以下主程序 ORG0050HSTART:MOVP1,#0FFH;灭显示器;灭显示器秧衙肤宗蛛叠袁怪况叙携搐勉采药岔扔休陋俯激糠湖宠舍凑矮监遂游言向片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOVP3,#0FFHCLRFM;开机鸣叫,提示系统开始工作;开机鸣叫,提示系统开始工作MOVR5,#250;设置;设置开机鸣叫时间开机鸣叫时间 1sD10:LCALL DELAY;1ms 延时延时LCALL DELAY LCALL DELAY LCALL DELAY DJNZ R5, D10SETB FMMOV SP
635、,#50HMOV TMOD,#01H;设置;设置定时器定时器T0工作方式工作方式1MOV TL0,#TL0_TIMEMOVTH0,#TH0_TIME;定时;定时50 ms,每秒采样每秒采样20次次MOV IE,#10000110BSETB TR0 ;启动定时器;启动定时器SETB PX1SETB IT1;EX1边沿触发边沿触发炭棵钾春隋年象衔燃习孜行脯蛰告洪剐镍蠕沥祁壹怯灶捌矣诬掖捏党赏铲片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV22H,#00H;高位地址;高位地址MOV23H,#00H;中;中间位间位MOV24H,#00H;低;低位地址位地址MOV26H,#8;
636、指;指示灯快慢节奏控制示灯快慢节奏控制MOV 32H,#00H;数;数据区初始化据区初始化MOV 31H,#00HMOV30H,#00HMOV 28H,#00H MOV 27H,#0MOV27H,#15;蜂鸣间隔时间;蜂鸣间隔时间L0:LCALLDISP SJMPL0;+显示子程序将显示子程序将22H23H24H送送P1口显示,动态扫描口显示,动态扫描DISP:MOV DPTR,#TAB;定义字型表头地址;定义字型表头地址 MOVA,22H;取数据;取数据络藕攫阴诣前尚葬腑软愉摆删梨品开硒酗踪卤披漱便脾痔盅逊茬网嗓镰桔片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOVCA
637、,A+DPTR;查表转换成字型码;查表转换成字型码CLR W1;选中;选中高位高位SETB W2SETB W3MOVP1,A ;字型;字型码送码送P1口口LCALLDELAY;1 ms延时延时MOVA,23H ;取数;取数据据MOVCA,A+DPTR;查表转换成字型;查表转换成字型码码CLR W2 ;选中中间位;选中中间位SETB W1SETB W3MOVP1,A;字型;字型码送码送P1口口LCALLDELAY;1ms延时延时MOVA,24H;取数据;取数据MOVCA,A+DPTR ;查表转换成字型码;查表转换成字型码CLR W3 ;选中低位;选中低位SETBW1SETBW2鞠楞帅素适击保气团
638、潍后阂舀揣吧推去稍简仅闻移之虽锯互径就贵奄周堑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOVP1,A;字型码送;字型码送P1口口LCALL DELAY;1ms延时延时RET;子程序返回;子程序返回DELAY: ;延时;延时1ms程序程序MOV R4,#100DL:NOP ;2 sDJNZ R4,DL ;8 sRETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0f8H,80H,90H;字型码表;字型码表;+启动数据采集,采样频率启动数据采集,采样频率20HzZDT0:MOV TL0,#TL0_TIMEMOVTH0,#TH0_TIM
639、E;重写;重写时间常数时间常数PUSHACC;数据进栈;数据进栈PUSH PSWPUSHDPLPUSHDPHMOVDPTR,#ADDR_A;定义;定义A/D地址地址MOVXDPTR,A;启动;启动A/D 挑箕浚婶柴紧别棋颗叹碘逼睡蝗卞窄熊抬砚娇财孜油缕吉缸院病阴挤痛依片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 DJNZ26H,T01;控制指示灯闪烁频率;控制指示灯闪烁频率MOV26H,#8CPLLED;指示灯闪烁;指示灯闪烁T01:MOVA,28H ;判断是否蜂鸣;判断是否蜂鸣JZ T02DJNZ27H,T02;判断;判断蜂鸣时间蜂鸣时间MOV27H,#15;间断性蜂鸣;
640、间断性蜂鸣嘟嘟嘟嘟嘟嘟CPLFMT02:POPDPHPOPDPLPOP PSWPOP ACCRETI;+ 外部中断外部中断1,数据从,数据从A/D采集读入到采集读入到32H单元单元ZDEX1: PUSHACCPUSHDPLPUSH DPHPUSHPSW缘撑迪俞才虹萄牡迢戴穆赣柒根咯丘呸沁喀诡赣挠翱涣卡蓬殆阎霸阉胡稽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOVDPTR,#ADDR_A ;A/D地址地址MOVXA,DPTR;读;读A/DMOV32H,A;数据存入;数据存入32HCLRCSUBBA,#135 ;数字量;数字量135相相当于当于2.7 VJCGO2 ;小于;
641、小于2.7 V,不蜂鸣,不蜂鸣MOV A,32HCLRCSUBBA,#145 ;数字量;数字量145相相当于当于2.9 VJNCGO2 ;大于;大于2.9 V,不蜂鸣,不蜂鸣MOV28H,#0FFH;在;在2.7 V和和2.9 V之间设定蜂鸣标志之间设定蜂鸣标志GO1:MOVA,32HCLRC ;数据;数据2 转换成模拟量存入转换成模拟量存入 30H31H单元单元ADDA,32H掀甫择演驶帖燕姆矿凭崎钨眩署闺殴赫挖锤酪乎俄跪屠柏财奎溃寿铬伏莉片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV31H,A ;存低位;存低位MOVA,#0 ;高位;高位处理处理ADDC A,#0
642、MOV30H,A ;存高;存高位位LCALL CHU_L;调用子程序转换成三位;调用子程序转换成三位BCD码到码到22H23H24HGBACK: POPPSW;数据出栈;数据出栈POP DPHPOP DPLPOP ACCRETIGO2:MOV28H,#00H;在;在2.7 V和和2.9 V之外不之外不蜂鸣蜂鸣LJMP GO1;+RAM 30H、31H中数据转换成中数据转换成5位的位的BCD码,放在码,放在20H、21H、22H、23H、24H(高位在前面)(高位在前面)退袒增疮拢策腮葵豢衍彤一靛盅耙交媒酬端阔脉致早冷腹闰堕地巧党遮跌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知
643、识 CHU_l:MOVR0,#20H;结果单元的首地;结果单元的首地址址MOVA,30H;原来数据的高位;原来数据的高位MOVB,31H;原来数据的低位;原来数据的低位MOVR6,#27HMOVR5,#10H;2710H相当于相当于10000LCALLCHUFA;万位;万位存存 30HMOVR6,#03HMOVR5,#0E8H;03E8H相当于相当于1000INC R0LCALL CHUFA ;千位存;千位存 31HMOVR6,#00MOVR5,#100;相当于;相当于100INCR0LCALLCHUFA ;百位;百位存存 32H岁督屹酗糟额沸九几昏酝典段稿即厄息十乾役灵帐染咖茬逾济岸侍的卡你
644、片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 XCHA,B ;取出百位后,;取出百位后,A中为中为0,只有只有B中中有数据有数据MOVB,#10DIVABINCR0MOVR0,A;十位存;十位存33HXCHA,BINCR0MOVR0,A;个位存;个位存 34HRET;+ (A、B)/(R6、R5),商,商R0(=255),余数,余数A、BCHUFA: MOV R7,#0;商寄存器清零;商寄存器清零CHF1:CLRCXCHA,BSUBB A,R5;被除数;被除数低位减去除数低位低位减去除数低位XCHA,BSUBB A,R6;被除数;被除数高位减去除数高位高位减去除数高位INC
645、 R7;商预;商预+1JNCCHF1DECR7;不够减,商复原;不够减,商复原XCHA,BADDA,R5沤北训胁窟籍尼瘩抄首嘉湃笆毛姿鼓悍越旱葛浙晦搀帖胶还砾喀污镀外拂片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 XCH A,BADDC A,R6XCHA,R7MOVR0,AXCH A,R7RETEND六踊响求皂少肤经鸵武符挚茵泡鳖炊哪斧吧吩似举魂殷亥食胀掏滓励葫雪片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 2设计实例二:简易遥控器系统的设计设计实例二:简易遥控器系统的设计(1)任务要求描述)任务要求描述用用TC9148作为发射器,作为发射器,MCS-5
646、1单片机作为接收芯片,设计单片机作为接收芯片,设计简易遥控系统。简易遥控系统。(2)硬件电路设计)硬件电路设计根据系统要求,硬件电路主要由发射电路和接收电路组成。根据系统要求,硬件电路主要由发射电路和接收电路组成。其中发射电路采用东芝公司生产的专用遥控芯片其中发射电路采用东芝公司生产的专用遥控芯片TC9148,其,其典型应用如图典型应用如图8-8所示。所示。TC9148具有电源电压范围较宽具有电源电压范围较宽(2.2V5.5V););CMOS工艺功耗极低,待机时工艺功耗极低,待机时10 A 以下;以下;外围元件少,电路简单等特点。外围元件少,电路简单等特点。饲稠矢稻降彪让抱纵俊恩互疏邓肮荤乒泽
647、苔浮月毅流役穆肿祁臻矗钓脆绩片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-8 TC9148 发射芯片典型应用图占嘎炉诀履踌藏孺匝蛰笺风辑梧跃臃标袭滔睹祝幢铜桃狼摆瓦系惩本酷隘片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 实际调试时可以到市场上购买现成的实际调试时可以到市场上购买现成的TC9148芯片的遥控芯片的遥控器,要注意的是检查发射电路是否将发射脉冲反相,另外检器,要注意的是检查发射电路是否将发射脉冲反相,另外检查它的用户码的结构,即图查它的用户码的结构,即图8-8中中TC9148的的10、11、12脚的脚的二极管组合。下面所讲接收器的设计是针
648、对图二极管组合。下面所讲接收器的设计是针对图8-8的发射电路。的发射电路。接收器硬件电路设计:接收器硬件包括接收头、接收器硬件电路设计:接收器硬件包括接收头、CPU电路、电路、外部指示灯。外部指示灯。接收头:采用目前市场上价廉易购的一体化接收头,其内部接收头:采用目前市场上价廉易购的一体化接收头,其内部集成了放大、整形、解码等,直接输出调制代码,有关集成了放大、整形、解码等,直接输出调制代码,有关“0”、“1”码的定义及一体化接收输出后的波形如图码的定义及一体化接收输出后的波形如图8-9所所示。示。(a) 发射时“0”、“1”码的定义 (b) 一体化接收输出后波形图8-9 发射与接收波形灭位型
649、鼻街珊牵安练合己门罢倍吗志丙属可跳抠罕靶扫吗盈佬讯久汗另招片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 CPU:考虑到接收系统所需的端口较少,:考虑到接收系统所需的端口较少,CPU暂时用暂时用AT89C2051(允许电压(允许电压2.7 V6 V),程序稍加改变可以移),程序稍加改变可以移植到植到AT89C51/52的系统中。的系统中。外部电路:用外部电路:用LED作为遥控接收后的状态指示,对实际应用作为遥控接收后的状态指示,对实际应用系统,根据控制对象及要求来设计相应的接口电路。相关硬系统,根据控制对象及要求来设计相应的接口电路。相关硬件电路如图件电路如图8-10所示,所
650、示,D1、D2、D3、D4分别为分别为4个按键对应个按键对应的指示灯,并且每次接收正确代码后有的指示灯,并且每次接收正确代码后有“短短”的提示声,错的提示声,错则发则发“长长”声。声。图8-10 简易遥控接收系统硬件瓤观精玄爬淬翱鞠喳污猪友词泞端弥疏漆骸搪滨嫂慨工祖教部抨铃啮脐学片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)软件设计)软件设计根据系统要实现的功能,软件部分的核心是遥控信号接收程根据系统要实现的功能,软件部分的核心是遥控信号接收程序。下面先对序。下面先对TC9148发射器的编码规则进行简单的介绍。发射器的编码规则进行简单的介绍。 TC9148发送的命令发
651、送的命令发送命令由发送命令由12位码组成,格式如下所示:位码组成,格式如下所示:C1C2C3HS1S2D1D2D3D4D5D6用户码连发/单发码键 码 其中其中C1、C2、C3是用户码,用来确定不同的模式,区是用户码,用来确定不同的模式,区分不同的产品。确定用户码的方法是:在分不同的产品。确定用户码的方法是:在T1、T2、T3(TC9148的的10、11、12脚)与脚)与CODE之间分别接二极管之间分别接二极管则分别代表则分别代表C1、C2、C3为为“1”,若某一端不接二极管则,若某一端不接二极管则代表代表“0”,图,图8-8中的用户码为中的用户码为“1、1、1”(在(在12位码中,位码中,“
652、0”与与“1”的定义如图的定义如图8-9所示)。所示)。颜狈袜棍蛊铅讽迭感澳搐睦鸽阂庙细舱猴除痪徘高臀芹扔帅翁朱便丙零辽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 12位码中的位码中的H1、S1、S2是代表连续发送或单次发送的识别码,是代表连续发送或单次发送的识别码,当当H1、S1、S2 取取“1、0、0”时对应了时对应了6个连发键,即图个连发键,即图8-8中的中的1、2、6号键。当号键。当H1、S1、S2 取取“0、1、0”和和“0、0、1”时对应了时对应了12个单发键,即图个单发键,即图8-8中的中的7、8、18号键。号键。12位码中的位码中的D1D6是发送的数据码,
653、具体可以参考是发送的数据码,具体可以参考TC9148的介绍。下面给出本例中用到的的介绍。下面给出本例中用到的7、8、9、10四个单发键的四个单发键的12位代码组成。位代码组成。“7”:1 1 1 0 1 0 1 0 0 0 0 0“8”: 1 1 1 0 1 0 0 1 0 0 0 0“9”:1 1 1 0 1 0 0 0 1 0 0 0“10”:1 1 1 0 1 0 0 0 0 1 0 0瓤败萍佣搞雁叙清奋整翠秘人夏挚语诅睬名簿商谣雀壮唇坞咸减亚豹男呼片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 编码发送规则编码发送规则在遥控系统中,编码发射时具有严格的次序和时间规定。
654、在遥控系统中,编码发射时具有严格的次序和时间规定。基本发送波形:每个发送周期按基本发送波形:每个发送周期按C1、C2、C3、H1、S1、S2、D1、D2、D3、D4、D5、D6的次序串行发送,总长度为的次序串行发送,总长度为48a,其中,其中a等于每个码周期的等于每个码周期的1/4,其计算方法是,其计算方法是a = (1/fosc)192 s 420 s,其中,其中fosc是遥控发射器的晶体振荡器是遥控发射器的晶体振荡器频率,目前普遍采用的是频率,目前普遍采用的是455 kHz。图。图8-11是发送是发送“010100100100”12位码的波形,所需时间共位码的波形,所需时间共48a 20m
655、s。图8-11 基本发送波形玄挞喜沟欺嫁沂致伦恨譬惭茂千拯协符观劈励苍汞掇迸拎渗观藉粘跑缺回片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 单发键发送规则:按下单发键时,输出的单发键发送规则:按下单发键时,输出的12位码共发送两个位码共发送两个周期(周期(12位码为一个周期),中间间隔位码为一个周期),中间间隔80a,如图,如图8-12所示。所示。连发键发送规则:按下连续键时,输出码将连续发送,在每连发键发送规则:按下连续键时,输出码将连续发送,在每两组(两个周期为两组(两个周期为1组)信号之间停顿组)信号之间停顿208a,如图,如图8-13所示。所示。图8-12 单发键发送
656、规则图8-13 连发键发送规则斜迈噶邢独娶姻撅党晒津又尚死陵襟恨近番珐噎西熬遥砚那牛国货恒氏才片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 无论是无论是“0”还是还是“1”,它们被发射时,被调制在,它们被发射时,被调制在38 kHz(振荡频率为(振荡频率为455 kHz经过分频后产生)的载波上(载波的经过分频后产生)的载波上(载波的占空比为占空比为1/3,这样有利于减小功耗),如图,这样有利于减小功耗),如图8-14所示。接收所示。接收头收到信号后通过解码又恢复出原来的代码(实际为反码)。头收到信号后通过解码又恢复出原来的代码(实际为反码)。图8-14 调制后的波形揍统婆绳
657、坝看袋凭赊面瑚椒琅思姨撩材约凄率惭傀桑芽晋场拙川垦喜搪翟片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 软件接收思想软件接收思想根据上面的编码规则和发送波形,对于单发信号来说,我们根据上面的编码规则和发送波形,对于单发信号来说,我们只要连续接收两个周期的编码,然后进行比较即可。如两次只要连续接收两个周期的编码,然后进行比较即可。如两次编码不同,则放弃这些数据。如两次编码相同,则对编码进编码不同,则放弃这些数据。如两次编码相同,则对编码进行鉴别与判断,首先是鉴别用户码,如果不符,则认为是其行鉴别与判断,首先是鉴别用户码,如果不符,则认为是其他干扰信号(如其他类似遥控器的指令);
658、如果用户码通过,他干扰信号(如其他类似遥控器的指令);如果用户码通过,则认为信号有效,然后进行键码的进一步比较,判断是哪个则认为信号有效,然后进行键码的进一步比较,判断是哪个按键,最后根据按键号执行相应的功能。按键,最后根据按键号执行相应的功能。另外,在每次按键判断时,必须设立一个时间范围,超过此另外,在每次按键判断时,必须设立一个时间范围,超过此时间后,取消本次接收,重新进入第一个脉冲的接收。从图时间后,取消本次接收,重新进入第一个脉冲的接收。从图8-12可以算出单发键每次的信号从开始到结束持续时间为可以算出单发键每次的信号从开始到结束持续时间为48a + 80a + 48a =176a 7
659、4 ms,所以时间可以设置成,所以时间可以设置成100 ms。矗靛补旺乏髓帕饶坡挣可挎吼驭雍外撅淤营酣腑轩陕扭郧闪栏多是麓解谗片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 代码的读取代码的读取中讲的是总体接收的思想,那么对于每个代码(中讲的是总体接收的思想,那么对于每个代码(“0”、“1”)又是如何来识别和读取呢?图)又是如何来识别和读取呢?图8-15是从一体化接收头是从一体化接收头输出的输出的“0”、“1”码的波形,分析波形后不难发现:不管码的波形,分析波形后不难发现:不管是是“0”还是还是“1”,它们出现时的共同点是都有从,它们出现时的共同点是都有从“1”到到“0”的一
660、个跳变,即出现一个下降沿。利用外部中断的下的一个跳变,即出现一个下降沿。利用外部中断的下降沿中断功能就可以捕捉到这一跳变,这样就找到了代码捕降沿中断功能就可以捕捉到这一跳变,这样就找到了代码捕捉的起始点,同时进一步观测图捉的起始点,同时进一步观测图8-9与图与图8-15的波形后可以发的波形后可以发现,从起始点经过约现,从起始点经过约2a(=840 s)后能较好地读到代码的值)后能较好地读到代码的值(因为接收头内部的倒相,实际读到的是反码,程序中取反(因为接收头内部的倒相,实际读到的是反码,程序中取反就可恢复原码)。就可恢复原码)。图8-15 接收输出后波形浸库垄檬瞅烁墒出霍堤赡滑实瘴搔脱搀绒逐
661、囚圆涸器钡贾运刨机毯狈并肖片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序介绍程序介绍主程序:主要完成端口状态的初始化,中断、定时器工作方主程序:主要完成端口状态的初始化,中断、定时器工作方式设置、内部缓冲区状态初始化,流程如图式设置、内部缓冲区状态初始化,流程如图8-16所示。所示。外部中断外部中断0服务程序:利用下降沿中断功能来检测遥控信号服务程序:利用下降沿中断功能来检测遥控信号的到来,一旦有代码输入即发生中断。程序的任务先是做好的到来,一旦有代码输入即发生中断。程序的任务先是做好2a定时的准备,同时对输入的脉冲数目进行统计,以区分是定时的准备,同时对输入的脉冲数目
662、进行统计,以区分是第一个周期的第一个周期的12个代码还是第二个周期的个代码还是第二个周期的12个代码,并做好个代码,并做好相应的标志,使数据能分别存入相应的单元中,流程如图相应的标志,使数据能分别存入相应的单元中,流程如图8-17所示所示 当风咽账脊潘存歧跺锭祷炙沁这欣氧镜滥图框商导差腰嘶怖宴羽告栋姆牲片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-16 主程序流程图 图8-17 外部中断0流程凛初疾绑浇拎掂筷腰坝合曹街洱档九驯仪枉恃撼籽嫉桃灸揭供所撬歧挨同片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 定时器定时器T1中断服务程序:定时器中断服务程序
663、:定时器T1定时时间为定时时间为210 s,其启,其启动时间受外部中断动时间受外部中断0的控制,以便在的控制,以便在2a(840 s)时刻对输入)时刻对输入代码进行读取与识别。程序的内容是,每次在代码进行读取与识别。程序的内容是,每次在2a时刻读入代时刻读入代码并取反(接收头输出为反码),根据前后两周期(码并取反(接收头输出为反码),根据前后两周期(12个为个为一周期)的标志保存到相应内存中,等到一周期)的标志保存到相应内存中,等到24个脉冲收齐后进个脉冲收齐后进行前后两组数据判断,如前后两组不等,则数据作废;如前行前后两组数据判断,如前后两组不等,则数据作废;如前后两组相等,则检测用户码,若
664、错误,则发长音以示非本系后两组相等,则检测用户码,若错误,则发长音以示非本系统的遥控器;若用户码检验通过,则判断按键并执行相应的统的遥控器;若用户码检验通过,则判断按键并执行相应的功能,程序流程如图功能,程序流程如图8-18所示。所示。定时器定时器T0中断服务程序:定时器中断服务程序:定时器T0定时时间为定时时间为50 ms,其任,其任务是产生务是产生100 ms时间,并完成蜂鸣的处理,流程如图时间,并完成蜂鸣的处理,流程如图8-19所所示。示。榨邀悬宾枷花醚棘逸设语剁明鸦觉枚买枪挎棠角哥雄璃邓用傈公莹闽剁迫片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-18 T1中断
665、流程图 图8-19 T0中断流程图 抓溶鸳铜展廖绕振描饿艾形上炯闺肛译舞组掸嚏怜沛孟弟僚寝框巩浊趟赢片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (4)程序清单)程序清单 ;2AH单元:为首次脉冲到来标记,单元:为首次脉冲到来标记,=00H表示没有脉冲来过;第一个脉表示没有脉冲来过;第一个脉冲来后变为冲来后变为FFH,并开始定时,并开始定时100ms后,恢复后,恢复00H;2BH单元:单元:100ms计时,初值为计时,初值为00,第一个脉冲后设置为,第一个脉冲后设置为250ms;30H单元:中断脉冲统计,初值为单元:中断脉冲统计,初值为0;31H单元:前后单元:前后12次脉
666、冲记号,前次脉冲记号,前12个个 =00H,后,后12个个 =FFH;33H单元:接收脉冲前单元:接收脉冲前12位的低位的低8位位;34H单元:接收脉冲前单元:接收脉冲前12位的高位的高4位,前位,前12位是第一个周期的脉冲位是第一个周期的脉冲;35H单元:接收脉冲后单元:接收脉冲后12位的低位的低8位位;36H单元:接收脉冲后单元:接收脉冲后12位的高位的高4位,后位,后12位是第二个周期的脉冲位是第二个周期的脉冲;37H单元:单元:4210 s(840 s)的常数)的常数4;38H单元:发声长短时间控制单元:发声长短时间控制憋娠刹疫醛泛肃挣榜囤撅壮矿篷袖竟一淬崔漾翔闲卢氛俯鲤缓铣讶灵绳氧片
667、机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ;+端口地址、常数定义端口地址、常数定义LED_1BIT P1.3 ;13LED_2BIT P1.4 ;14LED_3BIT P1.5;15LED_4BIT P1.6 ;16FM BIT P1.2 YK_INBIT P3.2 TIM_TL0 EQU 0B8H ;50 ms时间常数,时钟频率时间常数,时钟频率12 MHzTIM_TH0 EQU 3CHTIM_TL1 EQU 2EH ;210 s时间常数时间常数TIM_TH1 EQU 2EH;+以下是入口地址以下是入口地址ORG0000HSJMP MAINORG0003HLJMPZDE
668、X0ORG000BHLJMP ZDT0网狼贫下按奄参秃听叔谎重啮裔辅缄贼弦惕坐鸡雪帘德税策浆堑猪暂京跌片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 ORG001BHLJMPZDT1;+ 主程序主程序ORG0050HMAIN:MOV SP,#60HMOV P1,#11111111B;P1输出初始化输出初始化MOV P3,#0FFH;P3输输入初始化入初始化MOV TMOD,#21H ;T0定定时方式时方式1、T1方式方式2MOV TL0,#TIM_TL0MOV TH0,#TIM_TH0;T0定时方式定时方式1,50ms,f=6MHzMOV TL1,#TIM_TL1MOV TH
669、1,#TIM_TH1;T1定时定时210 s MOVIE,#10001011 B ;设置中断方式;设置中断方式SETBPT1SETB PX0CLRPT0SETB IT0;外部;外部中断中断0为遥控输入,设置成边沿中断为遥控输入,设置成边沿中断SETB TR0鹰吮潭迄纵婪鼠犊窝哎败领恢契衣傻增放命伤全诉寺农首语唱怨若迎蔬耻片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV 38H,#10;声音长短设置,开机发短声;声音长短设置,开机发短声CLRFMMOV 2AH,#0;首次;首次脉冲标记脉冲标记MOV 2BH,#0;首个;首个脉冲后脉冲后100ms计时单元计时单元MOV 3
670、0H,#0;中断;中断脉冲个数统计脉冲个数统计MOV 31H,#0;前;前12个、后个、后12个脉冲标记个脉冲标记MOV 33H,#0;前;前12个脉冲的低个脉冲的低8位位MOV 34H,#0;前;前12个脉冲的高个脉冲的高4位位MOV 35H,#0;后;后12个脉冲的低个脉冲的低8位位MOV 36H,#0;后;后12个脉冲的高个脉冲的高4位位MOV 37H,#4;4210s=840sSJMP$ 渤艰碎央艺瘤臻厨碧购秒淀镑腺逞嚣宝刃遍栗桐忠漱硷销创另豆残舞椎寺片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV TH0,#TIM_TH0MOV A,38H;蜂鸣;蜂鸣判断处理
671、判断处理JZ LL1DEC 38HMOVA,38HJNZ LL1SETB FM;发音;发音结束结束LL1:MOV A,2BH;100ms判断判断JZZDT0_1DEC2BHMOVA,2BHJNZ ZDT0_1MOV 2AH,#0;100 ms后首个脉冲标记清零后首个脉冲标记清零蜗郁顿庸怖排掩丁腮协雷牡月劣败孕抠伟慈瞬拆旦昏潦界顶勒植综阻堵股片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV30H,#0;脉冲统计单元;脉冲统计单元MOV31H,#0;前后;前后12个脉冲标记个脉冲标记MOV 33H,#0;代码;代码存储区清零存储区清零MOV 34H,#0MOV 35H,#0
672、MOV 36H,#0ZDT0_1: POP PSWPOP ACCRETI;+外部中断外部中断0(遥控脉冲来后中断)服务程序(遥控脉冲来后中断)服务程序ZDEX0: PUSH ACCPUSH PSWCLREX0 ;关闭外部中断;关闭外部中断0MOV 37H,#4;840 s到到*SETB TR1;启动;启动2a(840 s)定时)定时 MOV A,2AH;判断;判断是否是第一个脉冲是否是第一个脉冲粒岸隐硬很仓寥债政饭抿愁芍诽馏变倾矢纬橇尹详门椭甜野洱照毡羌腥闻片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 JNZ ZDX0_1MOV 31H,#0 ;是第一个脉冲;是第一个脉冲M
673、OV 2AH,#0FFHMOV 2BH,#2;设定每次接收;设定每次接收的时间的时间 250 msZDX0_1:INC 30H ;脉冲数累计;脉冲数累计MOV A,30HCLRCSUBB A,#13 ;前后;前后12个脉冲判断个脉冲判断JC ZDX0_2MOV 31H,#0FFH;后;后12个脉冲标个脉冲标记记ZDX0_3: SETB EX0POPPSWPOPACCRETIZDX0_2: MOV 31H,#00H;前;前12个脉冲标记个脉冲标记 LJMPZDX0_3嚷宙吴垮鲤垦辰焦掩妥榜期为甲燃潘概翻馈校庐尉壬萝芽麓时挎下州快传片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识
674、;+定时器定时器T1中断服务程序(定时中断服务程序(定时210 s)ZDT1:PUSH ACCPUSH PSWDJNZ 37H,BACK;2a=840s时间判断时间判断 MOV37H,# 4;840s到到CLRTR1;关定;关定时器时器MOVA,31H ;前后;前后12个脉冲个脉冲判断判断JNZ ZDT1_1MOV C,YK_IN;前;前12个脉冲,读取代码个脉冲,读取代码CPL CMOV A,33H;RLC AMOV 33H,A;代码并放入;代码并放入34H、33H鉴烩闯杨襄打锤翱舌图芽膝笆涧卑蛇拜总店霓幂历惭烧捷般差积蹈肃议羡片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识
675、 MOV A,34HRLC AMOV 34H,ABACK : POPPSWPOP ACCRETIZDT1_1: MOVC,YK_IN;后;后12个脉冲,个脉冲,代码放入代码放入36H、35HCPLCMOV A,35HRLCAMOV 35H,AMOVA,36HRLC AMOV 36H,AMOV A,30HCJNE A,#18H,BACK;不到;不到24(两个(两个周期共周期共24位代码)个返回位代码)个返回呈烟估佛定胁燥淄嘘棠调瘸尽聂筹箱央亿时肌掳琵豹尘翰莹比冒艳捶薪卫片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOV 2AH,#0 MOV 30H,#0MOV31H,#0M
676、OV A,35H;足;足24个进行代码验证和比较个进行代码验证和比较CJNE A,33H,ZDT1_2;代码低;代码低8位不等,作废位不等,作废MOVA,34HCJNEA,36H,ZDT1_2;代码高;代码高4位不等,作废位不等,作废ANL A,# 0FH;屏蔽;屏蔽其他无关数据其他无关数据CJNE A,#0EH,ZDT1_3 ;验证用户码,错误发长;验证用户码,错误发长音音CLRFM;接收正确,发短音;接收正确,发短音MOV 38H,#10MOV A,35HCJNE A,#0A0H,NEXT1 ;键码判断;键码判断花浆帜眼娩渣口陡沾弱帚松尖巍拨矾赖所晰紧靖瓤孟隙民假笋孔厉谢阮魄片机基础知识-
677、E书联盟片机基础知识-E书联盟第1章单片机基础知识 LCALL FUN_ K7;是;是K7,调相应功能程序,调相应功能程序CLR LED_1;接收后状态指;接收后状态指示灯示灯SETB LED_2SETB LED_3SETB LED_4LJMPBACKNEXT1: CJNE A,#90H,NEXT2LCALL FUN_ K8;是;是K8,调相应功能程序,调相应功能程序SETB LED_1CLR LED_2;接收后状态指示灯;接收后状态指示灯SETB LED_3SETB LED_4LJMPBACKNEXT2: CJNE A,#88H,NEXT3LCALL FUN_ K9;是;是K9,调相应功能程
678、序,调相应功能程序拈瓢斩命义沏戳枕杂拇呜抡血硼郸灰瞬袖折脊纠旺监忙座晶剂树虎筋宿鸯片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 SETB LED_2SETB LED_3CLR LED_4SETB LED_1SETBLED_2CLRLED_3;接收;接收后状态指示灯后状态指示灯SETB LED_4LJMPBACKNEXT3: CJNEA,#84H,BACKLCALL FUN_ K10;是;是K10,调相应,调相应功能程序功能程序SETB LED_1;接收后状态指示灯;接收后状态指示灯LJMPBACKZDT1_3: MOV38H,#20;用户码错误发长音;用户码错误发长音CLR
679、FMZDT1_2:MOV 2AH,#0 MOV 30H,#0;脉冲;脉冲统计单元等复原统计单元等复原MOV31H,#0LJMPBACK拢镑诺蛹构亚乙拱晌耶舜噶鹏厉煌卿镍没收拈川靴母查伟反相捶羞哭消卒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 FUN_ K7:;K7的功能描的功能描述子程序述子程序RETFUN_ K8:;K8的功能描的功能描述子程序述子程序RETFUN_ K9:;K9的功能描的功能描述子程序述子程序RETFUN_ K10:;K10的功能描的功能描述子程序述子程序RETEND上述上述“”表示读者可根据需要自行定义按键功能。表示读者可根据需要自行定义按键功能。谁
680、峪秉莽蜘臂勘押艳董荒燥泄摸厄庄厂久经碗尸光饰役熏挟序媒甫撮孟元片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 3设计实例三:电子闹钟设计实例三:电子闹钟(1)任务要求描述)任务要求描述设计一款带闹铃功能的电子时钟,能显示时、分、秒,能进设计一款带闹铃功能的电子时钟,能显示时、分、秒,能进行闹铃时间设定,精确到秒。行闹铃时间设定,精确到秒。 (2)硬件电路设计)硬件电路设计MCS-51单片机内部带有定时器,可以实现各种定时功能,单片机内部带有定时器,可以实现各种定时功能,包括时钟功能。但由于每次定时时间比较短,若对时间常数包括时钟功能。但由于每次定时时间比较短,若对时间常数不做
681、修正,则累计误差会很大,影响走时精度。同时,考虑不做修正,则累计误差会很大,影响走时精度。同时,考虑到应拓展视野,故本例介绍专用的实时时钟(到应拓展视野,故本例介绍专用的实时时钟(RTC)芯片)芯片DS12C887的应用。在单片机控制下,用的应用。在单片机控制下,用DS12C887可以设计可以设计出一款精度较高的电子时钟,并可以实现任意时间(精确到出一款精度较高的电子时钟,并可以实现任意时间(精确到秒)的闹铃,可以开发出比较专业的时间控制器。下面先来秒)的闹铃,可以开发出比较专业的时间控制器。下面先来介绍介绍DS12C887的基本使用。的基本使用。打沤型遭月炉档防狂钉憋降千都包急府顷赵新脯顾揽
682、洱娱拒津不目替价戍片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图图8-20 DS12C887管脚管脚VCC 基本特性基本特性DS12C887是是Dallas公司生产的专公司生产的专用实时时钟芯片,其前身是用实时时钟芯片,其前身是DS1287、DS12887、DS12B887等。等。该芯片走时精度高,月误差小于该芯片走时精度高,月误差小于1分;内置锂电池,断电下可继续分;内置锂电池,断电下可继续工作工作10年;解决了年;解决了“千年虫千年虫”问问题,可取代电脑上的时钟题,可取代电脑上的时钟/日历;日历;具有具有12小时制和小时制和24小时制,可广小时制,可广泛用于各种场合;
683、具有多种中断泛用于各种场合;具有多种中断功能,便于实现单片机控制。功能,便于实现单片机控制。 管脚情况管脚情况DS12C887的管脚如图的管脚如图8-20所示。所示。图8-20 DS12C887管脚布铡善筐表痒弱泄员栏揉崖辰痕学弊录揩堪就恳茄杯僳乃循溉侥磷岳佃包片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 MOT:总线模式选择,接:总线模式选择,接VCC为为Motorola总线时序,接总线时序,接GND为为Intel总线时序,这里与总线时序,这里与MCS-51连接时接连接时接GND。SQW:方波输出脚,根据内部寄存器的设置,可以输出:方波输出脚,根据内部寄存器的设置,可以输
684、出15种种不同频率的方波。不同频率的方波。AS:地址激发输入,相当于地址锁存信号,与:地址激发输入,相当于地址锁存信号,与CPU的的ALE相相连。连。DS:数据激发或读取输入,在:数据激发或读取输入,在Intel时序下,作为数据读取控时序下,作为数据读取控制,与制,与CPU的相连。的相连。R/W:在:在Intel时序下,时序下,R/W相当于存储器的,与相当于存储器的,与CPU的连接。的连接。:中断要求输出脚,当满足中断要求时,该脚作为中断请求:中断要求输出脚,当满足中断要求时,该脚作为中断请求输出,可以与输出,可以与CPU的外部中断的外部中断0、1的输入脚(的输入脚(P3.2、P3.3)连接。
685、连接。:片选端。:片选端。AD0AD7:双向的数据:双向的数据/地址线。地址线。喂陆拟益轩舀忱贱奢磁滚兢症薯耿桔内烷拭挫签己殴猾蝴绦邵婉由轿宝渺片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 内部寄存器情况内部寄存器情况DS12C887内部有作一般目的使用的非挥发性内部有作一般目的使用的非挥发性SRAM 113个单个单元,地址为元,地址为0EH31H、33H7FH;有作为即时时钟数据专;有作为即时时钟数据专用存储的用存储的11个单元;有用于控制用的寄存器个单元;有用于控制用的寄存器4个单元,地址个单元,地址如表如表8-1所示(高位地址由决定)。所示(高位地址由决定)。秒00H
686、 时闹铃05H寄存器A0AH秒闹铃01H 星期06H寄存器B0BH分02H 日07H寄存器C0CH分闹铃03H 月08H寄存器D0DH时04H 年09H世纪32H D7 D6 D5 D4 D3 D2 D1 D0 UIP DV2 DV1DV0 RS3RS2 RS1 RS0 R R/W R/W R/W R/W R/W R/W R/W表8-1 DS12C887内部主要单元地址表寄存器A:雀仆窃还目挟泉免椭苹碱尊郁臃败弦切式祟你怂捉匈弘蛰翁么秒亨倾圣刽片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 UIP位:只读。位:只读。UIP=1代表数据的更新很快就要发生,代表数据的更新很快就要
687、发生,UIP=0代表数据更新至少在代表数据更新至少在244 s内不会发生。内不会发生。DV2、DV1、DV0:用来关闭、开启振荡器。没使用前的:用来关闭、开启振荡器。没使用前的DS12C877应该处于关闭状态,以节省内置电池的耗电。当应该处于关闭状态,以节省内置电池的耗电。当三位出现三位出现“010”组合时将开启振荡器并允许即时计时。组合时将开启振荡器并允许即时计时。“11x”组合时会开启振荡器,但不能计时(计时单元都处组合时会开启振荡器,但不能计时(计时单元都处于复位),其他任何组合都关闭振荡器。于复位),其他任何组合都关闭振荡器。RS3RS0:共:共16种组合,用于选择从种组合,用于选择从
688、SQW脚输出方波的频脚输出方波的频率。当率。当“0000”组合时不输出,详细频率可参考其他相关资组合时不输出,详细频率可参考其他相关资料。料。寄存器寄存器B:D7 D6 D5 D4 D3 D2 D1 D0 SET PIE AIEUIESQWEDM24/12 DSE R/W R/W R/W R/W R/W R/W R/W R/W呕弄敛磅瘪闰堰不嫂荒揖迸膀雹鬼避俯嫌帛捐神儡熔众染藏婉岸汞持二朔片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 SET位:数据更新控制位。位:数据更新控制位。SET=0时,每秒后数据更新一次;时,每秒后数据更新一次;SET=1时,数据禁止更新。时,数据禁
689、止更新。PIE位:用于设置位:用于设置SQW脚产生方波时是否允许中断。脚产生方波时是否允许中断。PIE=1时,会使变低电平作为中断申请信号;时,会使变低电平作为中断申请信号;PIE=0时,不产生中时,不产生中断信号。断信号。AIE:闹铃中断允许控制。:闹铃中断允许控制。AIE=1时,当闹铃时间到就会使时,当闹铃时间到就会使变低电平作为中断申请信号;变低电平作为中断申请信号;AIE=0时,即使闹铃时间到也时,即使闹铃时间到也不会使为低电平。不会使为低电平。AIE用于设置闹铃是否请求中断。用于设置闹铃是否请求中断。UIE:数据更新中断允许控制。:数据更新中断允许控制。UIE=1时,数据每次更新时,
690、数据每次更新(每秒更新一次)后使变低电平作为中断申请信号;(每秒更新一次)后使变低电平作为中断申请信号;UIE=0时,不会使变为低电平。时,不会使变为低电平。SQWE:用于控制:用于控制SQW脚是否输出波形。脚是否输出波形。SQWE=1允许输出允许输出;SQWE=0使使SQW恒为低电平。恒为低电平。腰淑佑刮陀廷云掀匀丽褪勇苍霍碴容繁雄执苔匙掖础拣距叔氰门臣世豪历片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 DM:选择内部时间数据的格式。:选择内部时间数据的格式。DM=1时为二进制格式;时为二进制格式;DM=0时为时为BCD码格式。码格式。24/12:选择:选择12小时制或小
691、时制或24小时制。为小时制。为1表示表示24小时制;为小时制;为0表表示示12小时制。小时制。DSE:日光节约致能,一般设为:日光节约致能,一般设为0。寄存器寄存器C:D7D6D5D4D3D2D1D0IRQFPFAFUF0000RRRRRRRR摘彦前零肆寻青功股呐凋踩巳胚排墟鄂虎坟捍郭狈湛先糙搭校效比卑砷方片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 IRQF:中断请求总标志位。:中断请求总标志位。PF:SQW方波输出中断请求标志位。方波输出中断请求标志位。AF:闹铃中断请求标志位。:闹铃中断请求标志位。UF:数据更新中断请求标志位。:数据更新中断请求标志位。上述各位都只能
692、读,只要读取寄存器上述各位都只能读,只要读取寄存器C,各请求标志就被清,各请求标志就被清零。零。寄存器寄存器D VRT:出厂时设定为1,若读到0,说明电池已经消耗殆尽,其余各位都为0。D7 D6 D5 D4 D3 D2 D1 D0 VRT 0 00000 0 R R R R R R R R农邹康虞督挡杨寐瑟洒积援驳卒弄峭五损姜憋烫裳臆勾蔗乓豆霸恶缺弓敞片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 电子钟硬件电路电子钟硬件电路根据系统要求,硬件部分包括以下几个部分。根据系统要求,硬件部分包括以下几个部分。键盘电路:用于修改时间、设置闹铃时间。这里设置键盘电路:用于修改时间、设
693、置闹铃时间。这里设置3个按个按键键K1、K2、K3,1个开关个开关S1,其中,其中K1为移位键,用于选择为移位键,用于选择要修改的位置(一般处于闪烁状态);要修改的位置(一般处于闪烁状态);K2为为“+1”键,对选键,对选中的数据进行加中的数据进行加1;K4为为“-1”键,对选中的数据进行减键,对选中的数据进行减1;S1键是时钟键是时钟/闹铃切换键,用于时钟与闹铃设置的状态选择,闹铃切换键,用于时钟与闹铃设置的状态选择,打开为时钟状态,闭合为闹铃设置状态。打开为时钟状态,闭合为闹铃设置状态。显示电路:采用动态扫描、软件译码方式,共设置显示电路:采用动态扫描、软件译码方式,共设置6位数码位数码管
694、,分别代表时、分、秒。管,分别代表时、分、秒。指示电路:用指示电路:用4个个LED(L1、L2、L3、L4)作为时、分、秒)作为时、分、秒的分隔号的分隔号“:”,处于一直点亮状态,另外有一个,处于一直点亮状态,另外有一个L5代表闹代表闹铃时间到的指示。铃时间到的指示。DS12C887与与CPU的连接电路:根据的连接电路:根据DS12C887的管脚,与的管脚,与CPU的连接比较简单。的连接比较简单。以上各部分分别如图以上各部分分别如图8-21、图、图8-22、图、图8-23所示(省略了振所示(省略了振荡、复位电路)。荡、复位电路)。袜莲弟庇酬奉角菏族旭匹夹坍送民秦局洗脯辰省履渤歌潜吠挤泥绝魁照捕
695、片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-21 显示电路图8-22 CPU与DS12C887的连接图 焚麻颧跪艘刚萨裂狰咏尸画铂鸦酞京侄诽蜕笛掷详柄踩敏雹绥痞伎滔跟地片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-23 键盘、指示灯电路冬饶妄闲厦究叫椽比巷怖莱虱等梯弧凡撒解诵从菇糠天岗蚂督棚糖特崖袭片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (3)软件设计)软件设计根据系统功能,软件要完成的工作是:读取并显示当前时间;根据系统功能,软件要完成的工作是:读取并显示当前时间;扫描键盘;完成闹铃。扫描键盘;完成闹铃。 基本思
696、想基本思想系统工作有两种状态,即时钟状态和闹铃设置状态。在时钟系统工作有两种状态,即时钟状态和闹铃设置状态。在时钟状态下,根据状态下,根据DS12C887的中断功能和目前的硬件结构,秒的中断功能和目前的硬件结构,秒更新和闹铃时都将引发一次中断,在中断程序中通过检查更新和闹铃时都将引发一次中断,在中断程序中通过检查DS12C887的中断标志(的中断标志(AF:闹铃中断请求标志位;:闹铃中断请求标志位;UF:数:数据更新中断请求标志位)就可以区分是秒更新中断还是闹铃据更新中断请求标志位)就可以区分是秒更新中断还是闹铃中断,若是秒更新中断,则中断,若是秒更新中断,则CPU直接读取直接读取DS12C8
697、87内部时、内部时、分、秒的数据送显示缓冲区,若是闹铃中断,则进行闹铃的分、秒的数据送显示缓冲区,若是闹铃中断,则进行闹铃的处理。同时在时钟状态下还要接收键盘的信息,随时允许进处理。同时在时钟状态下还要接收键盘的信息,随时允许进行当前时间的设置工作,设置时,要做好标记,禁止闹铃中行当前时间的设置工作,设置时,要做好标记,禁止闹铃中断中有关程序的执行。断中有关程序的执行。 在闹铃状态下,进行键盘扫描完成闹铃的时分秒设置,同时在闹铃状态下,进行键盘扫描完成闹铃的时分秒设置,同时做好标志禁止闹铃中断中有关程序的执行。做好标志禁止闹铃中断中有关程序的执行。沉弹哟瘟突脱倡腥懒釜废阳书辐砖绥惟攻痴浴血搀洽
698、唾燃断夺兆母默帮拒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 程序流程程序流程主程序:完成主程序:完成DS12C887的寄存器初始化,其中寄存器的寄存器初始化,其中寄存器A主要主要是开启振荡器和计时,一般对新的片子只需要运行一次就够,是开启振荡器和计时,一般对新的片子只需要运行一次就够,寄存器寄存器B完成时钟芯片中断申请设置;还完成完成时钟芯片中断申请设置;还完成CPU 中断设置,中断设置,根据硬件图根据硬件图8-22将外部中断将外部中断1打开并设置成边沿方式;完成从打开并设置成边沿方式;完成从DS12C887中当前时间的读取并显示任务;完成有关内存中中当前时间的读取并显
699、示任务;完成有关内存中标志单元的初始化;判断标志单元的初始化;判断S1的状态并做标志,调用键盘检测的状态并做标志,调用键盘检测程序和信息显示(根据程序和信息显示(根据S1的状态来显示)。流程如图的状态来显示)。流程如图8-24所所示,两种状态下的键盘程序可以合起来通过标志来区分,但示,两种状态下的键盘程序可以合起来通过标志来区分,但这样难度会增加,目前的流程从表面上程序量会稍增加,但这样难度会增加,目前的流程从表面上程序量会稍增加,但比较容易处理。比较容易处理。三巍隅津脸憨咙驾辟尖圆千缔硼搽阿蜕嘿规恬纸阐榴狄镇城泥倘库叶肝休片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8
700、-24 主程序流程图贩峻蹄拷犹哇帝杉蘑圆特摩甜冈游饰萌喜茂卸玛钮诈婚舱捅欺召徒或酿琅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 外部外部1中断服务程序:首先读取中断服务程序:首先读取DS12C887的寄存器的寄存器C的数据,的数据,一方面是为了下面的中断源的判断,同时读取寄存器一方面是为了下面的中断源的判断,同时读取寄存器C后可后可以清除中断标志,以免引起多次中断。然后根据读取的寄存以清除中断标志,以免引起多次中断。然后根据读取的寄存器器C的数据判断是秒更新中断还是闹铃中断,对于秒更新中的数据判断是秒更新中断还是闹铃中断,对于秒更新中断,只需将断,只需将DS12C887的
701、当前时、分、秒信息读到显示缓冲的当前时、分、秒信息读到显示缓冲区即可;对于闹铃中断,检查是否允许闹铃(在时间修改状区即可;对于闹铃中断,检查是否允许闹铃(在时间修改状态和闹铃设置状态一般禁止闹铃),如允许则执行闹铃程序,态和闹铃设置状态一般禁止闹铃),如允许则执行闹铃程序,否则跳过闹铃程序。流程如图否则跳过闹铃程序。流程如图8-25所示。所示。键盘程序键盘程序1:按照独立按键式键盘的处理方法进行键盘的识:按照独立按键式键盘的处理方法进行键盘的识别,最后执行相应的功能。别,最后执行相应的功能。K1的功能是移位并使相应的数据的功能是移位并使相应的数据位闪烁,完成数据修改后将时间写入位闪烁,完成数据
702、修改后将时间写入DS12C887的时间存储的时间存储单元;单元;K2的功能是使闪烁的数据的功能是使闪烁的数据+1,分、秒加到,分、秒加到“60”回回“0”,时加到,时加到“13”回回“1”或加到或加到“24”回回“0”;K3的的功能是使闪烁的数据功能是使闪烁的数据1。流程图略。流程图略。懈典阉新膏跳菜窜剖每瓮则帽虏寅疼井光肿在文尊浴呕忿姬惊衫焦惯棕酶片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-25 外部中断1服务程序知器溉庶尿婆芒治杀状赊购啮锯礁森渝针邻茶卓判鸥芽荤绊晒冉壹谰颤晒片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 键盘程序键盘程序2:实
703、际上与键盘程序:实际上与键盘程序1几乎是一样的,只是键盘功几乎是一样的,只是键盘功能部分改变的数据对象不同,即改变的是闹铃缓冲区的数据,能部分改变的数据对象不同,即改变的是闹铃缓冲区的数据,最后要将数据写入到最后要将数据写入到DS12C887的闹铃数据区,流程略。的闹铃数据区,流程略。显示程序:参考前面的动态扫描程序的基本流程,按照标志显示程序:参考前面的动态扫描程序的基本流程,按照标志显示当前时间或闹铃时间。同时要完成数据修改位的闪烁,显示当前时间或闹铃时间。同时要完成数据修改位的闪烁,流程略。流程略。股瞄脖堡炊菇存凸玻控鬼能摧债风恕碳邯围涵听似敖番飘攻扦鄙振扇刽衙片机基础知识-E书联盟片机
704、基础知识-E书联盟第1章单片机基础知识 4设计实例四:分区广播控制器设计实例四:分区广播控制器(1)任务要求描述)任务要求描述由由PC机定时播放音乐(或铃声),同时发分区控制指令给控机定时播放音乐(或铃声),同时发分区控制指令给控制器,由控制器打开制器,由控制器打开/关闭相应分区的电源、信号通路,完关闭相应分区的电源、信号通路,完成分区广播,如早上成分区广播,如早上8:00播放歌曲播放歌曲1,广播地点,广播地点1区,控制区,控制器接到指令后将器接到指令后将1区(对控制器来说叫区(对控制器来说叫1通道)的电源、信号通道)的电源、信号通路打开;又如通路打开;又如9:30播放歌曲播放歌曲3,广播地点
705、,广播地点2区、区、4区、区、6区,区,则控制器接到指令后将则控制器接到指令后将2通道、通道、4通道、通道、6通道的电源和信号通道的电源和信号通路打开。歌曲播放结束后由通路打开。歌曲播放结束后由PC机发结束指令给控制器,将机发结束指令给控制器,将控制器的相应通道都关闭。控制器的相应通道都关闭。哦琼萝宁魏痈传软骂钎妮吝吼鄂里宇悼译棠慎筛唤堕柬癸智茧音哮欺纶器片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (2)设计要求)设计要求本系统是与本系统是与PC机通信的应用系统,控制器输入信息包括机通信的应用系统,控制器输入信息包括PC机声卡提供的音乐信号和来自机声卡提供的音乐信号和来自
706、PC机机RS232接口的控制信息。接口的控制信息。根据约定,控制信息的数据格式为根据约定,控制信息的数据格式为“$ 通道号通道号 通道开通道开/关码关码 校验码校验码 ”,其中,其中“$ ”作为数据的头,每次数据通信以此为作为数据的头,每次数据通信以此为联络信号,其联络信号,其ASCII码为码为“24H”;“通道号通道号”对应各个分区对应各个分区号,控制器设置号,控制器设置8个通道(每个通道包含电源和信号),因个通道(每个通道包含电源和信号),因此此“通道号通道号”为为“01H”到到“08H”的数;的数;“通道开通道开/关码关码”是代表执行的动作,设是代表执行的动作,设“00H”代表关闭通道,
707、代表关闭通道,“FFH”代表代表打开通道;打开通道;“校验码校验码”是对前面的是对前面的“通道号通道号 通道开通道开/关码关码”两个数据进行校验,采用两个数据进行校验,采用“异或异或”校验,即校验,即“校验码校验码”=“通道号通道号”异或异或“通道开通道开/关码关码”,若单片机收到的控制指令,若单片机收到的控制指令出错(即校验通不过),则给出错(即校验通不过),则给PC机发回一个字符机发回一个字符“?”(ASCII码码3FH),让),让PC机重发刚才的控制指令;若校验机重发刚才的控制指令;若校验正确也给正确也给PC机一个回话,如发个字符机一个回话,如发个字符“!”(ASCII码码21H)。)。
708、睛搓侯敞哆栏粳奈怕韶椅牧曼祖孝垄嗣摘视粕汪馆扣培困倡铸掺盆蓟丫函片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 控制器的输出共控制器的输出共8个通道,每个通道包括电源和信号,同时个通道,每个通道包括电源和信号,同时每个通道的开每个通道的开/关状态由相应的发光管来指示。关状态由相应的发光管来指示。 (3)硬件电路设计)硬件电路设计根据系统所述,硬件电路主要有根据系统所述,硬件电路主要有CPU及周边电路、信号通路及周边电路、信号通路控制电路、电源通路控制电路、控制电路、电源通路控制电路、RS232接口电路、有关指示接口电路、有关指示电路。电路。CPU及周边电路:选用及周边电路:选
709、用AT89C51,4KB程序存储器;振荡电程序存储器;振荡电路晶振选用路晶振选用11.0592 MHz;因为系统是无人值守的,要求受;因为系统是无人值守的,要求受干扰死机后能自动恢复,所以复位电路选用看门狗复位电路。干扰死机后能自动恢复,所以复位电路选用看门狗复位电路。上述硬件电路在第上述硬件电路在第2章都有详细介绍。章都有详细介绍。信号通路控制电路:音频信号的控制,一般可以选用模拟电信号通路控制电路:音频信号的控制,一般可以选用模拟电子开关,如四双向模拟开关子开关,如四双向模拟开关CD4066、三、三2通道模拟开关通道模拟开关CD4053等。等。概掐非玄系腰跪逐量炬粤测讥契富壬嫂笼灿芒邯肩胆
710、舌衔研找柜津水养涎片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 电源通路控制电路:考虑负载是一般的定压功放、电源通路控制电路:考虑负载是一般的定压功放、VCD等广等广播系统设备,所以电源控制选用继电器控制,同时将播系统设备,所以电源控制选用继电器控制,同时将LED发发光管并联在继电器的线包两端,可以作继电器工作的指示灯,光管并联在继电器的线包两端,可以作继电器工作的指示灯,继电器的驱动选用继电器的驱动选用ULN2003A,内部有,内部有7个达林顿管,每路可个达林顿管,每路可以通过以通过500 mA的电流,同时内置的电流,同时内置7个续流二极管,可直接驱个续流二极管,可直接驱
711、动感性负载,如继电器、打印头等,结构如图动感性负载,如继电器、打印头等,结构如图8-26所示。所示。(a)ULN2003A内部结构 (b)ULN2003A外部管脚热警笼霄崖庙苯品矿冲俩锚易刹依犊茧典滔鬼锁守鼻绚妓望靴逞崭火劫残片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 电源通路和信号通路的控制电路如图电源通路和信号通路的控制电路如图8-27、图、图8-28所示,电所示,电源通路由源通路由P2.0控制,高电平打开,虚线内为控制,高电平打开,虚线内为ULN2003A内部内部电路,信号通路由电路,信号通路由P1.0控制,高电平信号接通,这里给出一控制,高电平信号接通,这里给出一
712、个通道的例子,实际上包含个通道的例子,实际上包含8个一样的通道,个一样的通道,P2控制电源通控制电源通路,路,P1口控制信号通路。口控制信号通路。通信接口电路采用通信接口电路采用MAX232CPE,可以参考第,可以参考第6章的相关内容,章的相关内容,这里不再重复。这里不再重复。钒梅娥啮苫毙留彩钨忧浅煤腾瓮菲茅影莉载犹诊皆爸肠否虫梯札硕脑菠潭片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-27 通道1电源通路控制电路图8-28 通道1信号通路控制电路喧裙么陌倘络淫函匿涣兼径喝封忱旷氮挺诊泣进敖钒村致奥兔驭桥唉帮撑片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础
713、知识 (4)软件设计)软件设计软件设计的重点是与软件设计的重点是与PC机的数据通信,根据设计要求,通信机的数据通信,根据设计要求,通信的数据格式是的数据格式是“$ 通道号通道号 通道开通道开/关码关码 校验码校验码 ”,我们让,我们让单片机处于中断接收方式,并做好数据接收个数的记录,收单片机处于中断接收方式,并做好数据接收个数的记录,收到第一个数据后判断是否字符到第一个数据后判断是否字符“$”,正确的话,接收数据,正确的话,接收数据个数加个数加1,准备接收其他数据;若第一个数据不是,准备接收其他数据;若第一个数据不是“$”,则,则作废,重新接收第一个数据。这样收齐作废,重新接收第一个数据。这样
714、收齐4个数据(后三个数个数据(后三个数据在内存中要暂时保存起来以备后用)后检验据在内存中要暂时保存起来以备后用)后检验“校验码校验码”是是否等于否等于“通道号通道号”和和“通道开通道开/关码关码”的异或,如果关系成的异或,如果关系成立,则对立,则对“通道号通道号”和和“通道开通道开/关码关码”进行判断并作出相进行判断并作出相应的处理,并给应的处理,并给PC机发送机发送“21H”;如果关系不成立,说明;如果关系不成立,说明通信过程数据出错,给通信过程数据出错,给PC机发送机发送“3FH”,要求重发指令,要求重发指令,另外从接收到第一个另外从接收到第一个“$”后定时器开始定时,来设定每次后定时器开
715、始定时,来设定每次总的通信时间,以免双方之间总的通信时间,以免双方之间“我等你,你等我我等你,你等我”而出现无而出现无休止的等待,同时,如一方出现死机或其他原因可以及时结休止的等待,同时,如一方出现死机或其他原因可以及时结束本次通信,进入重新接收状态。下面给出部分程序流程。束本次通信,进入重新接收状态。下面给出部分程序流程。敝辱赋羔悼澳艇博惶弯迹惰粪迷醒窒眼黑怕砰道盖驹叫谨握疵场莉且剔臆片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 (5)程序)程序 主程序:完成定时器、通信、中断的设置,做好各种标志主程序:完成定时器、通信、中断的设置,做好各种标志的初始化,此略。的初始化,
716、此略。 定时器:根据通信中设立的标志进行计时,一次通信过程定时器:根据通信中设立的标志进行计时,一次通信过程超时后,将各种标志清除,结束本次通信,等待下次通信,超时后,将各种标志清除,结束本次通信,等待下次通信,此略。此略。 串口中断程序:接收数据,并根据接收到的指令信息完成串口中断程序:接收数据,并根据接收到的指令信息完成对相应通道的电源通路和信号通路的控制。流程如图对相应通道的电源通路和信号通路的控制。流程如图8-30所所示。示。狙弄惺霹整泣宴寇近铬纹刻鸥膏巍毕轮别岸唆绢犬蝎份满风聋欲揣普跪而片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 图8-30 串口中断接收流程图渊
717、母陶色嚎砒细噬舱疙薪蚕拴跳十市赦瑰萨睁涧芦龙夫喇绵事蹿阿欺砚颅片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8.3 8.3 单片机应用系统的一般调试方法单片机应用系统的一般调试方法8.3.1 硬件调试硬件调试是利用基本测试仪器(万用表、示波器等)、开发硬件调试是利用基本测试仪器(万用表、示波器等)、开发系统(仿真器等),通过执行开发系统有关命令或运行适当系统(仿真器等),通过执行开发系统有关命令或运行适当的测试程序(也可以是与硬件有关的部分用户程序段),检的测试程序(也可以是与硬件有关的部分用户程序段),检查用户系统硬件中存在的故障,硬件调试可分静态调试与动查用户系统硬件中
718、存在的故障,硬件调试可分静态调试与动态调试两步进行。态调试两步进行。1静态调试静态调试静态调试是在用户系统未工作时的一种硬件检查,第一步为静态调试是在用户系统未工作时的一种硬件检查,第一步为目测:即进行物理性检查,检查硬件安装有没有错误或缺陷,目测:即进行物理性检查,检查硬件安装有没有错误或缺陷,如焊盘粘连、焊盘脱落,元件是否安装正确等。如焊盘粘连、焊盘脱落,元件是否安装正确等。第二步为万用表测试:目测检查后,可进行万用表测试。先第二步为万用表测试:目测检查后,可进行万用表测试。先用万用表复核目测中认为可疑的连接或接点,检查它们的通用万用表复核目测中认为可疑的连接或接点,检查它们的通断状态是否
719、与设计规定相符。再检查各种电源线与地线之间断状态是否与设计规定相符。再检查各种电源线与地线之间是否有短路现象,这一步非常重要,千万不要疏忽,如果有是否有短路现象,这一步非常重要,千万不要疏忽,如果有短路必须排除,否则会产生严重的后果。短路必须排除,否则会产生严重的后果。剩哗兵旬冉苗样叉责囊庶鸭勤特究曹攘寥施淹祭裁勇熄诸听而骡服那狗霞片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 第三步为加电检查:当给硬件系统加电时,首先检查所有插第三步为加电检查:当给硬件系统加电时,首先检查所有插座或器件的电源端是否有符合要求的电压值(注意,单片机座或器件的电源端是否有符合要求的电压值(注意
720、,单片机插座上的电压不应该大于插座上的电压不应该大于5 V,否则联机时将损坏仿真器)、,否则联机时将损坏仿真器)、接地端电压值是否为接地端电压值是否为0V;然后可以用手触摸芯片的表面温度,;然后可以用手触摸芯片的表面温度,来检查是否有短路现象,有电流表的话最好第一次上电时接来检查是否有短路现象,有电流表的话最好第一次上电时接个电流表,这样更加便于发现是否有短路现象。个电流表,这样更加便于发现是否有短路现象。2动态调试动态调试在静态检查印制板、连接、器件等部分无物理性故障后,即在静态检查印制板、连接、器件等部分无物理性故障后,即可将用户系统与单片机开发系统用仿真电缆连接起来,进行可将用户系统与单
721、片机开发系统用仿真电缆连接起来,进行联机动态调试。联机动态调试。由于单片机应用系统是在程序控制下去完成特定的任务,从由于单片机应用系统是在程序控制下去完成特定的任务,从信号角度上看,内部必须有严格的时序,硬件电路的有些问信号角度上看,内部必须有严格的时序,硬件电路的有些问题也只有在程序执行后才能发现,所以硬件电路的最终功能题也只有在程序执行后才能发现,所以硬件电路的最终功能必须通过动态调试来检查。必须通过动态调试来检查。桂迪妮岔哎缚酝蓝眼捎权箩益灌巧龚畦丹讣蔷析赚摊毋呛瀑歉水克辱琅缸片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 动态调试借用开发系统资源(单片机、存储器等)来
722、调试用动态调试借用开发系统资源(单片机、存储器等)来调试用户系统中单片机的外围电路。用户可以先编制简单的针对某户系统中单片机的外围电路。用户可以先编制简单的针对某块硬件电路的软件,运行后检查硬件是否工作正常,例如,块硬件电路的软件,运行后检查硬件是否工作正常,例如,对于对于RAM,可以编制写入、读出的程序,看写入数据与读出,可以编制写入、读出的程序,看写入数据与读出数据是否相同,相同则数据是否相同,相同则RAM正常。又如,对显示电路同样可正常。又如,对显示电路同样可以先编制一段数码显示自检程序(如从以先编制一段数码显示自检程序(如从0000到到9999循环显示)循环显示)进行验证。进行验证。犀
723、伟侥霸笨吴蠢咒盅晨逸镁昌砷暑悦似劫口敬海苹漫饱闽萧剪彤伤沉投拥片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 动态调试的一般方法由分到合,首先按逻辑功能将用户动态调试的一般方法由分到合,首先按逻辑功能将用户系统硬件电路分为若干块,如程序存储器电路、系统硬件电路分为若干块,如程序存储器电路、A/D转换电转换电路、继电器控制电路,再分块调试。当调试某块电路时,与路、继电器控制电路,再分块调试。当调试某块电路时,与该电路无关的器件全部从用户系统中去掉,这样,可将故障该电路无关的器件全部从用户系统中去掉,这样,可将故障范围限定在某个局部的电路上。当各块电路调试无故障后,范围限定在某个
724、局部的电路上。当各块电路调试无故障后,将各电路逐块加入系统中,再对各块电路功能及各电路间可将各电路逐块加入系统中,再对各块电路功能及各电路间可能存在的相互联系进行试验。此时若出现故障,则最大可能能存在的相互联系进行试验。此时若出现故障,则最大可能是在各电路协调关系上出了问题,如交互信息的联络是否正是在各电路协调关系上出了问题,如交互信息的联络是否正确、时序是否达到要求等。直到所有电路加入系统后各部分确、时序是否达到要求等。直到所有电路加入系统后各部分电路仍能正确工作为止,由分到合的调试即告完成。在经历电路仍能正确工作为止,由分到合的调试即告完成。在经历了这样一个调试过程后,大部分硬件故障基本上
725、可以排除。了这样一个调试过程后,大部分硬件故障基本上可以排除。榔般懊悸刁差炒学召昏雹察什柱模盲盗咬拙爆巧腿氧彩龋垃宅菲酱鳖滥熏片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8.3.2 软件调试从宏观来说,单片机应用系统中的软件与硬件是密切相关、从宏观来说,单片机应用系统中的软件与硬件是密切相关、相辅相成的。软件是硬件的灵魂,没有软件,系统将无法工相辅相成的。软件是硬件的灵魂,没有软件,系统将无法工作;同时,大多数软件的运行又依赖于硬件,没有相应的硬作;同时,大多数软件的运行又依赖于硬件,没有相应的硬件支持,软件的功能便荡然无存。因此,将两者完全孤立开件支持,软件的功能便荡然
726、无存。因此,将两者完全孤立开来是不可能的。然而,并不是用户程序的全部都依赖于硬件,来是不可能的。然而,并不是用户程序的全部都依赖于硬件,当软件对被测试参数进行加工处理或做某项事务处理时,往当软件对被测试参数进行加工处理或做某项事务处理时,往往是与硬件无关的,这样,就可以通过对用户程序的仔细分往是与硬件无关的,这样,就可以通过对用户程序的仔细分析,把与硬件无关的、功能相对独立的程序段抽取出来,形析,把与硬件无关的、功能相对独立的程序段抽取出来,形成与硬件无关和依赖于硬件的两大类用户程序块。这一划分成与硬件无关和依赖于硬件的两大类用户程序块。这一划分工作在软件设计时就应充分考虑。工作在软件设计时就
727、应充分考虑。愧随借迟瓢焚狠珠葱较嚷尝短完坏坛擒邦妇答侦崎兆碘购缩怖磨赃球本祭片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 1先分块后组合先分块后组合如果用户系统规模较大、任务较多,那么采用传统的方法从如果用户系统规模较大、任务较多,那么采用传统的方法从头至尾调试,既费时间又不容易进行错误定位,所以常规的头至尾调试,既费时间又不容易进行错误定位,所以常规的调试方法是分别对两类程序块进一步采用分模块调试,以提调试方法是分别对两类程序块进一步采用分模块调试,以提高软件调试的有效性。高软件调试的有效性。2单步、连续综合法单步、连续综合法调试好程序模块的关键是实现对错误的正确定位。准
728、确发现调试好程序模块的关键是实现对错误的正确定位。准确发现程序(或硬件电路)中错误的最有效方法是采用单步与连续程序(或硬件电路)中错误的最有效方法是采用单步与连续综合法,连续运行一般要配合添加断点,主要任务是确定错综合法,连续运行一般要配合添加断点,主要任务是确定错误的大致范围,可称作误的大致范围,可称作“粗粗”调;单步运行可以了解被怀疑调;单步运行可以了解被怀疑程序中每条指令的执行情况,对照指令运行结果可以知道该程序中每条指令的执行情况,对照指令运行结果可以知道该指令执行的正确性,并进一步确定是由于硬件电路错误、数指令执行的正确性,并进一步确定是由于硬件电路错误、数据错误还是程序设计错误等引
729、起了该指令的执行错误,从而据错误还是程序设计错误等引起了该指令的执行错误,从而发现、排除错误,可称为发现、排除错误,可称为“细细”调。调。曼拜犬旗牢祈峡仓饯牛撵倒迭栽头雄玫见俏勃挑弥厢贺洽毗虾修焰妮耿舶片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8.3.3 系统联调系统联调主要解决以下问题:系统联调主要解决以下问题:(1)软、硬件能否按预定要求配合工作?如果不能,那么)软、硬件能否按预定要求配合工作?如果不能,那么问题出在哪里?如何解决?问题出在哪里?如何解决?(2)系统运行中是否有潜在的设计时难以预料的错误?如)系统运行中是否有潜在的设计时难以预料的错误?如硬件延时过长
730、造成工作时序不符合要求,布线不合理造成有硬件延时过长造成工作时序不符合要求,布线不合理造成有信号串扰等。信号串扰等。(3)系统的动态性能指标(包括精度、速度参数)是否满)系统的动态性能指标(包括精度、速度参数)是否满足设计要求?足设计要求?戍贾蔼嘴秩架贾檬叹咒填训擂碉灼意锌燥距莆搬甭植焦骇狰猜吗倡睹织以片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8.3.4 现场调试一般情况下,通过系统联调后,用户系统就可以按照设计目一般情况下,通过系统联调后,用户系统就可以按照设计目标正常工作了。但由于某些控制对象是放在实验室里调试的,标正常工作了。但由于某些控制对象是放在实验室里调试的
731、,而实际的运行环境较为复杂(如环境干扰较为严重、工作现而实际的运行环境较为复杂(如环境干扰较为严重、工作现场有腐蚀性气体等),在实际现场工作之前,环境对系统的场有腐蚀性气体等),在实际现场工作之前,环境对系统的影响无法预料,所以只能通过现场运行调试来发现问题,找影响无法预料,所以只能通过现场运行调试来发现问题,找出相应的解决方法;或者虽然已经在系统设计时考虑到抗干出相应的解决方法;或者虽然已经在系统设计时考虑到抗干扰的对策,但是否行之有效,还必须通过用户系统在实际现扰的对策,但是否行之有效,还必须通过用户系统在实际现场的运行来加以验证。另外,有些用户系统的调试是在用模场的运行来加以验证。另外,
732、有些用户系统的调试是在用模拟设备代替实际监测、控制对象的情况下进行的,这就更有拟设备代替实际监测、控制对象的情况下进行的,这就更有必要进行现场调试,以检验用户系统在实际工作环境中工作必要进行现场调试,以检验用户系统在实际工作环境中工作的正确性。的正确性。欺旋瘦偿屯耍衔旱俭酋螟商姚透拇尿形侠久芹罪坟适操样博屈臂桌促灶乓片机基础知识-E书联盟片机基础知识-E书联盟第1章单片机基础知识 8.4 8.4 习习 题题1系统设计(产品开发)一般的过程怎样?需要什么设备系统设计(产品开发)一般的过程怎样?需要什么设备?2如何进行硬件系统的调试?如何进行硬件系统的调试?3如何进行软件系统的调试?如何进行软件系统的调试?4什么是联机调试和现场调试?什么是联机调试和现场调试?诸妇锁淫畸在挺先爱乐度伙涟劲哈贪距绅规憎倡雄采峪柒氰利居拍乙秋嘶片机基础知识-E书联盟片机基础知识-E书联盟