
单片微型计算机原理胡乾斌课后习题答案.pdf
42页习题11.1 什么是单片微型计算机?答:单片微型计算机是将计算机的基本部件微型化并集成到一块芯片上的微型计算机,是计算机微型化的典型代表之一,通常片内都含有CPU、ROM、RAM、并行I/串行I/O、定时器/ 计数器、中断控制、系统时钟及系统总线等1.2 单片机的发展经历了哪几个阶段?在哪一阶段确立「 单片机在嵌入式应用中的地位答: 单片机初级阶段( 1974-1976年) , 芯片化探索阶段( 1976—1978年) , 8 位单片机成熟阶段( 1978-1982年),从SCM向MCU过渡阶段(1983—1990年),MCU百花齐放阶段(1990年一至今)其中,芯片化探索阶段(1976—1978年)确立了单片机在嵌入式应用中的地位.1.3 单片机可分为几个系列?简述每个系列的主要特性答:单片机按系列可分为80c51系列、PIC系列和AVR系列等PIC系列单片机是Micro Chip公司的产品,与 51系列单片机不兼容1) PIC系列单片机最大的特点是从实际出发,重视产品的性能与价格比,发展多种型号来满足不同层次的应用要求2)精简指令使其执行效率大为提高3)产品上市零等待(Zero time to market)。
4) PIC有优越开发环境5)其引脚具有防瞬态能力, 通过限流电阻可以接至220V交流电源, 可直接与继电器控制电路相连, 无须光电耦合器隔离,给应用带来极大方便6)彻底的保密性7)自带看门狗定时器,可以用来提高程序运行的可靠性8)睡眠和低功耗模式AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC( Reduced Instruction Set CPU)精简指令集高速8 位单片机AVR单片机的主要特性1) AVR单片机以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中( 指令集中占大多数的单周期指令都是如此) ,取指周期短,又可预取指令,实现流水作业,故可高速执行指令2) AVR单片机硬件结构采取8 位机与16位机的折中策略,即采用局部寄存器堆( 32个寄存器文件) 和单体高速输入/ 输出的方案( 即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑) 提高了指令执行速度( IMIPS/MHz) , 克服了瓶颈现象;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本3) AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IA P ,便于产品的调试、开发、生产、更新。
4) AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/ 输出、可设定( 初始)高阻输入、驱动能力强( 可省去功率驱动器件)等特性,使得I/O 口资源灵活、功能强大、可充分利用5) AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C> SPI使用6)增强性的高速同/ 异步串口,具有硬件产生校验码、硬件检测和校验帧错、两级接收缓冲、波特率自动调整定位( 接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯7)面向字节的高速硬件串行接口 TWI、SPL TWI与12c接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/ 从机的收/ 发全部4 种组合的多机通信SPI支持主/ 从机等4 种组合的多机通信8) AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BO D ,多个复位源( 自动上电复位、外部复位、看门狗复位、BOD复位) ,可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。
9) AVR单片机具有多种省电休眠模式,且可宽电压运行(5~2.7V), 抗干扰能力强,可降低一般8 位机中的软件抗干扰设计工作量和硬件的使用量10) AVR单片机技术体现了单片机集多种器件( 包括FLASH程序存储器、看门狗、EEPROM、同/ 异步串行口、 TWI. SPL A/D模数转换器、定时器/ 计数器等) 和多种功能( 增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具有输入捕获和比较匹配输出等多样化功能的定时罂/ 计数器、具有替换功能的I/O端口等) 于一身,充分体现了单片机技术的从' ' 片自为战" 向' ' 片 上系统SOC”过渡的发展方向1.4简述单片机技术发展的趋势答:(1)单片机的大容量化单片机内存储器容量进一步扩大 以往片内ROM为 1KB-8KB, RAM为 64字节〜 256字节 现在片内ROM可达40KB,片内RAM可达4KB, I/O也不需再外加扩展芯片OTPROM、Flash ROM成为主流供应状态而随着单片机程序空间的扩大,在空余空间可嵌入实时操作系统RTOS等软件这将大大提高产品的开发效率和单片机的性能2)单片机的高性能化高性能化主要是指进•步改进CPU的性能,加快指令运算的速度和提高系统控制的可靠性。
采用精简指令集(RISC)结构,可以大幅度提高运行速度并加强位处理功能、中断和定时控制功能;采用流水线结构,指令以队列形式出现在CPU中,因而具有很高的运算速度,有的甚至采用多级流水线结构单片机的扩展方式从并行总线到发展出各种串行总线,并被工业界接受,形成一些工业标准如 产5 SPI串行总线等它们采用3条数据总线代替现行的8条数据总线,从而减少了单片机引线,降低了成本单片机系统结构更加简化及规范化3)单片机的小容量低廉化小容量低廉的4位、8位机也是单片机发展方向之一其用途是把以往用数字逻辑电路组成的控制电路单片化专用型的单片机将得到大力发展使用专用单片机可最大限度地简化系统结构,提高可靠性,使资源利用率最高在大批量使用时有可观的经济效益4)单片机的外围电路内装化随着集成度的不断提高,可以把众多的外围功能器件集成到单片机内除了 CPU、ROM、RAM夕 卜 ,还可把A/D、D/A转换器、DMA控制器、声音发生器、监视定时器、液晶驱动电路、锁相电路等一并集成在芯片内为了减少外部的驱动芯片,进一步增强单片机的并行驱动能力有的单片机可直接输出大电流和高电压,以便直接驱动显示器为进一步加快I/O 口的传输速度,有的单片机还设置了高速I/。
口,可用最快的速度驱动外部设备,也可以用最快的速度响应外部事件甚至单片机厂商还可以根据用户的要求量身定做,把所需要的外围电路全部集成在单片机内,制造出具有自己特色的单片机5)单片机的全面CMOS化单片机的全面CMOS化,将给单片机技术发展带来广阔的天地CMOS芯片除了低功耗特性之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态低功耗的技术措施可提高可靠性,降低工作电压,可使抗噪声和抗干扰等各方面性能全面提高单片机的全盘CMOS化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携化 6)单片机的应用系统化单片机是嵌入式系统的独立发展之路,单片机向MCU发展的重要因素, 就是寻求应用系统在芯片上的最大化解决因此,专用单片机的发展自然形成了 SOC ( System on Chip)化趋势随着微电子技术、IC设计、EDA工具的发展,基于SOC的单片机应用系统设计会有较大的发展因此,随着集成电路技术及工艺的快速发展,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统1.5单片机具有哪些突出优点? 举例说明单片机的应用领域答:1 .单片机寿命长所谓寿命长, 一方面指用单片机开发的产品可以稳定可靠地工作十年、二十年,另一方面是指与微处理器相比生存周期长。
MPU更新换代的速度越来越快,以386、486、586为代表的M PU ,几年内就被淘汰出局而传统的单片机如8051、 68HC05等年龄已有二十多岁,产量仍是上升的一些成功上市的相对年轻的CPU核心,也会随着I/O功能模块的不断丰富,有着相当长的生存周期2 . 8 位、32位单片机共同发展这是当前单片机技术发展的另一动向长期以来,单片机技术的发展是以8 位机为主的随着移动通讯、网络技术、多媒体技术等高科技产品进入家庭,32位单片机应用得到了长足、迅猛的发展3 . 低噪声与高速度为提高单片机抗干扰能力, 降低噪声, 降低时钟频率而不牺牲运算速度是单片机技术发展之追求 一些8051单片机兼容厂商改善了单片机的内部时序, 在不提高时钟频率的条件下, 使运算速度提高了很多 Motorola单片机使用了琐相环技术或内部倍频技术使内部总线速度大大高于时钟产生器的频率68HC08单片机使用4.9MHz外部振荡器而内部时钟达32MHz三星电子新近推出了 1.2GHz的ARM处理器内核4 . 低 电压与低功耗儿乎所有的单片机都有Wait、 Stop等省电运行方式允许使用的电源电压范围也越来越宽 •般单片机都能在3~6V范围内工作,对电池供电的单片机不再需要对电源采取稳压措施。
低电压供电的单片机电源下限已由2.7V降至2.2V、1.8V„ 0.9V供电的单片机已经问世5 . 低噪声与高可靠性为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取了一些新的技术措施如 ST公司的由标准8032核和PSD ( 可编程系统器件) 构成的口 PSD系列单片机片内增加了看门狗定时器,NS公司的COP8单片机内部增加了抗EMI电路,增强了' ' 看门狗" 的性能Motorola推出了低噪声的LN系列单片机6 . 1SP 与 IAPISP(In-System Programming)技术的优势是不需要编程器就可以进行单片机的实验和开发, 单片机芯片可以直接焊接到电路板上,调试结束即成成品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便IAP (In-Application Programming)技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个ISP的实现一般需要很少的外部电路辅助实现,而 IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232 0 ,通过专门设计的固件程序来编程内部存储器,可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。
单片机的应用领域:1 ) 智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统的电子线路控制,升级换代,提高档次如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各种视听设备等2)办公自动化设备:现代办公室使用的大量通信和办公设备多数嵌入了单片机如打印机、复印机、机、绘图机、考勤机、以及通用计算机中的键盘译码、磁盘驱动等3)商业营销设备:在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC卡刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系统等都采用了单片机控制4)工业自动化控制:工业自动化控制是最早采用单片机控制的领域之一如各种测控系统、过程控制、机电一体化、PLC等在化工、建筑、冶金等各种工业领域都要用到单片机控制5)智能仪器仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能如数据处理和存储、故障诊断、联网集控等6)智能化通信产品:最突出的是,当然内的芯片属专用型单片机7) 汽车电子产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系统和运行监视器( 黑匣子)等都离不开单片机8)航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。
习题22.1 MCS-51单片机内部包含哪些主要逻辑功能部件?答:微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、特殊功能寄存器(SFR)、并行I/O 口、串行通信口、定时器/ 计数器及中断系统2 .2 说明程序计数器PC和堆栈指针SP的作用.复位后PC和SP各为何值?答:程序计数器PC中存放将要执行的指令地址,PC有自动加1功能,以实现程序的顺序执行它是SFR中唯一隐含地址的,因此,用户无法对它进行读写但在执行转移、调用、返回等指令时能自动改变其内容,以实现改变程序的执行顺序程序计数器PC中内容的变化决定程序的流程,在执行程序的工作过程中,由PC输出将要执行的指令的程序存储器地址, CPU读取该地址单元中存储的指令并进行指令译码等操作, PC则自动指向下一条将要执行的指令的程序存储器地址SP是 •个 8 位的SFR ,它用来指示堆栈顶部在内部RAM中的位置系统复位后SP为07 H ,若不对SP设置初值,则堆栈在08H开始的区域,为了不占用工作寄存器Ro~R7的地址,一般在编程时应设置SP的初值 ( 最好在30H~7FH区域)o2.3 程序状态字寄存器PSW的作用是什么? 其中状态标志有哪几位? 它们的含义是什么?答:PSW是保存数据操作的结果标志,其中状态标志有CY (PSW .7):进位标志,AC (PSW .6):辅助进位标志,又称半进位标志,F。
、Fi (PSW,5、PSW .l):用户标志;OV (PSW .2):溢出标志;P (PSW .0):奇偶标志2 .4 什么是堆栈?堆栈有何作用?为什么要对堆栈指针SP重新赋值? SP的初值应如何设定?答:堆栈是一种数据结构,所谓堆栈就是只允许在其一端进行数据写入和数据读出的线性表其主要作用有两个:保护断点和保护现场堆栈区的设置原则上可以在内部RAM的任意区域, 但由于MCS-51单片机内部RAM的OOH~1FH地址单元已被工作寄存器R0~R7占用,20H~2FH为位寻址区,故堆栈一般设在30H~7FH ( 对于8032系列芯片可为30H~0FFH)的区域内 单片机复位后,SP的内容为07H,堆栈事实上由08H单元开始, 考虑到O8H~1FH单元分别属于1~3组的工作寄存器区,则最好把SP值改置为1FH或更大的值2 .5 开机复位后,CPU使用的是哪组工作寄存器?它们的地址如何? CPU如何指定和改变当前工作寄存器组?答:开机复位后使用的是0组工作寄存器,它们的地址是00H~07H,对程序状态字PSW中的RS1和RS0两位进行编程设置,可指定和改变当前工作寄存器组R SL RS0=00H时,当前工作寄存器被指定为0组;R SI、RS0=01H时,当前工作寄存器被指定为1组;R SI、RS0=10H时,当前工作寄存器被指定为2组;RSI, RSO=11H时,当前工作寄存器被指定为3组。
2.6 MCS-51的时钟周期、机器周期、指令周期是如何定义的? 当振荡频率为12MHz时,一个机器周期为多少微秒?答:①时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是计算机中最基本的、最小的时间单位②CPU取出一条指令至该指令执行完所需的时间称为指令周期,因不同的指令执行所需的时间可能不同,故不同的指令可能有不同的指令周期③机器周期是用来衡量指令或程序执行速度的最小单位 它的确定原则是以最小指令周期为基准的,即一个最小指令周期为一个机器周期④当振荡频率为12MHz时,一个机器周期1微秒2.7 MCS-51单片机的控制信号、、有哪些功能?答:是访问程序存储器控制信号当端接低电平时,则不管芯片内部是否有程序存储器,CPU只访问外部程序存储器对8031来说,因其内部无程序存储器,所以该引脚必须接地当端接高电平时,CPU访问内部程序存储器,但当PC ( 程序计数器) 值超过某一值时,将自动转向片外程序存储器1000H地址继续执行程序是地址锁存允许信号当 CPU访问外部存储器或I/O接口时, ,ALE输出脉冲的下降沿用于锁存16位地址的低8 位 在不访问外部存储器或I/O接口时, ALE端有周期性正脉冲输出, 其频率为振荡频率的1/6。
但是, 每当访问外部数据存储器或I/O接口时, 在第二个机器周期中ALE只出现一次, 即丢失一个ALE脉冲片外程序存储器读选通信号 在 CPU从外部程序存储器读取指令( 或常数) 期间, 每个机器周期两次有效,但在访问外部数据存储器或I/O接口时,信号将不出现端可以驱动8 个丁TL负载2.8 MCS-51的片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突?答:MCS-51的片外程序存储器和片外数据存储器共处同一地址空间,地址范围都是0000H〜FFFFH ( 64KB), 但不会发生总线冲突因片外程序存储器和片外数据存储器的读写控制信号不同,片外程序存储器的读信号是,而片外数据存储器的读信号为、写信号为, 访问片外程序存储器和片外数据存储器的指令也不同,所以它们不会发生总线冲突2 .9 简述MCS-51内部数据存储器的存储空间分配答:内部数据存储器分为3 个区域:1 .工作寄存器区(OOH~1FH);2 .位寻址区(20H~2FH);3 .堆栈和数据缓冲器区(30H~7FH或 30H~0FFH).2.10 位地址和字节地址有何区别?位地址20H具体在内存中什么位置?答:MCS-51的位存储器由以内部RAM中20H-2FH单元和特殊功能寄存器中地址为8 的倍数的特殊功能寄存器两部分组成。
其中每个单元的每一位都有一个位地址映像, 它们既可以像普通内部RAM单元一样按字节存取,也可以对单元中的任何一位单独存取字节地址是内部RAM中和特殊功能寄存器中每个存储单元的地址位地址20H是内部RAM24H中的D0位2.11 8051的4 个I / 0 口作用是什么? 8051的片外三总线是如何分配的?答:MCS-51单片机有4 个8 位并行I/O端口,分别记作P0、Pl, P2、P3 口① 在访问片外扩展存储器时, P0 口分时传送低8 位地址和数据, P2 口传送高8 位地址 P1 口通常作为通用I/O 口供用户使用P3 口具有第二功能,为系统提供一些控制信号在无片外扩展存储器的系统中,这 4 个口均可作为通用I/O端口使用在作为通用I/O端口使用时,这 4个口都是准双向口②在访问片外扩展存储器时,片外三总线的构成:P0 口传送低8位地址经锁存器所存构成低8位地址总线,高8位地址总线由P2 口构成P0 口作为单片机系统的低8位地址/ 数据线分时复用,在低8位地址锁存后,P0 口作为双向数据总线由P3 口的第二功能输出数据存储器的读、 写控制信号与片外程序存储器读选通信号, 访问程序存储器控制信号,地址锁存允许信号构成控制总线。
习题33.1 汇编语句是由4个 部 分 ( 字段)构成的,简述各部分的含义答:汇编语句的4个部分为:[ 标号:][ 操作码][ 操作数] ;[ 注释]标号是用户设定的一个符号,表示存放指令或数据的存储单元地址 标号由以字母开始的1—8个字母或数字串组成,以冒号结尾不能用指令助记符、伪指令或寄存器名来作标号标号是任选的,并不是每条指令或数据存储单元都要标号,只在需要时才设标号如转移指令所要访问的存储单元前面一般要设置标号一旦使用了某标号定义一个地址单元,在程序的其它地方就不能随意修改这个定义,也不能重复定义操作码是指令或伪指令的助记符,用来表示指令的性质或功能对于一条汇编语言指令,这个字段是必不可少的操作数给出参加运算( 或其它操作) 的数据或数据的地址操作数可以表示为工作寄存器名、特殊功能寄存器名、标号名、常数、表达式等这一字段可能有,也可能没有若有两个或三个操作数,它们之间应以逗号分开注释字段不是汇编语言的功能部分,只是增加程序的可读性言简意赅的注释是汇编语言程序编写中的重要组成部分3.2 举例说明MCS-51单片机的7种寻址方式,各寻址方式的寻址空间1 .立即寻址立即寻址方式的寻址空间为程序存储器。
例如:MOVA, #3FH ; 3FH-A1 .直接寻址直接寻址方式中操作数存储的空间有三种:1 .内部数据存储器的低128个字节单元(00H〜7FH)例如:MOVA, 30H ; ( 30H) - A指令功能是把内部RAM 30H单元中的内容送入累加器A⑵位地址空间例如:MOVC, 00H ;直接位00H内容~ 进位位⑶特殊功能寄存器例如: MOV IE, #85H ;立即数85H一中断允许寄存器IE.1 .寄存器寻址寄存器寻址方式的寻址空间为工作寄存器和特殊功能寄存器等例如: MOVA, R6 ; (R6) ~A1 .寄存器间接寻址 寄存器间接寻址空间为内部RAM 128字节,外部RAM例如: MOVA, @R0 ; ( (RO) )-A1 .变址寻址变址寻址空间为程序存储器例如: MOVC A, @A+DPTR ; ( (DPTR) 4- (A ) ) - AMOVC A, @A+PC ; ( (PC) + (A ) ) ~A1 .相对寻址相对寻址空间为程序存储器2 .当前PC值是指相对转移指令所在地址( 源地址) 加转移指令字节数即:当前PC值 = 源地址+ 转移指令字节数1 . 偏移量re l是有符号的单字节数,以补码表示,相对值在-128〜+127范围内,负数表示从当前地址向上转移,正数表示从当前地址向下转移。
所以转移的目的地址为:目的地址= 当前PC值 + rel = 源地址+转移指令字节数+ rel例如: JNC 2AH , JZ F8H1 , 位寻址 位寻址空间为内部RAM 20H~2FH的 128位和SFR中的83位例如: MOVC, 30H, MOV P1.0, C3.3指出下列指令的寻址方式和操作功能:INC 40H ; 直接寻址(40H)+lf 40HINC A ;寄存器寻址(A)+1-AINC @R2 ; 寄存器间接寻址((R2))+l-(R2)MOVC A, @A+DPTR ; 基址加变址寄存器寻址((A)+(DPTR)) ~AMOV A, #6EH ; 立即寻址 6EH-ASETB P1.0 ; 位寻址 PLO 置 13 .4 设内部RAM中3AH单元的内容为50H,写出当执行下列程序段后寄存器A、R0和内部RAM 50H, 51H单元的内容为何值?MOV A, 3AH ;(A)=50HMOV RO, A ;(R0)=50HMOV A, #00H ;(A)=00HMOV @R0, A ;(50H)=00HMOV A, #25H ;(A)=25HMOV51H, A ;(51H)=25H答:(A)=25H, (3AH)=50Hz (R0)=50Hz (50H)=00Hz (51H)=25H3 .5 设堆栈指针SP中的内容为6 0 H ,内部RAM 30H和 31H单元的内容分别为27H和 1AH ,执行下列程序段后,61H, 62H, 30H, 31H, DPTR及 SP中的内容将有何变化?PUSH 30H ; (SP) +1-SP, (30H) - 61HPUSH 31H ; (SP) +1->SPZ (31H) - 62HPOP DPL ; (62) - DPL, (SP) -1-SPPOP DPH ; (61) - DPH, (SP) -1-*SPMOV30H, #00H ; 00H-30HMOV31H, #OFFH ; FFH-31H答:(61H)=27H, (62H)=1AH, (30H)=00Hz (31H)=FFH, (DPTR)=271AHZ (SP)=60H3 .6 设(A)=30H, (RI) =23H, GOH) =05H。
执行下列两条指令后, 累加器A 和 R1以及内部RAM 30H单元的内容各为何值?XCH A, R1XCHD A, @R1答:(A)=25H,(Rl)=30H,(30H)=03H3 .7设(A ) =010101016, (R5) =10101010B,分别写出执行下列指令后的结果ANLA, R5 ; (A)=0000 OOOOB, (R5) =101010106ORLA, R5 ; (A)= 10101010B, (R5) =101010106XRL A, R5 ; (A)=00000000B3 .8 设指令SJM Prel=7FH,并假设该指令存放在2113H和2114H单元中当该条指令执行后,程序将跳转到何地址?答:程序将跳转到2194H地址3.9 简述转移指令 AJMP a d d rll, SJMP rel, UMP addrl6 及 JMP @A+DPTR 的应用场合答:AJMP a d d rll这是在当前. PC的2K字节范围内的无条件转移指令,把程序的执行转移到指定的地址SJM Prel这是相对跳转指令, 其中re l为相对偏移量 转向的目标地址是在当前PC的前128字节到后127字节之间。
□ MP addR16执行这条指令时把指令的第二和第三字节分别装入PC的高位和低位字节中,无条件地转向指定地址转移的目标地址可以在64KB程序存储器地址空间的任何地方,不影响任何标志JMP @A+DPTR把累加器A中8位无符号数与数据指针DPTR中的16位数相加,将结果作为转移的目标地址送入P C ,不改变累加器A和数据指针DPTR内容,也不影响标志本指令以DPTR内容作为基址,A的内容作为变址只要把DPTR的值固定,而给A赋予不同的值,即可实现程序的多分支转移3 .1 0 查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点MOV78H, 80H ; 85 80 78MOV 78H, #80H ; 75 78 80答:直接寻址单元传送到直接寻址单元的机器码是第二个操作数在前,而立即数传送到直接地址单元是第一个操作数在前,次序正好相反3 .1 1 试编写程序, 查找在内部RAM 30H -50H单元中1AH这一数据 若找到1AH则将51H单元置为01H;没找到则将51H单元置为00H答:参考程序如下MOV RI, #2FHL00P1: INC RICJNE @R1Z #1AH, L00P2SJMP L00P3L00P2: CJNE RI, #51, L00P1MOV 51H, #00HSJMP ENDLOOP3: MOV 51H, #01HEND: RET3 .1 2 若SP=60H ,子程序标号MULT所在的地址为3A40H。
执行LCALL MULT指令后,堆栈指针SP和堆栈内容发生了什么变化?答:(SP)=62HZ (61H)=40Hz (62H)=3AH3 .1 3 假设外部存储器215AH单元的内容为3 D H ,执行下列指令后,累加器A中的内容为何值?MOV P2, #21HMOV RO, #5AHMOVX A, @R0答 :(A) = 3DH习题44 .1编程将数据存储器中以2A00H为首地址的100个连续单元清零CLR AMOV RO, #64HMOV DPTR, #2A00HLOOP: MOVX @DPTR, AINC DPTRDJNZ RO, LOOPEND4 .2 编程将片内50H〜70H单元中的内容传送到以5C00H为起始地址的存储区中MOV DPTR, #5C00HMOV RO, #50HLOOP: MOV A,@R0MOVX @DPTR,AINC ROINC DPTRCJNE RO, #70H, LOOPEND4 .3 片外RAM区从1000H单元开始存有100个单字节无符号数,找出最大值并存入1100H单元中,试编写程序MOV DPTR, #1000H ; 置片外RAM区首地址MOV R0,#00H ; 清 R0MOV R1,64H ; 置计数初值100LOOP: MOVX A, @DPTR ; 取片外RAM区的某个数送ACJNZ A,R0, NT1 ; 与R0中的数比较NT1: JC NT2 ; (A)<(R0)跳转到 NT2MOV RO,A ;若(A)(R0),则大数送 RONT2: INC DPTR ; 修改数据块指针DJNZ RI,LOOP ; 未完,循环RET4 .4 设有100个单字节有符号数, 连续存放在以2100H为首地址的存储区中, 试编程统计其中正数、 负数、零的个数。
MOV RO, #00H ; 置负数的计数初值MOV RI, #00H ; 置正数的计数初值MOV R2, #00H ; 置 0 的计数初值MOV R4, #64H ; 置循环计数初值MOV DPTR, #2100H ;置数据区首地址START: MOVX A, @DPTR ; 取某一数据送入 AJZ EQUAL ;为 转 EQUALJNB ACC.7, POSI ;为正数转 POSIINC R0 ;负数计数值加1INC DPTR ; 修改数据块指针DJNZ R4, START ; 未完,返回POSI: INC RI ;正数计数值加1INC DPTR ; 修改数据块指针DJNZ R4, STARTEQUAL: INC R2 ; 0 计 数 值 力 口 1INC DPTRDJNZ R4, STARTEND4 .5 从 2030H单元开始,存有100个有符号数,要求把它传送到从20BOH开始的存储区中,但负数不传送,试编写程序MOV RI, #64H ; 置计数初值MOV RO, #B0H ; 目标数据区首地址低8 位,高8 位为20HMOV DPTR, #2030H ; 源数据区首地址START: MOVX A, @DPTR ; 取源数据区某数据送入AJB ACC.7, D1 ; 负数,转 D1MOVX @R0, A ;正数,送入目标数据区INC DPTR ; 修改源数据块指针INCR0 ;修改目标数据块指针DJNZ RI, START ;未完,继续RET ; 返回DI: INC DPTR ;修改源数据块指针INC R0;修改目标数据块指针DJNZ RI, START ;未完,继续RET ; 返回4 .6 若从30H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数取补后送回。
MOV R0, #30H ; 数据区首地址MOV RI, #64H ; 计数初值START: MOVX A, @R0 ; 取某个数JNB ACC.7, POSI ; 正数, 转 POSICPLA;负数,取补ADD Az #01HMOVX @R0z A ; 送回原地址INC RO ; 修改数据块指针DJNZ RI, START ;未完, 继续RETPOSI: INC RO ; 修改数据块指针DJNZ RI, START ; 未完,继续RET4 .7 试编程把以2040H为首地址的连续10个单元的内容按升序排列,存到原来的存储区中SORT: MOV DPTR, #2040H;MOV R3Z #09H;CLR F0;DI: MOVX A, @DPTR ;MOV R2Z A ; 前一个数送R2INC DPTRMOVX Az @DPTR ;MOV R4, A ; 后一个数送R4MOV A, R2 ; 前一个数送ACLRCSUBB A, R4 ;前一个数减后一个数JC NEXT ;MOV Az R2 ; 相邻数互换MOVX @DPTR, AMOV RO, DPL;数据指针低8 位减1DEC ROMOV DPL, ROMOV A, R4 ;MOVX @DPTR, AINC DPTR;SETB FONEXT: DJNZ R3Z DI;JB FO,SORTRET4 .8 设在2000H〜2004H单元中. 存放有5 个压缩BCD码,编程将它们转换成ASCII码, 存放到以2005H为首地址的存储区中。
MOV DPTR,#2000H;MOV RO, #05H;MOV RI, #04H;DI: MOVX Az @DPTR;ANL A, #OFHCLR C;ADDA, #30H;MOV P2,#20HMOVX @R0,AINC DPTR;INC RODJNZ RI, DI;RET1 . 在以2000H为首地址的存储区中,存放着20个用ASCII码表示的0〜9 之间的数,试编程,将它们转换成BCD码,并以压缩BCD码的形式存放在3000H〜3009H单元中MOV DPTR, 2000H;MOV RO, #20H;MOV RI, #00H;ASCBIN: MOVX A, @DPTR;CLRCSUBB A, #30H;MOV P2Z 30H;MOVX @R1,A;INC RI;INC DPTR;DJNZ RO, ASCBIN;RET4.10 试编写多字节BCD码数加法、减法子程序4.11 若晶振为6M Hz,试编写延时100ms、Is 的子程序ORG 2000H周期数MOV RO, #0AH ;毫秒数一RO 1DL2: MOV RI, #MT ; 1ms 延时值一RI 1DL1: NOP 1NOP 1DJNZR1, DL1 ; 1ms 延时循环 2DJNZ RO, DL2 ; 10ms 延时循环 2END4.12试设计一个子程序, 其功能为将片内RAM 20H-21H中的压缩BCD码转换为二进制数, 并存于以30H开始的单元。
BCDB: MOV A, 20HMOV R2, A ;取千位、百位BCD码ACALL BCDB1 ;调用子程序MOV B, #0AHMUL AB ;乘以 10MOV R6, A :乘积低8 位送R6XCH A, B ;交换乘积高、低位MOV R5, A ;乘积高位送R5MOV A. 21H ;取十位、个位BCD码MOV R2, A ;送入 R2ACALL BCDB1 : 调用子程序ADD A, R6 ;加千位、百位乘积低8 位MOV31H. A ;低 8 位送入 31HMOV A, R5 ;乘积高8 位送AADDC A. #00H ;加进位位MOV 30H, A ;结果高8 位送入30HHERE: SJMP HERE子程序清单:BCDB1: MOV A, R2 :取压缩 BCD 码ANLA, #OFOH ;屏蔽低4位SWAP AMOV B, #0AHMULAB ;高位BCD码乘以10MOV R3, A ;乘积送 R3MOV A, R2 ;取压缩BCD码ANLA, #OFH ;屏蔽高4位ADDA, R3 :高位BCD码乘以10后加低位BCD码MOV R2, A ;送 R2RET习题55 .1 什么是中断系统? 中断系统的功能是什么?答:当CPU正在处理某件事情( 例如,正在执行主程序) 的时候,外部或内部发生的某一事件( 如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等) 请求CPU迅速去处理,于是,CPU暂时终止当前的工作,转去处理所发生的事件。
中断服务程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断实现这种功能的部件称为中断系统中断系统的功能:( 1)实现中断及中断返回,(2)实现优先级排队,( 3 )实现优先级控制5 .2 什么是中断嵌套?答:当CPU响应某•中断源的请求而进行中断处理时,若有优先级更高的中断源发出中断请求,则CPU中断正在执行的中断服务程序,保留程序的断点和现场,响应更高一级的中断,即是中断嵌套5 . 3 什么是中断源? MC S - 5 1 有哪些中断源? 各有什么特点?答:向C P U 发出中断请求的来源称为中断源MC 5 - 5 1 单片机的中断系统有5个中断请求源:⑴一外部中断0 请求,由引脚输入,中断请求标志为I E O ⑵一外部中断I 请求,由引脚输入,中断请求标志为正I ⑶定时器/ 计数器T O 溢出中断请求,中断请求标志为T F O «⑷定时器/ 计数器T1溢出中断请求,中断请求标志为T F 1 ⑸串行口中断请求,中断请求标志为T I 或 R I ,外部中断0 :它的触发方式选择位为I T 0 I T 0 = 0 , 为电平触发方式,引脚上低电平有效I T 0 = l , 为脉冲触发方式,引脚上的电平从高到低的负跳变有效。
I T 0 位可由软件置、' 1 " 或清、' 0 " 外部中断0 请求标志位I E 0 当 I T 0 = 0 , 即电平触发方式时,每个机器周期的S 5 P 2采样引脚,若脚为低电平,则置、' 1 ” 正0,否 贝 !1 清" 0 "I E 0 o当I T 0 = l , 即跳沿触发方式时,在第一个机器周期采样为低电平,则置" 1 " 正0 正0 = 1 , 表示外部中断0正在向C P U 申请中断当C P U 响应中断,转向中断服务程序时,由硬件清、' 0 " 正0 外部中断1 中断原是与此相同定时器/ 计数器0 :被启动计数后,从初值开始加1 计数,当定时器/ 计数器计数满而产生溢出时,由硬件自动使T F 0 置 1 , 并向C P U 申请中断该标志一直保持到C P U 响应中断后,才由硬件自动清0 也可用软件杳询该标志,并由软件清0 定时器/计数器1中断原理与此相同串行中断请求由T I 、RI 的逻辑''或" 得到即不论是发送标志还是接收标志,都将发生串行中断请求5 . 4 M CS -5 1 单片机响应外部中断的典型时间是多少?在哪些情况下,CP U 将推迟对中断请求的响应?答:3 ~ 8 个机器周期。
(1) CPU正在处理相同的或更高优先级的中断因为当 个中断被响应时,要把对应的中断优先级状态触发器置'T '( 该触发器指出CPU所处理的中断优先级别),从而封锁了低级中断和同级中断2 )所查询的机器周期不是所执行指令的最后一个机器周期 作这个限制的目的是使当前指令执行完毕后,才能进行中断响应,以确保当前指令完整的执行3 )正在执行的指令是RET1或是访问正或IP 的指令因为按MCS-51中断系统特性的规定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求如果存在上述三种情况之一,CPU将推迟对中断请求的响应5 .5 中断查询确认后,在下列各种运行情况中,能立即进行响应的是:(1)当前正在进行高优先级中断处理(2)当前正在执行RETI指令(3)当前指令是DIV指令,且正处于取指令的机器周期(4)当前指令是MOV A, R3答:(4 ) 能立即进行响应5.6 试编写出外部中断1 为跳沿触发方式的中断初始化程序答:SETB EASETB EX1SETB IT15.7 在 MCS-51中,需要外加电路实现中断撤除的是:(1)定时中断(2)脉冲方式的外部中断(3)串行中断(4)电平方式的外部中断答:(4 ) 需要外加电路5.8 MCS-51有哪几种扩展外部中断源的方法?各有什么特点?(1)定时器/计数器作为外部中断源的使用方法当它们选择为计数器工作模式,TO或T 1引脚上发生负跳变时,TO或T 1计数器加1 ,利用这个特性,可以把TO、T 1引脚作为外部中断请求输入引脚, 而定时器/计数器的溢出中断TF1或TFO作为外部中断请求机 ; ,忐。
2)中断和查询结合的方法若系统中有多个外部中断请求源,可以按它们的轻重缓急进行排队,把其中最高级别的中断源IR0直接接到MCS-51的一个外部中断输入端,其余的中断源IR1〜IR4用''线或〃的办法连到另一个外部中断输入端,同时还连到P1 口,中断源的中断请求由外设的硬件电路产生,这种方法原则上可处理任意多个外部中断查询法扩展外部中断源比较简单,但是扩展的外部中断源个数较多时,查询时间较长 3)用优先权编码器扩展外部中断源采用74LS148优先权编码器在硬件上对外部中断源进行排队, 可以避免响应优先级最高的中断和响应优先级最低的中断所需的时间可能相差很大这样的问题该方法的最大特点是结构简单,价格低廉,但该电路无法实现中断服务子程序的嵌套5 .9 中断服务子程序和普通子程序有什么区别?答:1 ,中断服务子程序的入口地址由中断向量表确定,而普通子程序的入口地址在中断向量表以外的程序存储空间内任意设定2 ,中断服务子程序的返回指令是RETI,而普通子程序的返回指令是RET5.10 试编写一段对中断系统初始化的程序,允许INTO, INTI, T O ,串行口中断,且使TO中断为高优先级答:SETB EASETB EXOSETB EX1SETB ETOSETB ESSETB PTO5.11 在MCS・51单片机中,外部中断有哪两种触发方式?如何加以区别?答:电平触发方式和跳沿触发方式。
IT0=0时,为电平触发方式,引脚低电平有效r ro = i时,为跳沿触发方式,引脚负跳变有效IT1=O时,为电平触发方式,引脚低电平有效IT1=1时,为跳沿触发方式,引脚负跳变有效5 .1 2 单片机在什么条件下可响应INTO中断? 简要说明中断响应的过程答:1 ,中断允许寄存器正中的E A =1,且EX1=1,同时没有其它优先于外部中断的中断,若IT0=0,引脚上低电平有效;若ITO =1,引脚上的电平从高到低的负跳变有效2 ,当CPU正在处理某件事情( 例如,正在执行主程序) 的时候,外部发生的某一事件( 如某个引脚上电平的变化,一个脉冲沿的发生) 请求CPU迅速去处理,于是,CPU暂时终止当前的工作,转去处理所发生的事件中断服务程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断处理事件请求的过程,称为CPU的中断响应过程5.13 当正在执行某一中断源的中断服务程序时,如果有新的中断请求出现,问在什么情况下可响应新的中断请求? 在什么情况下不能响应新的中断请求?答:1, 一个中断源的中断请求被响应,需满足以下条件:⑴该中断源发出中断请求⑵CPU开中断,即中断总允许位EA=1。
3)申请中断的中断源的中断允许位= 1 ,即该中断没有被屏蔽4)无同级或更高级中断正在被服务2 ,中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,当遇到下列三种情况之一时,中断响应被封锁:( 1) CPU正在处理相同的或更高优先级的中断因为当一个中断被响应时,要把对应的中断优先级状态触发器置''1"( 该触发器指出CPU所处理的中断优先级别) ,从而封锁了低级中断和同级中断(2 )所查询的机器周期不是所执行指令的最后一个机器周期 作这个限制的目的是使当前指令执行完毕后,才能进行中断响应,以确保当前指令完整的执行3 )正在执行的指令是RETI或是访问IE或IP的指令因为按MCS-51中断系统特性的规定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求如果存在上述三种情况之一,CPU将不能进行中断响应习 题66.1 MCS-51单片机的TO、T1用作定时器时,其定时时间与哪些因素有关?答:定时器/ 计数器用作定时方式时,其定时时间与时钟周期、工作方式、定时初值等因素有关6 .2 当MCS-51单片机的TO用于工作方式3时,由于TRI位已被TO占用,该如何控制定时器T 1的开启和关闭?答:这时T 1只能用作串行口波特率发生器或不需要中断的场合。
因为TR1已被TO借用,所以T 1的控制只有和M1、MO两个条件, 选择定时或计数模式,M l、M0选择工作方式 这时只要把方式控制字送入TMOD寄存器就可启动T1运行,如果让它停止工作,只需送入•个将T 1设置为工作方式3的方式控制字就可以了6 .3 设MCS-51单片机的晶振频率为12MHz,试用单片机的内部定时方式产生频率为100kHz的方波信号,由P1.1脚输出答:依据题意,只要使P1.0引脚每隔5us取反一次即可得到10us的方波,因此定是时间T=5us,可选择定时器/ 计数器T 0 ,以中断方式工作1. 设定TMODTMOD的低4位控制T 0 ,设定TO定时模式,即=0;工作在方式0 ,即M1MO=OOH;软件启动定时器,即GAME=0TMOD的高4位与TO无关,一般取0 ,所以TMOD控制字为00H1 .计算定时初值晶振频率为12MHz,机器周期=lus定时初值=8192-5=8187=lFFBH=0001111111111011B因TLO的高3位未用,对计算出的初值要进行修正,即低5位前插入3个0构成低8位初值,从低6位向前取8位构成高8位初值,即11111111OOO11O11B=FF1BHORG 0000HAJMP MAIN :转主程序ORG 000BH ; TO中断矢量地址AJMP ISER :转中断服务程序ORG 100HMAIN: MOV SP, #60H ;设堆栈指针MOV TMOD, #00H ;写控制字MOV TLO, #1BH ;置 TO 初值MOV THO, #OFFHSETB ETO ;允许TO中断SETB EA ; CPU 开中断SETB TRO :启动 TOSJMP$ ;等待中断ISER: MOV TLO, #1BH ; TO中断服务子程序,重置T O初值MOV THO, #OFFHCPL P1.0 ; P l.l 取反RETIEND6 .4设MCS-51单片机的晶振频率为6 M H z,使用定时器T 1的定时方式1 ,在P l .。
输出周期为20ms、占空比为60%的矩形脉冲,以查询方式编写程序答:依据题意,使P1.0引脚输出12ms高电平,8m s低电平,即可得到周期为20ms、占空比为60%的矩形脉冲,因此定时时间T l = 12ms,T2=8ms,定时器/ 计数器T 1 ,以杳寻方式工作1. 设定TMODTMOD的高4位控制T 1 ,设定T 1定时模式,即=0;工作在方式1 ,即MlM0=01H;软件启动定时器,即GAME=00 TMOD的低4位与TO无关,一般取0 ,所以TMOD控制字为10H1.计算定时初值晶振频率为6M H z,机器周期=2us定时初值=65536-6000 =59536=E890H=65536-4000=61536=F060HORG 100HMOV TMOD, #10H ;LOOPO: MOV TLO, #90H ;MOV THO, #0E8HSETB TRI ;L00P1: JNBTF1, L00P1 ;CLR TF1;SETB P1.0MOV TLO, #60H ;MOV THO, #0F0HSETB TRIL00P2: JNBTF1, L00P2 ;CLR TF1;CLR P1.0;SJMP LOOPO;RET6 .5设MCS-51单片机的晶振频率为6 M H z,以计数器T 1进行外部事件计数,每计数100个外部事件输入脉冲后,计数器T 1转为定时工作方式,定时5ms后,又转为计数方式。
如此周而复始地工作,试编程实现答:依据题意,设T 1工作在计数模式时,工作在方式0,设T 1工作在定时模式时,工作在方式11.设定TMODTMOD的高4位控制T 1 ,设定T 1计数模式,即=1;工作在方式1 ,即M1MO=1OH;软件启动定时器,即GAME=0TMOD的低4位与TO无关,一般取0 ,所以TMOD控制字为40H设定T 1定时模式,即=0;工作在方式1 ,即MlM0=01H;软件启动定时器,即GAME=0TMOD E向低4位与TO无关,一般取0 ,所以TMOD控制字为10H1.计算计数初值计数初值=8192-100 =8O92=1F9CH=OOO111111OO111OOB因TLO的高3位未用,对计算出的初值要进行修正,即低5位前插入3个0构成低8位初值,从低6位向前取8位构成高8位初值,则计数初值为FC1CH1.计算定时初值晶振频率为6M H z,机器周期=2us=65536-2500=63036=F63CHORG 100H;START: MOV TMOD, #40H ;MOV TLO, #1CH;MOV THO, #OFCH ;SETB TR I:L00P1: JNBTF1, L00P1;CLR TF1;MOV TMOD, #10H;MOV TLO, #3CH;MOVTHO, #0F6H;SETB TRI;L00P2: JNBTF1, L00P2;CLR TF1;SJMP START;6 .6 设MCS-51单片机的晶振频率为12 M H z,要求用定时器/ 计数器TO产生1 m s的定时,试确定计数初值以及TMOD寄存器的内容。
答:设TO工作定时模式,晶振频率为12MHz,机器周期=lus方式 1:初值:=65536-1000=64536=FC18HTMOD:OOH6 .7 设MCS-51单片机的晶振频率为6M H z,要求用定时器/ 计数器产生100 ms的定时,试确定计数初值以及TMOD寄存器的内容答:此题晶振频率改为6M H z,否则定时时间超出最大定时时间1.设定TMODTMOD的低4位控制T 0 ,设定TO定时模式,即=0;若工作在方式1 ,即M1MO=O1H;软件启动定时器,即GAME=OTMOD的高4位与TO无关,一般取0 ,所以TMOD控制字为01H1.计算定时初值晶振频率为6M H z,机器周期=2us初值:=65536-50000=15536=3CB0H6 .8设晶振频率为12 MHz编程实现以下功能:利用定时/ 计数器TO通过P1.7引脚输出一个50 H z的方波答:依据题意,只要使P1.7引脚每隔10ms取反一次即可得到20ms的方波,因此定是时间T=10ms, T0工作在定时模式的方式1,以中断方式工作1 ,设定TMODTMOD的低4位控制T O ,设定TO定时模式,即=0;若工作在方式1 ,即MlM0=01H;软件启动定时器,即GAME=0. TMOD的高4位与TO无关,一般取0 ,所以TMOD控制字为01H。
2 ,计算定时初值晶振频率为12M Hz,机器周期=lus初值:=65536-10000=55536=D8F0HORG 0000HAJMP MAIN :转主程序ORG OOOBH ; TO中断矢量地址AJMP ISER :转中断服务程序ORG 100HMAIN: MOV SP, #60H ;设堆栈指针MOV TMOD, #01H ;写控制字MOV TLO, #OFOH ;置 TO 初值MOV THO, #0D8HSETB ETO ;允许TO中断SETB EA ; CPU 开中断SETB TRO ;启动 TOSJMP $ ;等待中断ISER: MOV TLO, #OFOH ; TO中断服务子程序,重置T O初值MOV THO, #0D8H ;CPL Pl.7 ; Pl.7 WRETIEND6 .9每隔I s读一次Pl. 0 ,如果所读的状态为''1 ',则将片内RAM 10H单元内容加1;如果所读的状态为、 '0 ” ,则将片内RAMI旧单元内容加1设单片机的晶振频率为12MHz,试编制程序答:依据题意,每隔1s读一次P1.0引脚,再根据读出的状态分别计数因此定是时间T = ls ,设TO工作在定时模式的方式1 ,以中断方式工作。
1 ,设定TMODTMOD的低4位控制T O ,设定TO定时模式,即=0;若工作在方式1 ,即MlM0=01H;软件启动定时器,即GAME=0TMOD的高4位与TO无关,一 •般取0 ,所以TMOD控制字为01H2 ,计算定时初值晶振频率为12MHz,机器周期=lus因定时时间1s已超出定时器的定时能力,可将定时时间设为50m s,在中断服务程序中对定时器溢出进行计数20次时,读一次P1.0引脚,根据读出的状态分别计数65536-50000=15536=3CB0HORG 100HMOV 11H, #00H ;清计数器MOV 10Hz #00H ;清计数器MOV TMOD, #01H ;写控制字,T1工作方式1MOV TLO, #0B0H ;置 TO 初值MOVTHO, #3CHSTART: MOV A, #20 ;置溢出次数LOOP: SETB TRI ;启动 T1L00P1: JNBTF1, L00P1 ;MOV TLO, #0B0H ;重置 T1 初值MOV TH0, #3CH ;CLR TF1 ;DJNZ A, LOOP ;JNB P1.0, L00P2 ;INC 11H ;SJMP STRAT ;L00P2: INC 10H ;SJMP STRAT ;6.10简要说明若要扩展定时器/ 计数器的最大定时时间,可采用哪些方法?答:1 , 降低晶体振荡器主频,2 , 采用多次累计计数等方法,见例6-4.习 题 77.1 什么是串行异步通信,它有哪些特点?答:串行异步通信的数据通常是以字符( 或字节)为单位组成字符帧按顺序传送的。
字符帧通过传输线由发送端一帧一帧地发送到接收端,接收端一帧一帧地接收特点:优点是不需要传送同步脉冲,字符帧长度也不受限制,故所需设备简单缺点是因字符帧中包含有起始位和停止位而降低了有效数据的传输速率7 .2 串行异步通信的字符格式由哪几个部分组成? 某异步通信接口,其帧格式由1 个起始位( ) ,7 个数据位,1个偶校验和1 个停止位组成 用图示方法画出发送字符、' 5"( ASCn码为0110101B) 时的帧结构示意图答:1 , 串行异步通信的字符格式由一个起始位表示字符的开始,一个停止位表示字符的结束数据位在起始位之后,停止位之前,这样构成一帧数据奇偶校验位位与数据位之后,停止位之前,用于表示串行通信中采用奇校验位还是偶校验位,由用户根据需要决定2 , 发送字符、 ' 5"( ASCH码为0110101B) 时的帧结构示意图:7.3 MCS-51单片机的串行口由哪些功能模块组成? 各有什么作用?答:MCS-51单片机的串行口主要由两个数据缓冲寄存器SBUF, •个输入移位寄存器以及两个控制寄存器SCON和 PCON组成其中, 缓冲寄存器SBUF是两个在物理上独立的专用寄存器, •个作发送缓冲器,另一个作接收缓冲器。
两个缓冲器共用 个地址99H ,可通过指令对SBUF的读写来区别,CPU写SBUF就是修改发送缓冲器的内容;读 SBUF就是读接收缓冲器的内容控制寄存器SCON和 PCON用来设定串行口的工作方式并对接收和发送进行控制串行口对外有两条独立的收发信号线RXD( P3.0) 、TXD( P3.1) , 因此可以同时发送、接收数据,实现全双工通信7.4 MCS-51单片机的串行口有哪几种工作方式? 有几种帧格式? 各工作方式的波特率如何确定?答:有 4 种工作方式工作方式0 为同步移位寄存器方式,该方式以8 位数据为一帧,没有起始位和停止位,先发送或接收最低位.工作方式1 为 8 位异步通信方式,适合于点对点的异步通信这种方式规定发送或接收一帧信息为10位,即 1 个起始位(0), 8 个数据位,1 个停止位(1), 先发送或接收最低位数据传输率可以改变工作方式2 和 3 为 9 位异步通信方式每帧数据均为11位,1位起始位0, 8 位数据位( 先低位),1 位可程控的第9 位数据和1 位停止位1 . 方式的波特率串行口工作在方式0 时,波特率由振荡器的频率fosc所确定:波特率=2 . 方式2 的波特率串行口工作在方式2 时,波特率由振荡器的频率fosc和 SMOD所确定:波特率= fosc若 SMOD=0,则所选波特率为fosc/64;若 SMOD=1,则波特率为fosc/32。
3 . 方式1 或 3 的波特率串行口工作在方式1或方式3 时,波特率由定时器T1的溢出率和SMOD所确定:波特率= 定时器T1的溢出率7.5MCS-51单片机的串行口控制寄存器SCON的SM2, TB8, RB8有何作用?答:1, SM2主要用于方式2 和方式3 , 因为多机通信是在方式2 和方式3 下进行的 在方式2 和方式3下,若 SM2=1接收到第9 位数据(RB8)为0 时,则接收中断不被激活,将接收到的前8 位数据丢弃只有在接收到第9 位数据(RB8)为 1 时才将接收到的前8 位数据送入SBUF,并置位RI产生中断请求当SM2=0时,则不论接收到第9 位数据是0 还是1 , 都将接收到的前8 位数据送入SBUF中,并产生中断请求在方式1 中,若 SM2=1,只有接收到有效的停止位RI才被激活中,SM2必须是02, TB8发送数据的第9 位在方式2、 方式3 中, TB8作为第9 位数据发送出去,根据需要用软件置位或清0. TB8可在双机通信中作为奇偶校验位,也可在多机通信中作为发送地址帧或数据帧的标志位一般约定,发送地址帧时设置TB8=1;发送数据帧时设置TB8=0.在方式0 和方式1 中,该位未用。
3, RB8接收数据的第9 位在方式2、 方式3 中,RB8是接收的第9 位数据, 在多机通信中为地址、数据标志位;方式中RB8未用;在方式1 中,若SM2=0,则接收的停止位自动存入RB8中1 . 设fosc=6MHz,试编写一段对串行口初始化程序,使之工作在方式1 , 波特率为1200 b / s;并用查询串行口状态的方式,读出接收缓冲器的数据并回送到发送缓冲器答:串行方式1波特率取决于T1溢出率,若设SMOD=1,T1工作在方式2 , 则T1的计数初值为:X=256-(2/32)6000000/121200=230=0E6HORG 0000H□MP MAINORG 100HMAIN: MOV SPZ #60HMOV TMOD, #20H : 设 T1 工作方式 2MOVTL1, #0E6H :置T1计数初值MOV TH 1, #0E6HCLR ET1 ;禁止T 1中断SETB TRI ;启动 T1MOV SCON,#40H ;置串 口方式 1MOV PCON,#OOH ;置 SMOD=0CLR ES : 禁止串行中断MOV A, SBUF :读接收缓冲器MOV SBUF, A :回送到发送缓冲器LP: JNB TI, LP ;等待一帧数据发送完CLRTI ;清发送标志位SJMP $7 .7 设晶振频率为11. 0592 M H z,串行口工作在方式1 ,波特率为4800 b / S。
写出用T 1作为波特率发生器的方式字并计算T 1的计数初值答:串行方式1波特率取决于T 1溢出率,设SMOD=0,即PCON=OOHT 1工作在定时方式2 ,则T 1的计数初值为:X=256-(l/32)11059200/124800=250=0FAH用T1作为波特率发生器的方式字TMOD=20H,7 .8 为什么定时器T1用作串行口波特率发生器时,常选用工作方式2 ,若已知系统时钟频率和通信的波特率,则如何计算其初值?答:因工作方式2可以自动装入初值,避免由程序装入初值带来波特率的误差波特率=定时器T 1的溢出率7 .9 简述MCS-51单片机多机通信的原理答:多机通讯工作过程如下:(1)从机串行口编程为方式2或方式3接收,且置、'1"SM2和REN位,使从机只处于多机通讯且接收地址帧的状态2)在主机先将从机地址( 即准备接收数据的从机地址) 发送给各从机,然后再传送数据或命令,主机发出的地址信息的第9位为1 ,数据( 包括命令) 信息的第9位为0当主机向各从机发送地址时,各从机的串行口接收到的第9位信息RB8为1 ,且由于SM 2=1,则置'T '中断标志位R I,各从机响应中断执行中断服务程序。
在中断服务子程序中,判断主机送来的地址是否与本机地址相符合,若为本机地址,则该从机清、'0"SM2位,准备接收主机的数据或命令;若于本机地址不相符,则保持SM2=1状态3)接着主机发送数据帧,此时各从机串行口接收到的R B8=0,只有与前面地址相符合的从机( 即已清、 '0"SM2位的从机) 才能激活中断标志位R I,从而产生中断,进入中断服务程序,在中断服务程序中接收主机的数据( 或命令) ;其它的从机因SM2保持为1 ,而RB8=0不激活中断标志R I,不能进入中断,将所接收的数据丢弃不作处理,从而保证主机和从机间通讯的正确性图7-22所示的多机系统是主从式,由主机控制多机之间的通讯,从机和从机的通讯只能经主机才能实现7.10 设计一个单片机的双机通信系统,串行口工作在方式1 ,编写通信程序将甲机内部RAM 30H〜 3FH存储区的数据块通过串行口传送到乙机内部RAM 40H-4FH存储区中去答:假设甲、乙双方均采用6MHz晶振,波特率为2400若设SMOD=1,T1工作在方式2 .则T 1的计数初值为:X=256-(2/32)6000000/122400=122=7AH甲机发送程序:ORG 0000H□MP MAINORG 0100HMAIN: MOV SP, #60HMOV TMOD, #20H ;设 T1 工作方式 2MOV TL1, #7AH ;置 T1计数初值MOV TH1, #7AHCLRET1 ;禁止T 1中断SETB TRI : 启动 T1MOV SCON,#40H ;置串 口方式 1MOV PCON,#OOH ; S SMOD=0CLR ES ;禁止串行中断MOV RO, #30H ;置发送数据区首地址MOV R2, #16 : 置发送数据长度TRSA: MOV A, @R0 ;读一个缓冲器数据MOV SBUF, A :发送JNB TI, $ ;等待一帧数据发送完CLRTI ;清发送标志位INC R0 ;指向下一个单元DJNZ R2, TRSA :未发送完,继续SJMP$乙机接收程序:ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP, #60HMOV TMOD, #20H ;设 T1 工作方式 2MOV TL1, #7AH ;置T1计数初值MOV TH1, #7AHCLR ET1 ;禁止T 1中断SETB TRI : 启动 T1MOV SCON,#40H ;置串 口方式 1MOV PCON,#OOH ;置 SMOD=0CLR ES ;禁止串行中断MOV RO, #40H ;置发送数据区首地址MOV R2, #16 ;置发送数据长度SETB REN ;启动接收RESV: MOV A, SBUF ;读接收数据MOV @R0 , A ,;存接收数据JNB RI, $ ;等待一帧数据接收完CLRTI ;清接收标志位INC R0 ;指向下一个单元DJNZ R2, RESV ;未完,继续SJMP $习 题88 .1 简述5 1系列单片机系统扩展时总线形成电路的基本原理,并说明各控制信号的作用。
・ ①ALE作为地址锁存的选通信号,以实现低8位地址的锁存②信号作为扩展程序存储器的读选通信号③信号作为内、外程序存储器的选择信号④和作为扩展数据存储器和I/O端口的读,写选通信号执行MOVX指令时,这两个信号分别自动有效8 .2 简述全地址译码、部分地址译码和线选法的特点及应用场合1)线性选择法直接以系统空闲的高位地址线作为芯片的片选信号当存储器对应的片选地址线输出有效电平时,该芯片被选通优点是简单明了,无须另外增加电路;缺点是寻址范围不唯一,地址空间没有被充分利用,可外扩芯片的个数较少线性选择法适用于小规模单片机应用系统中片选信号的产生2)全地址译码法利用译码器对系统地址总线中未被外扩芯片用到的高位地址线进行译码,以译码器的输出作为外围芯片的片选信号常用的译码器有:74LS138, 74LS139, 74LS154等优点是存储器的每个存储单元有惟一的一个系统空间地址,不存在地址重叠现象,对存储空间的使用是连续的,能有效地利用系统的存储空间缺点是所需的地址译码电路较多全地址译码法是单片机应用系统设计中经常采用的方法3 )部分地址译码法单片机未被外扩芯片用到的高位地址线中,只有一部分参与地址译码,其余部分是悬空的。
优点是可以减少所用地址译码器的数量缺点是存储器每个存储单元的地址不是惟一的,存在地址重叠现象因此,采用部分地址译码法时必须把程序和数据存放在基本地址范围内,以避免因地址重叠引起程序运行的错误8 .3 利用全地址译码为MCS-51扩展16 KB的外部数据存储器,存储器芯片选用SRAM 6264要求6264占用从AOOOH开始的连续地址空间,画出电路图8 .4 利用全译码为MCS-51扩展8 KB的外部程序存储器,存储器芯片选用EPROM 2 7 6 4 ,要求2764占用从2000H开始的连续地址空间,画出电路图8 .5 使用74LS244和74LS273,采用全地址译码方法为MCS-51扩展一个输入口和一个输出口,口地址分别为FF00H和FF01H ,画出电路图编写程序,从输入口输入一个字节的数据存入片内RAM 60H单元,同时把输入的数据送住输出口答:此题取消电路图,程序如下:• • ORG 0000H• • AJMP MAIN• • ORG 0040H• MAIN: • MOV DPTR, #FFOOH• • MOVX A, @DPTR• • MOV 60H, A;• • MOV DPTR,# FFO1H• • MOVX @DPTR,A• • SJMP MAIN• • END8 .6 采用全地址译码方法为MCS-51扩展8 位并行输入口和8 位并行输出口,口地址自定,画出电路图( 要求使用74LSI38译码器) 。
8.6 题略8.7 8255A共有几种工作方式? 各适用于哪些场合?• 8255A有三种工作方式,方式为基本输入/ 输出方式;方式1 为选通输入/ 输出方式;方式2 为双向传送方式是一种基本的输入/ 输出方式,这种工作方式不需要应答联络信号,A 口、B 口及C 口的高半口和低半口都可以由编程设置为输入或输出方式1 是一种选通输入/ 输出方式A 口和B 口可独立地设置为这种工作方式在这种方式下,A 口和B 口通常用于传送它们与外设之间的I/O数据,C 口用作A 口和B 口的应答联络信号线,以实现中断方式传送I/O数据方式2 是一种选通的双向传送方式只有A 口才能设定为这种工作方式,在方式2 下,A 口为8 位双向数据 I/O 口, C 口的PC7〜PC3用来作为A 口输入/ 输出的控制和同步信号 此时, B 口及C 口的低3 位(PCO-PC2)可以工作在方式0 或方式18 .8 若对8255A作如下设置:A 口以方式0 输出,B 口以方式0 输入,C 口高4 位为输入,低4 位为输出,控制寄存器地址为0003H试对8255A初始化,用位操作方式使8255A的PC4置位,使 PC3复位。
• 答:在 C 口按位置位/ 复位控制字中,设无关位取0 , 源程序如下:ORG 0100HMOV DPTR, #0003HMOV A, #8AHMOVX @DPTR, AMOV A, #09HMOVX @DPTR, AMOV A,#06HMOVX @DPTR, AEND习 题99.1 LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?答:静态显示方式就是当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止,直到显示另一个字符为止静态显示方式,显示器中的各位相互独立,而且各位的显示字符一经确定,相应锁存的输出将维持不变正因为如此,静态显示时的亮度较高这种显示方式编程容易,管理也较简单,但占用的I/O口资源较多动态显示方式是一位一位地分时轮流点亮各位显示器, 对每一位显示器来说, 每隔一段时间轮流点亮一次节省了 I/O 口线,电路,降低了成本显示器的亮度既与导通电流有关,也与点亮和熄灭时间的比例有关9 .2 为什么要消除按键抖动?消除按键抖动的原理是什么?答: 按键抖动如果处理不当会引起一次按键被误处理多次, 为了确保CPU对按键的一次闭合仅作一次处理,则必须消除键抖动。
消除键抖动可用硬件和软件两种方法消除键抖动的硬件方法常用RS触发器、施密特门电路等消除键抖动的软件方法适当检测出按键闭合后执行一个延时程序( 产生5ms~20ms的延时) ,待前沿抖动消失后再次检测键的状态,如果按键仍保持闭合状态则可确认为有键按下当检测到按键释放并执行延时程序,待后沿抖动消失后才转入该按键的处理程序9 .3 说明矩阵式键盘按键按下的识别原理答:如果把行线接到单片机的输入口,分别为、、、,列线接到单片机的输出口,分别为、、、,则在单片机的控制下,先使列线为低电平,其余三根列线都为高电平,读行线状态如果、、、都为高电平,则这一列上没有键闭合,接着使列线为低电平,其余列线为高电平,用同样方法检查这一列上有无键闭合依此类推最后使列线为低电平,其余的列线为高电平,检查这一列上是否有键闭合这种逐行逐列地检查键盘状态的过程称为对键盘的一次扫描CPU对键盘扫描可以采取程序控制的随机方式CPU空闲时扫描键盘;也可以采取定时控制方式,每隔一定时间,CPU对键盘扫描一次,CPU可随时响应键盘输入请求;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘输入中断,对键盘扫描,以识别哪•个键处于闭合状态,并对键盘输入信息作相应的处理, CPU对键盘上闭合键键号的确定,可以根据行线和列线的状态计算求得,也可以根据行线和列线状态查表求得。
9 .4 键盘有哪三种工作方式?说明它们的工作原理和特点答:空闲时扫描键盘的方式,只要没有按键发生,CPU就要不停地扫描键盘,直到按键时才会响应按键子程序,结束后又要不停地扫描键盘,这样影响其它功能的执行,工作效率较低定时扫描键盘的方式,一般是利用单片机内部的定时器,产生一个适当时间的定时中断,CPU响应中断时对键盘进行扫描读取按键,以处理键输入请求定时扫描键盘能及时响应键盘的输入命令或数据,便于操作员对正在执行的程序进行干预,但这种方式不管键盘上有无键闭合,CPU总是定时地扫描键盘,而按键往往不会是经常性的事件,这样CPU对键盘会时常进行空扫描外部中断方式,当键盘上有键闭合时才产生一个外部中断申请,CPU响应键盘中断申请,在中断服务程序中扫描判别键盘上闭合的键号, 并作相应的处理只有当有按键时才会响应键盘中断, 提高了 CPU的效率9.5 8279中的扫描计数器有两种工作方式,它们各应用在什么场合?答:扫描计数器有两种工作方式:一种是编码方式,在这种方式下,计数器作二进制计数4位计数状态从扫描线输出,经外部译码器译码后,为键盘和显示器提供扫描线( 十 六 选 :另•种是译码方式,在这种方式下,扫描计数器的最低位被译码后,从 输 出 ( 四选一)。
在译码方式下扫描线为输出低电平有效9.5 8279中的扫描计数器有两种工作方式,它们各应用在什么场合?答:扫描计数器有两种工作方式:一种是编码方式,在这种方式下,计数器作二进制计数4位计数状态从扫描线输出,经外部译码器译码后,为键盘和显示器提供扫描线( 十六选一):另一种是译码方式,在这种方式下,扫描计数器的最低位被译码后,从 输 出 ( 四选一)在译码方式下扫描线为输出低电平有效9 .6 简述用P1 口实现44键盘与MCS-51采用中断方式接口电路的工作原理答:在口接一个与门连接到上,当键盘上没有键闭合时为高电平,当键盘上有任一个键闭合时变为低电平,向CPU发出中断请求,若CPU已开放外部中断1且无更高级或同级中断响应,则CPU响应中断,扫描键盘并作相应的处理9.7 8279中的扫描计数器有两种工作方式,这两种工作方式各应用在什么场合?答:在编码方式下,4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后为键盘和显示器提供扫描线在译码方式下,扫描计数器的最低4位被译码后,从SL0~SL3输出,为键盘和显示器提供扫描线9 .8 简述PP40A微型打印机的接口主要信号线的功能, 与MCS-51单片机相连接时, 儿条控制线怎样连接?答:DATA1~DATA8: 8 根数据线。
STROBE:选通输入信号线,它的上升沿将上的信息打入P P 4 0 ,并启动PP40处理BUSY:状态输出线PP40正在处理主机的命令或数据( 描绘)时BUSY输出高电平,空闲时BUSY输出低电平BUSY可作为中断请求线或供CPU查询ACK:响应输出线,当PP40接收并处理完主机的命令或数据时,输出一个负脉冲,它也可以作为中断请求线。
