单片机中断原理的中断法和查询法在性能效率上的区别

单片机中的查询法和中断法在编写程序上的不同用法之处?求解答!_百度知道
单片机中的查询法和中断法在编写程序上的不同用法之处?求解答!
查询法是不是定时器中断?
我有更好的答案
;定时器T0中断入口地址
:中断后执行的指令。:
1. 查询法时是定时器计数溢出时;定时中断跳转至AAA
例,由单片机硬件将TFx置1,程序用查询法查询到TF=1时执行指令,按你程序中的指令自动执行。
例. 中断法时是定时器计数溢出时,程序的指针会自动跳转至相应的中断向量:JBC TF0,NEXT,
2假如你问的是51芯片定时器的两种方法
采纳率:33%
不用写using interupt 1这些个东西。。。,似乎和中断法不一样,都进行轮询查找,也要写处理函数,查询法。。当然,中断处理函数。,不一定用定时中断……中断法要进行构建中断向量表查询法就是在系统的无限循环中每次执行循环
为您推荐:
其他类似问题
单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。单片机查询工作方式和中断工作方式有什么不同,编程时有什么区别_百度知道
单片机查询工作方式和中断工作方式有什么不同,编程时有什么区别
我有更好的答案
查询方式就是不断的查询某个标志位,需要耗费大量的cpu 的时间,一般情况下除专门用于延时外不用这种方式(自己认为),中断方式比较适合处理具有随即特性的事件,事件发生后向cpu提出申请,然后cpu会保存当前的任务转去处理事件编程时查询方式要不断查询标志位,而中断要编写中断服务子程序来处理中断事件
你看看上面的题目啊,能不能编个中断方式的程序给我咯
比方说定时100ms,分别用查询法和中断法实现查询法#include&reg52.h&void
TMOD=0X01;//定时器0方式1
TH0=()%256;//定时器器初值
TL0=()/256;
ET0=0;//关定时器0中断
while(TF0==0);//若定时完成则中断标志位TF0为1,在此不断查询TF0
TR0=1;//完成定时关闭定时器
while(1); //等待
}中断法#include&reg52.h&void
TMOD=0X01;//定时器0方式1
TH0=()%256;//定时器器初值
TL0=()/256;
EA=1;//开总中断
ET0=1;//关定时器0中断
TR0=1;//打开定时器
while(1); //等待}void
isr_timer0 interrupt 1{
TR0=0;//关闭定时器}另一个实例:P3.2口接有一个按键,未按下为高电平,按下则为低电平,当按下键时点亮一个led灯查询法#include&reg52.h&sbit led=P1^1;//led是共阴极接法sbit key=P3^2//按键接到p3.0口void main(){
led=0;//熄灭所有灯 while(key==1);//没有键按下则等待(不断查询p3.0的状态) led=1;//点亮灯 while(1);}中断法#include&reg52.h&sbit led=P1^1;//led是共阴极接法void main(){
led=0;//熄灭所有灯
while(1);}void
isr_led interrupt 0{
led0=1;//点亮灯}
采纳率:29%
通讯中断、ADC中断等等,中断方式是当中断条件满足时立即中止当前正在运行的程序,因主程序执行周期的影响,对于要求低的应用可以勉强使用,对实效性要求高的情况必须使用中断方式,进入中断服务程序,执行完毕后返回断点继续执行,查询方式是一直在循环主程序中通过查询语句判断条件是否满足,查询实效性很低、计时器中断区别太大了,单片机中断较少,一般有复位中断、外部中断,比如通过外部中断测速,查询方式对较高速度的响应会产生十分大的误差,甚至测量数值混乱
要产生一个方波,分别用查询和中断方式编程,程序有什么区别,能不能举例说明
查询工作方式可能会用到中断相关寄存器,但不会使用中断函数;;;中断工作方式会用到中断函数
这样也说部清楚,给你个实例sbit
P1_0=P1^0;void main(){ P1=0XFF; TMOD=0X01; TH0=0X15; TL0=0XA0; TR0=1; for(;;) {
P1_0=!P1_0;
} }}这是查询法没有使用中断函数
话说你这个程序对我有点难度了,还没学,1、单片机的定时器
/计数器以查询方式工作,在P1.0口线上产生周期
为200μS的连续方波,在P 1.0口线上接示波器观
2、 单片机的定时器
/计数器以中断方式工作,在P1.1口线上产生周期
为240μS的连续方波,在P 1.1口线上接示波器观
察波形。题目是这样的,所以。。。应该怎样?
在给你解决
你解决了这个问题,我再加20分
为您推荐:
其他类似问题
您可能关注的内容
单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。中断法和查询法的比较_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
中断法和查询法的比较
&&单片机串口通信时,中断法和查询法有什么区别呢?
弄懂这点对新手来说是很有必要的。。
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢当前位置: >>
习题 1 1.1 什么是单片微型计算机? 答: 单片微型计算机是将计算机的基本部件微型化并集成到一块芯片上的微型计算机, 是计 算机微型化的典型代表之一,通常片内都含有 CPU、ROM、RAM、并行 I/O、串行 I/O、定 时器/计数器、中断控制、系统时钟及系统总线等。 1.2 单片机的发展经历了哪几个阶段?在哪一阶段确立了单片机在嵌入式应用中的地位。 答:单片机初级阶段( 年),芯片化探索阶段( 年),8 位单片机 成熟阶段( 年),从 SCM 向 MCU 过渡阶段( 年),MCU 百花齐 放阶段(1990 年―至今)。 其中,芯片化探索阶段( 年)确立了单片机在嵌入式应用中的地位。 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 个 寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应 控制逻辑)。提高了指令执行速度(1MIPS/MHz),克服了瓶颈现象;同时又减少了对外设管 理的开销,相对简化了硬件结构,降低了成本。 3) AVR 单片机内嵌高质量的 Flash 程序存储器,擦写方便,支持 ISP 和 IAP,便于产品 的调试、开发、生产、更新。 4) AVR 单片机的 I/O 线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初 始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使得 I/O 口资源灵活、功能强 大、可充分利用。 5) AVR 单片机片内具备多种独立的时钟分频器,分别供 URAT、I2C、SPI 使用。 6) 增强性的高速同/异步串口, 具有硬件产生校验码、 硬件检测和校验帧错、 两级接收缓冲、 波特率自动调整定位 (接收时) 屏蔽数据帧等功能, 、 提高了通信的可靠性, 方便程序编写, 更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过 MCS-51/96 单 片机的串口,加之 AVR 单片机高速,中断服务时间短,故可实现高波特率通讯。 7) 面向字节的高速硬件串行接口 TWI、SPI。TWI 与 I2C 接口兼容,具备 ACK 信号硬件发 送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部 4 种组合的多机通信。 SPI 支持主/从机等 4 种组合的多机通信。 8) AVR 单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路 BOD,多个复位 源(自动上电复位、外部复位、看门狗复位、BOD 复位),可设置的启动后延时运行程序,增 强了嵌入式系统的可靠性。 9) AVR 单片机具有多种省电休眠模式,且可宽电压运行(5~2.7V),抗干扰能力强,可降 低一般 8 位机中的软件抗干扰设计工作量和硬件的使用量。 10) AVR 单片机技术体现了单片机集多种器件(包括 FLASH 程序存储器、 看门狗、 EEPROM、 同/异步串行口、 TWI、SPI、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 中, 因而具有很高的运算速度, 有的甚至采用多级流水线结构。 单片机的扩展方式从并行总线到发展出各种串行总线, 并被工业界接受, 形成一些工业标准。 2 如 I C、SPI 串行总线等。它们采用 3 条数据总线代替现行的 8 条数据总线,从而减少了单 片机引线,降低了成本。单片机系统结构更加简化及规范化。 (3)单片机的小容量低廉化 小容量低廉的 4 位、8 位机也是单片机发展方向之一。其用途是把以往用数字逻辑电路组成 的控制电路单片化。 专用型的单片机将得到大力发展。 使用专用单片机可最大限度地简化系 统结构,提高可靠性,使资源利用率最高。在大批量使用时有可观的经济效益。 (4)单片机的外围电路内装化 随着集成度的不断提高,可以把众多的外围功能器件集成到单片机内。除了 CPU、ROM、 RAM 外,还可把 A/D、D/A 转换器、DMA 控制器、声音发生器、监视定时器、液晶驱动电 路、锁相电路等一并集成在芯片内。为了减少外部的驱动芯片,进一步增强单片机的并行驱 动能力。有的单片机可直接输出大电流和高电压,以便直接驱动显示器。为进一步加快 I/O 口的传输速度,有的单片机还设置了高速 I/O 口,可用最快的速度驱动外部设备,也可以用 最快的速度响应外部事件。 甚至单片机厂商还可以根据用户的要求量身定做, 把所需要的外 围电路全部集成在单片机内,制造出具有自己特色的单片机。 (5)单片机的全面 CMOS 化 单片机的全面 CMOS 化, 将给单片机技术发展带来广阔的天地。 CMOS 芯片除了低功耗特性 之外,还具有功耗的可控性,使单片机可以工作在功耗精细管理状态。低功耗的技术措施可 提高可靠性,降低工作电压,可使抗噪声和抗干扰等各方面性能全面提高。单片机的全盘 CMOS 化的效应不仅是功耗低,而且带来了产品的高可靠性、高抗干扰能力以及产品的便携 化。 (6)单片机的应用系统化 单片机是嵌入式系统的独立发展之路,单片机向 MCU 发展的重要因素,就是寻求应用系统 在芯片上的最大化解决。因此,专用单片机的发展自然形成了 SOC(System on Chip)化趋 势。随着微电子技术、IC 设计、EDA 工具的发展,基于 SOC 的单片机应用系统设计会有较 大的发展。因此,随着集成电路技术及工艺的快速发展,对单片机的理解可以从单片微型计 算机、单片微控制器延伸到单片应用系统。 1.5 单片机具有哪些突出优点?举例说明单片机的应用领域。 答:1.单片机寿命长 所谓寿命长,一方面指用单片机开发的产品可以稳定可靠地工作十年、二十年,另一方面是 指与微处理器相比生存周期长。MPU 更新换代的速度越来越快,以 386、486、586 为代表 的 MPU,几年内就被淘汰出局。而传统的单片机如
等年龄已有二十多岁, 产量仍是上升的。一些成功上市的相对年轻的 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.ISP 与 IAP ISP(In-System Programming) 技术的优势是不需要编程器就可以进行单片机的实验和开发, 单片机芯片可以直接焊接到电路板上, 调试结束即成成品, 免去了调试时由于频繁地插入取 出芯片对芯片和电路板带来的不便。IAP(In-Application Programming)技术是从结构上将 Flash 存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重 新编程,之后将程序从一个存储体转向另一个。ISP 的实现一般需要很少的外部电路辅助实 现,而 IAP 的实现更加灵活,通常可利用单片机的串行口接到计算机的 RS232 口,通过专 门设计的固件程序来编程内部存储器,可以通过现有的 INTERNET 或其它通讯方式很方便 地实现远程升级和维护。 单片机的应用领域: 1)智能化家用电器:各种家用电器普遍采用单片机智能化控制代替传统的电子线路控制, 升级换代,提高档次。如洗衣机、空调、电视机、录像机、微波炉、电冰箱、电饭煲以及各 种视听设备等。 2) 办公自动化设备: 现代办公室使用的大量通信和办公设备多数嵌入了单片机。 如打印机、 复印机、传真机、绘图机、考勤机、电话以及通用计算机中的键盘译码、磁盘驱动等。 3)商业营销设备:在商业营销系统中已广泛使用的电子称、收款机、条形码阅读器、IC 卡 刷卡机、出租车计价器以及仓储安全监测系统、商场保安系统、空气调节系统、冷冻保险系 统等都采用了单片机控制。 4) 工业自动化控制: 工业自动化控制是最早采用单片机控制的领域之一。 如各种测控系统、 过程控制、 机电一体化、 PLC 等。 在化工、 建筑、 冶金等各种工业领域都要用到单片机控制。 5)智能仪器仪表:采用单片机的智能化仪表大大提升了仪表的档次,强化了功能。如数据 处理和存储、故障诊断、联网集控等。 6)智能化通信产品:最突出的是手机,当然手机内的芯片属专用型单片机。 7)汽车电子产品:现代汽车的集中显示系统、动力监测控制系统、自动驾驶系统、通信系 统和运行监视器(黑匣子)等都离不开单片机。 8)航空航天系统和国防军事、尖端武器等领域:单片机的应用更是不言而喻。 习题 2 2.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 为 07H, 若不对 SP 设置初值,则堆栈在 08H 开始的区域,为了不占用工作寄存器 R0~R7 的地址,一 般在编程时应设置 SP 的初值(最好在 30H~7FH 区域)。2.3 程序状态字寄存器 PSW 的作用是什么?其中状态标志有哪几位?它们的含义是什么? 答: PSW 是保存数据操作的结果标志, 其中状态标志有 CY PSW.7)进位标志, (PSW.6) ( : AC : 辅助进位标志,又称半进位标志,F0、F1(PSW.5、PSW.1):用户标志;OV(PSW.2): 溢出标志;P(PSW.0):奇偶标志。 2.4 什么是堆栈? 堆栈有何作用? 为什么要对堆栈指针 SP 重新赋值? SP 的初值应如何设 定? 答:堆栈是一种数据结构,所谓堆栈就是只允许在其一端进行数据写入和数据读出的线 性表。 其主要作用有两个:保护断点和保护现场。 堆栈区的设置原则上可以在内部 RAM 的任意区域,但由于 MCS-51 单片机内部 RAM 的 00H~1FH 地址单元已被工作寄存器 R0~R7 占用,20H~2FH 为位寻址区,故堆栈一般设在 30H~7FH(对于 8032 系列芯片可为 30H~0FFH)的区域内。单片机复位后,SP 的内容为 07H,堆栈事实上由 08H 单元开始,考虑到 08H~1FH 单元分别属于 1~3 组的工作寄存器 区,则最好把 SP 值改置为 1FH 或更大的值。 2.5 开机复位后,CPU 使用的是哪组工作寄存器? 它们的地址如何? CPU 如何指定和改变当 前工作寄存器组? 答:开机复位后使用的是 0 组工作寄存器,它们的地址是 00H~07H,对程序状态字 PSW 中 的 RS1 和 RS0 两位进行编程设置,可指定和改变当前工作寄存器组。RS1、RS0=00H 时, 当前工作寄存器被指定为 0 组;RS1、RS0=01H 时,当前工作寄存器被指定为 1 组;RS1、 RS0=10H 时,当前工作寄存器被指定为 2 组;RS1、RS0=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 个 TTL 负载。 2.8 MCS-51 的片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲 突? 答: MCS-51 的片外程序存储器和片外数据存储器共处同一地址空间, 地址范围都是 0000H~ FFFFH(64 KB),但不会发生总线冲突。因片外程序存储器和片外数据存储器的读写控制 信号不同,片外程序存储器的读信号是,而片外数据存储器的读信号为、写信号为,访问片 外程序存储器和片外数据存储器的指令也不同,所以它们不会发生总线冲突。 2.9 简述 MCS-51 内部数据存储器的存储空间分配。 答:内部数据存储器分为 3 个区域: 1. 工作寄存器区(00H~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/O 口作用是什么? 8051 的片外三总线是如何分配的? 答:MCS-51 单片机有 4 个 8 位并行 I/O 端口,分别记作 P0、P1、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 个部分为:[标号:] [操作码] [操作数];[注释] 标号是用户设定的一个符号,表示存放指令或数据的存储单元地址。标号由以字母开始的 1D8 个字母或数字串组成, 以冒号结尾。 不能用指令助记符、 伪指令或寄存器名来作标号。 标号是任选的,并不是每条指令或数据存储单元都要标号,只在需要时才设标号。如转移指 令所要访问的存储单元前面一般要设置标号。 一旦使用了某标号定义一个地址单元, 在程序 的其它地方就不能随意修改这个定义,也不能重复定义。 操作码是指令或伪指令的助记符,用来表示指令的性质或功能。对于一条汇编语言指令,这 个字段是必不可少的。 操作数给出参加运算(或其它操作)的数据或数据的地址。操作数可以表示为工作寄存器名、 特殊功能寄存器名、标号名、常数、表达式等。这一字段可能有,也可能没有。若有两个或 三个操作数,它们之间应以逗号分开。 注释字段不是汇编语言的功能部分, 只是增加程序的可读性。 言简意赅的注释是汇编语言程 序编写中的重要组成部分。 3.2 举例说明 MCS-51 单片机的 7 种寻址方式,各寻址方式的寻址空间。 1. 立即寻址 立即寻址方式的寻址空间为程序存储器。 例如: MOV A,#3FH ;3FH→A 1. 直接寻址 直接寻址方式中操作数存储的空间有三种:1. 内部数据存储器的低 128 个字节单元(00H~7FH) 例如: MOV A,30H ;(30H)→A 指令功能是把内部 RAM 30H 单元中的内容送入累加器 A。 ⑵ 位地址空间 例如: MOV C,00H ⑶ 特殊功能寄存器 例如: MOV IE,#85H ;立即数 85H→中断允许寄存器 IE。 ;直接位 00H 内容→进位位1. 寄存器寻址 寄存器寻址方式的寻址空间为工作寄存器和特殊功能寄存器等。 例如: MOV A,R6 ;(R6)→A 1. 寄存器间接寻址 寄存器间接寻址空间为内部 RAM 128 字节,外部 RAM 例如: MOV A,@R0 ;((R0))→A 1. 变址寻址 变址寻址空间为程序存储器。 例如: MOVC A,@A+DPTR ;((DPTR)+(A))→A MOVC A,@A+PC ;((PC)+(A))→A1. 相对寻址 相对寻址空间为程序存储器。 2. 当前 PC 值是指相对转移指令所在地址(源地址)加转移指令字节数。 即:当前 PC 值 = 源地址 + 转移指令字节数 1. 偏移量 rel 是有符号的单字节数,以补码表示,相对值在-128~+127 范围内,负数表示从 当前地址向上转移,正数表示从当前地址向下转移。所以转移的目的地址为: 目的地址 = 当前 PC 值 + rel = 源地址 + 转移指令字节数 + rel 例如: JNC 2AH , JZ F8H1. 位寻址 位寻址空间为内部 RAM 20H~2FH 的 128 位和 SFR 中的 83 位。 例如: MOVC,30H,MOVP1.0, C3.3 指出下列指令的寻址方式和操作功能: INC INC A INC MOVC MOV SETB @R2 A, @A+DPTR A, #6EH P1.0 40H ;直接寻址 (40H)+1→40H ;寄存器寻址 (A)+1→A ;寄存器间接寻址 ((R2))+1→(R2) ;基址加变址寄存器寻址 ((A)+(DPTR)) →A ;立即寻址 6EH→A ;位寻址 P1.0 置 13.4 设内部 RAM 中 3AH 单元的内容为 50H, 写出当执行下列程序段后寄存器 A、 和内部 R0 RAM 50H,51H 单元的内容为何值? MOV MOV MOV MOV MOV MOV A,3AH R0,A A,#00H @R0,A A,#25H 51H,A ;(A)=50H ;(R0)=50H ;(A)=00H ;(50H)=00H ;(A)=25H ;(51H)=25H答:(A)=25H, (3AH)=50H, (R0)=50H, (50H)=00H, (51H)=25H 3.5 设堆栈指针 SP 中的内容为 60H, 内部 RAM 30H 和 31H 单元的内容分别为 27H 和 1AH, 执行下列程序段后,61H,62H,30H,31H,DPTR 及 SP 中的内容将有何变化? PUSH PUSH POP POP MOV MOV 30H 31H DPL DPH 30H,#00H 31H,#0FFH ;(SP)+1→SP, (30H) →61H ;(SP)+1→SP, (31H) →62H ; (62) →DPL, (SP)-1→SP ; (61) →DPH, (SP)-1→SP ; 00H→30H ; FFH→31H答:(61H)=27H, (62H)=1AH, (30H)=00H, (31H)=FFH, (DPTR)=271AH, (SP)=60H 3.6 设(A)=30H,(R1)=23H,(30H)=05H。执行下列两条指令后,累加器 A 和 R1 以及内部 RAM 30H 单元的内容各为何值? XCH A,R1 XCHDA,@R1答:(A)=25H, (R1)=30H, (30H)=03H 3.7 设(A)=B,(R5)=B,分别写出执行下列指令后的结果 ANL ORL XRL A, R5 A, R5 A, R5 ; (A)=B, (R5)=B ; (A)= B, (R5)=B ; (A)=B3.8 设指令 SJMP rel=7FH,并假设该指令存放在 2113H 和 2114H 单元中。当该条指令执 行后,程序将跳转到何地址? 答:程序将跳转到 2194H 地址 3.9 简述转移指令 AJMP addr11,SJMP rel, LJMP addr16 及 JMP @A+DPTR 的应用 场合。 答:AJMP addr11 这是在当前 PC 的 2K 字节范围内的无条件转移指令,把程序的执行转移 到指定的地址。 SJMP rel 这是相对跳转指令,其中 rel 为相对偏移量。转向的目标地址是在当前 PC 的前 128 字节到后 127 字节之间。 LJMP addR16 执行这条指令时把指令的第二和第三字节分别装入 PC 的高位和低位字节 中, 无条件地转向指定地址。 转移的目标地址可以在 64KB 程序存储器地址空间的任何地方, 不影响任何标志。 JMP @A+DPTR 把累加器 A 中 8 位无符号数与数据指针 DPTR 中的 16 位数相加, 将结果 作为转移的目标地址送入 PC,不改变累加器 A 和数据指针 DPTR 内容,也不影响标志。本 指令以 DPTR 内容作为基址,A 的内容作为变址。只要把 DPTR 的值固定,而给 A 赋予不同 的值,即可实现程序的多分支转移。 3.10 查指令表, 写出下列两条指令的机器码, 并比较一下机器码中操作数排列次序的特点。 MOV MOV 78H,80H 78H,#80H ;85 80 78 ;75 78 80答: 直接寻址单元传送到直接寻址单元的机器码是第二个操作数在前, 而立即数传送到直接 地址单元是第一个操作数在前,次序正好相反。 3.11 试编写程序,查找在内部 RAM 30H~50H 单元中 1AH 这一数据。若找到 1AH 则将 51H 单元置为 01H;没找到则将 51H 单元置为 00H。 答:参考程序如下 MOV LOOP1: INC R1, #2FH R1 CJNE@R1, #1AH, LOOP2 SJMP LOOP3 R1, #51, LOOP1 51H, #00H END 51H, #01HLOOP2: CJNE MOV SJMP LOOP3: MOV END: RET3.12 若 SP=60H,子程序标号 MULT 所在的地址为 3A40H。执行 LCALL MULT 指令后,堆 栈指针 SP 和堆栈内容发生了什么变化? 答:(SP)=62H, (61H)=40H, (62H)=3AH 3.13 假设外部存储器 215AH 单元的内容为 3DH,执行下列指令后,累加器 A 中的内容为 何值? MOV MOV MOVX 答:(A) = 3DH P2,#21H R0,#5AH A,@R0习题 4 4.1 编程将数据存储器中以 2A00H 为首地址的 100 个连续单元清零。 CLR AMOV R0, #64H MOV DPTR, #2A00H LOOP: MOVX @DPTR,A INC DPTR DJNZ R0, LOOP END 4.2 编程将片内 50H~70H 单元中的内容传送到以 5C00H 为起始地址的存储区中。 MOV DPTR, #5C00H MOV R0, #50H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR CJNE R0,#70H,LOOP END 4.3 片外 RAM 区从 1000H 单元开始存有 100 个单字节无符号数, 找出最大值并存入 1100H 单元中,试编写程序。MOV DPTR, #1000H MOV R0,#00H MOV R1,64H;置片外 RAM 区首地址 ;清 R0 ;置计数初值 100 ;取片外 RAM 区的某个数送 A ;与 R0 中的数比较 ;(A)&(R0)跳转到 NT2 ;若(A)(R0),则大数送 RO ;修改数据块指针 ;未完,循环LOOP: MOVX A, @DPTR CJNZ A,R0,NT1 NT1: JC NT2MOV RO,A NT2: INC DPTRDJNZ R1,LOOP RET4.4 设有 100 个单字节有符号数,连续存放在以 2100H 为首地址的存储区中,试编程统计 其中正数、负数、零的个数。 MOV R0, #00H MOV R1, #00H MOV R2, #00H MOV R4, #64H MOV DPTR, #2100H ; 置负数的计数初值 ; 置正数的计数初值 ; 置 0 的计数初值 ; 置循环计数初值 ; 置数据区首地址 START:MOVX A, @DPTR JZ EQUAL JNB ACC.7, POSI INC INC DJNZ R0 DPTR R4, START R1; 取某一数据送入 A;为 0 转 EQUAL ;为正数转 POSI ; 负数计数值加 1 ; 修改数据块指针 ; 未完,返回 ; 正数计数值加 1 ; 修改数据块指针POSI: INC INC DJNZ DPTRR4, START R2 ; 0 计数值加 1EQUAL:INC INC DJNZ DPTRR4, START END4.5 从 2030H 单元开始, 存有 100 个有符号数, 要求把它传送到从 20BOH 开始的存储区中, 但负数不传送,试编写程序。 MOV R1, #64H MOV R0, #B0H MOV DPTR, #2030H START:MOVX A, @DPTR JB ACC.7, D1 ;置计数初值 ;目标数据区首地址低 8 位,高 8 位为 20H ;源数据区首地址 ;取源数据区某数据送入 A;负数,转 D1 ;正数,送入目标数据区 ; 修改源数据块指针 ; 修改目标数据块指针 ;未完,继续 ;返回MOVX @R0,A INC INC DJNZ RET D1: INC DJNZ INC R0 R1, START DPTR DPTR R0 R1, START;修改源数据块指针 ;修改目标数据块指针 ;未完,继续 RET;返回4.6 若从 30H 单元开始有 100 个数,编一个程序检查这些数,正数保持不变,负数取补后 送回。 MOV R0, #30H MOV R1, #64H START: MOVX A, @R0 JNB ACC.7, POSI CPL A ;数据区首地址 ;计数初值 ;取某个数 ;正数,转 POSI ;负数,取补ADD A, #01H MOVX INC DJNZ RET POSI: INC R0 ;修改数据块指针 ;未完,继续 @R0, A R0 R1, START ;送回原地址 ;修改数据块指针 ;未完,继续DJNZ R1, START RET4.7 试编程把以 2040H 为首地址的连续 10 个单元的内容按升序排列, 存到原来的存储区中。 SORT: MOV DPTR, #2040H; MOV R3, #09H; CLR F0; D1: MOVX A,@DPTR MOV R2, A INC DPTR MOVX A, @DPTR MOV R4, A MOV CLR A, R2 C ;前一个数减后一个数 ; ;后一个数送 R4 ;前一个数送 A ; ;前一个数送 R2SUBB A, R4 JC MOVNEXT A, R2; ;相邻数互换MOVX @DPTR,A MOV DEC MOV MOV R0,DPL R0 DPL,R0 A, R4 ; ;数据指针低 8 位减 1MOVX @DPTR,A INC DPTR; SETB F0NEXT: DJNZ R3, D1; JB RET F0,SORT4.8 设在 2000H~2004H 单元中.存放有 5 个压缩 BCD 码,编程将它们转换成 ASCII 码, 存放到以 2005H 为首地址的存储区中。 MOV DPTR,#2000H; MOV R0, #05H; MOV R1, #04H; D1: MOVX A, @DPTR;ANL A, #0FH CLR ADD MOV C; A,#30H; P2,#20H MOVX INC @R0,ADPTR; INC R0DJNZR1, D1; RET1. 在以 2000H 为首地址的存储区中, 存放着 20 个用 ASCII 码表示的 O~9 之间的数, 试编程, 将它们转换成 BCD 码,并以压缩 BCD 码的形式存放在 3000H~3009H 单元中。 MOV DPTR, 2000H; MOV MOV R0, #20H; R1, #00H;ASCBIN: MOVX A, @DPTR; CLR SUBB CA, #30H; MOV MOVX INC INC DJNZ P2, 30H; @R1,A; R1; DPTR; R0, ASCBIN;RET4.10 试编写多字节 BCD 码数加法、减法子程序。4.11 若晶振为 6MHz,试编写延时 100ms、1s 的子程序。 ORG 2000H MOV R0, #0AH ;毫秒数→R0 周期数 1 1DL2: MOV DL1: NOP NOPR1, #MT;1ms 延时值→R1 1 1DJNZ R1,DL1;1ms 延时循环2 DJNZ R0,DL2 END;10ms 延时循环24.12 试设计一个子程序,其功能为将片内 RAM 20H~21H 中的压缩 BCD 码转换为二进制 数,并存于以 30H 开始的单元。BCDB: MOV MOV R2,AA,20H ;取千位、百位 BCD 码 ;调用子程序ACALL BCDB1 MOV MUL MOV XCH MOV MOV MOV ACALL ADD MOV MOV B,#0AH AB R6,A A,B R5,A A,21H R2,A BCDB1 A,R6 31H,A A,R5;乘以 10 ;乘积低 8 位送 R6 ;交换乘积高、低位 ;乘积高位送 R5 ;取十位、个位 BCD 码 ;送入 R2 ;调用子程序 ;加千位、百位乘积低 8 位 ;低 8 位送入 31H ;乘积高 8 位送 A ;加进位位 ;结果高 8 位送入 30H HEREADDC A,#00H MOV 30H,AHERE: SJMP 子程序清单: BCDB1: MOV ANLA,R2;取压缩 BCD 码 ;屏蔽低 4 位A,#0F0HSWAP A MOV B,#0AH MUL MOV MOV ANL ADD MOV RETAB R3,A A,R2 A,#0FH A,R3 R2,A;高位 BCD 码乘以 10 ;乘积送 R3 ;取压缩 BCD 码 ;屏蔽高 4 位 ;高位 BCD 码乘以 10 后加低位 BCD 码 ;送 R2习题 5 5.1 什么是中断系统?中断系统的功能是什么? 答:当 CPU 正在处理某件事情(例如,正在执行主程序)的时候,外部或内部发生的某一事 件(如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等)请求 CPU 迅速去 处理,于是,CPU 暂时终止当前的工作,转去处理所发生的事件。中断服务程序处理完该 事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断。实现这种功能 的部件称为中断系统。 中断系统的功能: (1)实现中断及中断返回,(2)实现优先级排队,(3)实现优先级控制。 5.2 什么是中断嵌套? 答:当 CPU 响应某一中断源的请求而进行中断处理时,若有优先级更高的中断源发出中断 请求,则 CPU 中断正在执行的中断服务程序,保留程序的断点和现场,响应更高一级的中 断,即是中断嵌套。 5.3 什么是中断源?MCS-51 有哪些中断源?各有什么特点? 答:向 CPU 发出中断请求的来源称为中断源。 MC5-51 单片机的中断系统有 5 个中断请求源: ⑴―外部中断 0 请求,由引脚输入,中断请求标志为 IE0。 ⑵―外部中断 l 请求,由引脚输入,中断请求标志为 IEl。 ⑶定时器/计数器 T0 溢出中断请求,中断请求标志为 TF0。 ⑷定时器/计数器 T1 溢出中断请求,中断请求标志为 TF1。 ⑸串行口中断请求,中断请求标志为 TI 或 RI。 外部中断 0:它的触发方式选择位为 IT0。 IT0=0,为电平触发方式,引脚上低电平有效 IT0=1,为脉冲触发方式,引脚上的电平从高到低的负跳变有效。 IT0 位可由软件置“1”或清“0”。 外部中断 0 请求标志位 IE0。 当 IT0=0, 即电平触发方式时, 每个机器周期的 S5P2 采样引脚, 若脚为低电平, 则置“1” IE0, 否则清“0” IE0。 当 IT0=1,即跳沿触发方式时,在第一个机器周期采样为低电平,则置“1” IE0。IE0=1,表 示外部中断 0 正在向 CPU 申请中断。当 CPU 响应中断,转向中断服务程序时,由硬件清“0” IE0。 外部中断 1 中断原是与此相同。 定时器/计数器 0:被启动计数后,从初值开始加 1 计数,当定时器/计数器 0 计数满而产生 溢出时, 由硬件自动使 TF0 置 1, 并向 CPU 申请中断。 该标志一直保持到 CPU 响应中断后, 才由硬件自动清 0。也可用软件查询该标志,并由软件清 0。定时器/计数器 1 中断原理与此 相同。 串行中断请求由 TI、RI 的逻辑“或”得到。即不论是发送标志还是接收标志,都将发生串行 中断请求。 5.4 MCS-51 单片机响应外部中断的典型时间是多少?在哪些情况下,CPU 将推迟对中断请 求的响应? 答:3~8 个机器周期。 (1) CPU 正在处理相同的或更高优先级的中断。因为当一个中断被响应时,要把对应的中断 优先级状态触发器置“1”(该触发器指出 CPU 所处理的中断优先级别),从而封锁了低级中断 和同级中断。 (2) 所查询的机器周期不是所执行指令的最后一个机器周期。 作这个限制的目的是使当前指 令执行完毕后,才能进行中断响应,以确保当前指令完整的执行。 (3) 正在执行的指令是 RET1 或是访问 IE 或 IP 的指令。因为按 MCS-51 中断系统特性的规 定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求。 如果存在上述三种情况之一,CPU 将推迟对中断请求的响应。5.5 中断查询确认后,在下列各种运行情况中,能立即进行响应的是: (1)当前正在进行高优先级中断处理 (2)当前正在执行 RETI 指令 (3)当前指令是 DIV 指令,且正处于取指令的机器周期 (4)当前指令是 MOV A, R3 答:(4)能立即进行响应 5.6 试编写出外部中断 1 为跳沿触发方式的中断初始化程序。 答: SETB SETB SETB EA EX1 IT15.7 在 MCS-51 中,需要外加电路实现中断撤除的是: (1)定时中断 (2)脉冲方式的外部中断 (3)串行中断 (4)电平方式的外部中断 答:(4)需要外加电路 5.8 MCS-51 有哪几种扩展外部中断源的方法?各有什么特点? 答: (1)定时器/计数器作为外部中断源的使用方法 当它们选择为计数器工作模式,T0 或 T1 引脚上发生负跳变时,T0 或 T1 计数器加 1,利用 这个特性,可以把 T0、T1 引脚作为外部中断请求输入引脚,而定时器/计数器的溢出中断 TF1 或 TF0 作为外部中断请求标志。 (2)中断和查询结合的方法 若系统中有多个外部中断请求源, 可以按它们的轻重缓急进行排队, 把其中最高级别的中断 源 IR0 直接接到 MCS-51 的一个外部中断输入端,其余的中断源 IR1~IR4 用“线或”的办法 连到另一个外部中断输入端, 同时还连到 P1 口, 中断源的中断请求由外设的硬件电路产生, 这种方法原则上可处理任意多个外部中断。 查询法扩展外部中断源比较简单,但是扩展的外部中断源个数较多时,查询时间较长。 (3)用优先权编码器扩展外部中断源 采用 74LS148 优先权编码器在硬件上对外部中断源进行排队,可以避免响应优先级最高的 中断和响应优先级最低的中断所需的时间可能相差很大这样的问题。 该方法的最大特点是结 构简单,价格低廉,但该电路无法实现中断服务子程序的嵌套。 5.9 中断服务子程序和普通子程序有什么区别? 答: 1,中断服务子程序的入口地址由中断向量表确定,而普通子程序的入口地址在中断向 量表以外的程序存储空间内任意设定。 2,中断服务子程序的返回指令是 RETI, 而普通子程序的返回指令是 RET 5.10 试编写一段对中断系统初始化的程序,允许 INT0,INT1,T0,串行口中断,且使 T0 中断为高优先级。 答: SETB SETB SETB SETB SETB SETB EA EX0 EX1 ET0 ES PT05.11 在 MCS-51 单片机中,外部中断有哪两种触发方式?如何加以区别? 答:电平触发方式和跳沿触发方式。 IT0=0 时, 为电平触发方式,引脚低电平有效。 IT0=1 时, 为跳沿触发方式,引脚负跳变有效。 IT1=0 时,为电平触发方式,引脚低电平有效。 IT1=1 时,为跳沿触发方式,引脚负跳变有效。 5.12 单片机在什么条件下可响应 INT0 中断?简要说明中断响应的过程。 答: 中断允许寄存器 IE 中的 EA=1, EX1=1, 1, 且 同时没有其它优先于外部中断 0 的中断, 若 IT0=0,引脚上低电平有效;若 IT0=1,引脚上的电平从高到低的负跳变有效。 2,当 CPU 正在处理某件事情(例如,正在执行主程序)的时候,外部发生的某一事件(如某个 引脚上电平的变化,一个脉冲沿的发生)请求 CPU 迅速去处理,于是,CPU 暂时终止当前的 工作,转去处理所发生的事件。中断服务程序处理完该事件后,再回到原来被终止的地方, 继续原来的工作, 这样的过程称为中断。 处理事件请求的过程, 称为 CPU 的中断响应过程。 5.13 当正在执行某一中断源的中断服务程序时,如果有新的中断请求出现,问在什么情况 下可响应新的中断请求?在什么情况下不能响应新的中断请求? 答:1,一个中断源的中断请求被响应,需满足以下条件: ⑴ 该中断源发出中断请求。 ⑵ CPU 开中断,即中断总允许位 EA=1。 ⑶ 申请中断的中断源的中断允许位=1,即该中断没有被屏蔽。 ⑷ 无同级或更高级中断正在被服务。 2,中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,当遇到下列三种 情况之一时,中断响应被封锁: (1) CPU 正在处理相同的或更高优先级的中断。因为当一个中断被响应时,要把对应的中断 优先级状态触发器置“1”(该触发器指出 CPU 所处理的中断优先级别),从而封锁了低级中断 和同级中断。 (2) 所查询的机器周期不是所执行指令的最后一个机器周期。 作这个限制的目的是使当前指 令执行完毕后,才能进行中断响应,以确保当前指令完整的执行。 (3) 正在执行的指令是 RETI 或是访问 IE 或 IP 的指令。因为按 MCS-51 中断系统特性的规 定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求。 如果存在上述三种情况之一,CPU 将不能进行中断响应。 习题 6 6.1 MCS-51 单片机的 TO、T1 用作定时器时,其定时时间与哪些因素有关? 答:定时器/计数器用作定时方式时,其定时时间与时钟周期、工作方式、定时初值等因素 有关。 6.2 当 MCS-51 单片机的 TO 用于工作方式 3 时,由于 TRl 位已被 TO 占用,该如何控制定 时器 T1 的开启和关闭? 答:这时 T1 只能用作串行口波特率发生器或不需要中断的场合。因为 TR1 已被 T0 借用, 所以 T1 的控制只有和 M1、M0 两个条件,选择定时或计数模式,M1、M0 选择工作方式。 这时只要把方式控制字送入 TMOD 寄存器就可启动 T1 运行,如果让它停止工作,只需送入 一个将 T1 设置为工作方式 3 的方式控制字就可以了。 6.3 设 MCS-51 单片机的晶振频率为 12MHz, 试用单片机的内部定时方式产生频率为 100kHz 的方波信号,由 P1.1 脚输出。 答:依据题意,只要使 P1.0 引脚每隔 5us 取反一次即可得到 10us 的方波,因此定是 时间 T=5us,可选择定时器/计数器 T0,以中断方式工作。 1. 设定 TMOD TMOD 的低 4 位控制 T0,设定 T0 定时模式,即=0;工作在方式 0,即 M1M0=00H;软件 启动定时器,即 GAME=0。TMOD 的高 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 00H。 1. 计算定时初值 晶振频率为 12MHz,机器周期=1us 定时初值 =7=1FFBH=1011B 因 TL0 的高 3 位未用,对计算出的初值要进行修正,即低 5 位前插入 3 个 0 构成低 8 位初 值,从低 6 位向前取 8 位构成高 8 位初值,即 1011B=FF1BH ORG AJMP 0000H MAIN ORG AJMP ORG MAIN: MOV MOV MOV 000BH ISER 100H SP,#60H TMOD,#00H ;设堆栈指针 ;写控制字 ;转主程序 ;T0 中断矢量地址 ;转中断服务程序TL0,#1BH MOV SETB SETB SETB SJMP;置 T0 初值TH0,#0FFH ET0 EA TR0 $ ;允许 T0 中断 ;CPU 开中断 ;启动 T0 ;等待中断 TL0,#1BH ;T0 中断服务子程序,重置 T0 初值 TH0,#0FFH P1.0 ;P1.1 取反ISER: MOV MOV CPL RETI END6.4 设 MCS-51 单片机的晶振频率为 6MHz,使用定时器 T1 的定时方式 1,在 P1.0 输出周 期为 20ms、占空比为 60%的矩形脉冲,以查询方式编写程序。 答:依据题意,使 P1.0 引脚输出 12ms 高电平,8ms 低电平,即可得到周期为 20ms、占空 比为 60%的矩形脉冲,因此定时时间 T1=12ms,T2=8ms,定时器/计数器 T1,以查寻方式工 作。 1. 设定 TMOD TMOD 的高 4 位控制 T1,设定 T1 定时模式,即=0;工作在方式 1,即 M1M0=01H;软件 启动定时器,即 GAME=0。TMOD 的低 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 10H。 1. 计算定时初值 晶振频率为 6MHz,机器周期=2us 定时初值= =5H ==6H ORG MOV LOOP0: MOV MOV SETB 100H TMOD,#10H TL0,#90H ; ;TH0,#0E8H TR1 ; TF1,LOOP1 TF1; ;LOOP1:JNB CLR SETB MOV MOV SETB TR1 P1.0TL0,#60H;TH0,#0F0HLOOP2:JNB CLR CLR P1.0; SJMP RETTF1,LOOP2 TF1;;LOOP0;6.5 设 MCS-51 单片机的晶振频率为 6MHz,以计数器 T1 进行外部事件计数,每计数 100 个外部事件输入脉冲后,计数器 T1 转为定时工作方式,定时 5ms 后,又转为计数方式。如 此周而复始地工作,试编程实现。 答:依据题意,设 T1 工作在计数模式时,工作在方式 0, 设 T1 工作在定时模式时,工作 在方式 1 。 1. 设定 TMOD TMOD 的高 4 位控制 T1,设定 T1 计数模式,即=1;工作在方式 1,即 M1M0=10H;软件 启动定时器,即 GAME=0。TMOD 的低 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 40H。 设定 T1 定时模式,即=0;工作在方式 1,即 M1M0=01H;软件启动定时器,即 GAME=0。 TMOD 的低 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 10H。 1. 计算计数初值 计数初值=92=1F9CH=1100B 因 TL0 的高 3 位未用,对计算出的初值要进行修正,即低 5 位前插入 3 个 0 构成低 8 位初 值,从低 6 位向前取 8 位构成高 8 位初值,则计数初值为 FC1CH 1. 计算定时初值 晶振频率为 6MHz,机器周期=2us ==63036=F63CH ORG 100H; TMOD,#40H TL0,#1CH; ; ;START: MOV MOV MOV SETBTH0,#0FCH TR1;LOOP1:JNB CLR MOV MOV MOV SETB LOOP2:JNB CLR SJMPTF1,LOOP1;TF1; TMOD, #10H; TL0,#3CH; TH0,#0F6H; TR1; TF1,LOOP2; TF1; START;6.6 设 MCS-51 单片机的晶振频率为 12 MHz, 要求用定时器/计数器 TO 产生 1 ms 的定时, 试确定计数初值以及 TMOD 寄存器的内容。 答:设 T0 工作定时模式,晶振频率为 12MHz,机器周期=1us 方式 1: 初值: ==64536=FC18H TMOD:00H 6.7 设 MCS-51 单片机的晶振频率为 6MHz,要求用定时器/计数器产生 100 ms 的定时,试确定计数初值以及 TMOD 寄存器的内容。 答:此题晶振频率改为 6MHz,否则定时时间超出最大定时时间。 1. 设定 TMOD TMOD 的低 4 位控制 T0,设定 T0 定时模式,即=0;若工作在方式 1,即 M1M0=01H;软 件启动定时器,即 GAME=0。TMOD 的高 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 01H。 1. 计算定时初值 晶振频率为 6MHz,机器周期=2us 初值: ==H 6.8 设晶振频率为 12 MHz。编程实现以下功能:利用定时/计数器 TO 通过 P1.7 引脚输出 一个 50 Hz 的方波。 答:依据题意,只要使 P1.7 引脚每隔 10ms 取反一次即可得到 20ms 的方波,因此定是时 间 T=10ms, T0 工作在定时模式的方式 1,以中断方式工作。 1,设定 TMOD TMOD 的低 4 位控制 T0,设定 T0 定时模式,即=0;若工作在方式 1,即 M1M0=01H;软 件启动定时器,即 GAME=0。TMOD 的高 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 01H。 2,计算定时初值 晶振频率为 12MHz,机器周期=1us 初值: ==5HORG AJMP0000H MAIN ORG AJMP ORG 000BH ISER 100H SP,#60H TMOD,#01H TL0,#0F0H MOV SETB ;设堆栈指针 ;写控制字 ;转主程序 ;T0 中断矢量地址 ;转中断服务程序MAIN: MOV MOV MOV;置 T0 初值TH0,#0D8H ET0 ;允许 T0 中断 SETB SETB SJMP ISER: MOV MOV CPL RETI ENDEA TR0 $ TL0,#0F0H TH0,#0D8H P1.7;CPU 开中断 ;启动 T0 ;等待中断 ;T0 中断服务子程序,重置 T0 初值 ; ;P1.7 取反6.9 每隔 1s 读一次 P1.O,如果所读的状态为“1’,则将片内 RAM 10H 单元内 容加 1;如果所读的状态为“O”,则将片内 RAM llH 单元内容加 1。设单片机的晶振频率为 12 MHz,试编制程序。 答: 依据题意, 每隔 1s 读一次 P1.0 引脚, 再根据读出的状态分别计数。 因此定是时间 T=1s, 设 T0 工作在定时模式的方式 1,以中断方式工作。 1,设定 TMOD TMOD 的低 4 位控制 T0,设定 T0 定时模式,即=0;若工作在方式 1,即 M1M0=01H;软 件启动定时器,即 GAME=0。TMOD 的高 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 01H。 2,计算定时初值 晶振频率为 12MHz,机器周期=1us 因定时时间 1s 已超出定时器的定时能力,可将定时时间设为 50ms,在中断服务程序中对 定时器溢出进行计数 20 次时,读一次 P1.0 引脚,根据读出的状态分别计数。 ==H ORG MOV MOV MOV MOV 100H 11H, #00H 10H, #00H TMOD,#01H ;置 T0 初值 ; 清计数器 ; 清计数器 ;写控制字,T1 工作方式 1TL0,#0B0H MOVTH0,#3CH A, #20 ;置溢出次数START:MOV LOOP: LOOP1:SETB JNB MOV MOV CLR DJNZ JNB INC SJMPTR1 TF1,LOOP1 TL0,#0B0H TH0,#3CH TF1 A, LOOP P1.0, LOOP2 11H STRAT 10H STRAT;启动 T1 ; ;重置 T1 初值 ; ; ; ; ; ; ; ;LOOP2:INC SJMP6.10 简要说明若要扩展定时器/计数器的最大定时时间,可采用哪些方法? 答:1,降低晶体振荡器主频, 2,采用多次累计计数等方法,见例 6-4. 习题 7 7.1 什么是串行异步通信,它有哪些特点? 答:串行异步通信的数据通常是以字符(或字节)为单位组成字符帧按顺序传送的。字符帧 通过传输线由发送端一帧一帧地发送到接收端,接收端一帧一帧地接收。 特点:优点是不需要传送同步脉冲,字符帧长度也不受限制,故所需设备简单。缺点是因字 符帧中包含有起始位和停止位而降低了有效数据的传输速率。 7.2 串行异步通信的字符格式由哪几个部分组成?某异步通信接口,其帧格式由 1 个起始位 (O),7 个数据位,1 个偶校验和 1 个停止位组成。用图示方法画出发送字符“5”(ASCII 码为 0110101B)时的帧结构示意图。 答:1,串行异步通信的字符格式由一个起始位表示字符的开始,一个停止位表示字符的结 束。数据位在起始位之后,停止位之前,这样构成一帧数据。奇偶校验位位与数据位之后, 停止位之前,用于表示串行通信中采用奇校验位还是偶校验位,由用户根据需要决定。 2,发送字符“5”(ASCII 码为 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 的波特率 串行口工作在方式 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.5 MCS-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 才被激活。在方式 0 中,SM2 必须是 0。 2,TB8 发送数据的第 9 位 在方式 2、方式 3 中,TB8 作为第 9 位数据发送出去,根据需要用软件置位或清 0。TB8 可 在双机通信中作为奇偶校验位, 也可在多机通信中作为发送地址帧或数据帧的标志位。 一般 约定,发送地址帧时设置 TB8=1;发送数据帧时设置 TB8=0。在方式 0 和方式 1 中,该位 未用。 3,RB8 接收数据的第 9 位 在方式 2、方式 3 中,RB8 是接收的第 9 位数据,在多机通信中为地址、数据标志位;方式 0 中 RB8 未用;在方式 1 中,若 SM2=0,则接收的停止位自动存入 RB8 中。 1. 设 fosc=6 MHz,试编写一段对串行口初始化程序,使之工作在方式 1,波特率为 1200 b/ s;并用查询串行口状态的方式,读出接收缓冲器的数据并回送到发送缓冲器。 答:串行方式 1 波特率取决于 T1 溢出率,若设 SMOD=1,T1 工作在方式 2,则 T1 的计数初 值为: X=256-(2/32)200=230=0E6H ORG LJMP ORG MAIN: 0000H MAIN 100H MOV MOV MOV MOV CLR ET1 SP, #60H TMOD, #20H TL1, #0E6H TH1, #0E6H ;禁止 T1 中断 ;启动 T1 ;置串口方式 1 ;置 SMOD=0 ;禁止串行中断 ;读接收缓冲器 ;回送到发送缓冲器 ;等待一帧数据发送完 ;设 T1 工作方式 2 ;置 T1 计数初值SETB TR1 MOV MOV CLR MOV MOV LP: JNB SCON,#40H PCON,#00H ES A, SBUF SBUF, A TI, LP CLR SJMP $TI;清发送标志位7.7 设晶振频率为 11.0592 MHz,串行口工作在方式 1,波特率为 4800 b/s。写出用 T1 作为波特率发生器的方式字并计算 T1 的计数初值。 答:串行方式 1 波特率取决于 T1 溢出率,设 SMOD=0, 即 PCON=00H T1 工作在定时方式 2,则 T1 的计数初值为: X=256-(1/32)800=250=0FAH 用 T1 作为波特率发生器的方式字 TMOD=20H, 7.8 为什么定时器 T1 用作串行口波特率发生器时,常选用工作方式 2,若已知系统时钟频 率和通信的波特率,则如何计算其初值? 答:因工作方式 2 可以自动装入初值,避免由程序装入初值带来波特率的误差 波特率= 定时器 T1 的溢出率 7.9 简述 MCS-51 单片机多机通信的原理。 答:多机通讯工作过程如下: (1)从机串行口编程为方式 2 或方式 3 接收,且置“1”SM2 和 REN 位,使从机只处于多机通 讯且接收地址帧的状态。 (2)在主机先将从机地址(即准备接收数据的从机地址)发送给各从机,然后再传送数据或 命令,主机发出的地址信息的第 9 位为 1,数据(包括命令)信息的第 9 位为 0。当主机向 各从机发送地址时, 各从机的串行口接收到的第 9 位信息 RB8 为 1, 且由于 SM2=1, 则置“1” 中断标志位 RI,各从机响应中断执行中断服务程序。在中断服务子程序中,判断主机送来 的地址是否与本机地址相符合,若为本机地址,则该从机清“0”SM2 位,准备接收主机的数 据或命令;若于本机地址不相符,则保持 SM2=1 状态。 (3)接着主机发送数据帧,此时各从机串行口接收到的 RB8=0,只有与前面地址相符合的从 机 (即已清“0”SM2 位的从机) 才能激活中断标志位 RI, 从而产生中断, 进入中断服务程序, 在中断服务程序中接收主机的数据(或命令);其它的从机因 SM2 保持为 1,而 RB8=0 不 激活中断标志 RI,不能进入中断,将所接收的数据丢弃不作处理,从而保证主机和从机间 通讯的正确性。图 7-22 所示的多机系统是主从式,由主机控制多机之间的通讯,从机和从 机的通讯只能经主机才能实现。 7.10 设计一个单片机的双机通信系统, 串行口工作在方式 1, 编写通信程序将甲机内部 RAM 30H~3FH 存储区的数据块通过串行口传送到乙机内部 RAM 40H~4FH 存储区中去。 答:假设甲、乙双方均采用 6MHz 晶振,波特率为 2400。 若设 SMOD=1,T1 工作在方式 2,则 T1 的计数初值为: X=256-(2/32)400=122=7AH 甲机发送程序: ORG LJMP ORG MAIN: 0000H MAIN 0100H MOV MOV MOV MOV CLR SETB MOV MOV CLR MOV MOV TRSA: SP, #60H TMOD, #20H TL1, #7AH TH1, #7AH ET1 TR1 SCON,#40H PCON,#00H ES R0, #30H R2, #16 A, @R0 ;禁止 T1 中断 ;启动 T1 ;置串口方式 1 ;置 SMOD=0 ;禁止串行中断 ;置发送数据区首地址 ;置发送数据长度 ;读一个缓冲器数据 ;发送 ;等待一帧数据发送完 ;清发送标志位 ;指向下一个单元 ;未发送完,继续 ;设 T1 工作方式 2 ;置 T1 计数初值MOV MOV JNB CLR INC DJNZSBUF, A TI, $ TI R0 R2, TRSASJMP$乙机接收程序: ORG LJMP ORG MAIN: 0000H MAIN 0100H MOV SP, #60H MOV MOV MOV CLR SETB MOV MOV CLR MOV MOV SETB RESV: MOVTMOD, #20H TL1, #7AH TH1, #7AH ET1 TR1 SCON,#40H PCON,#00H ES R0, #40H R2, #16 REN A, SBUF;设 T1 工作方式 2 ;置 T1 计数初值;禁止 T1 中断 ;启动 T1 ;置串口方式 1 ;置 SMOD=0 ;禁止串行中断 ;置发送数据区首地址 ;置发送数据长度 ;启动接收 ;读接收数据MOV @R0 , A, JNB;存接收数据 ;等待一帧数据接收完 ;清接收标志位 R0 R2, RESV ;指向下一个单元 ;未完,继续RI, $CLRTI INC DJNZSJMP 习题 8$8.1 简述 51 系列单片机系统扩展时总线形成电路的基本原理,并说明各控制信号的作用。●① ALE 作为地址锁存的选通信号,以实现低 8 位地址的锁存。② 信号作为扩展程序存储器的读选通信号。 ③ 信号作为内、外程序存储器的选择信号。 ④ 和作为扩展数据存储器和 I/O 端口的读,写选通信号。执行 MOVX 指令时,这两个信号 分别自动有效。8.2 简述全地址译码、部分地址译码和线选法的特点及应用场合。 1)线性选择法 直接以系统空闲的高位地址线作为芯片的片选信号。 当存储器对应的片选地址线输出有效电 平时,该芯片被选通。优点是简单明了,无须另外增加电路;缺点是寻址范围不唯一,地址 空间没有被充分利用, 可外扩芯片的个数较少。 线性选择法适用于小规模单片机应用系统中 片选信号的产生。 2)全地址译码法 利用译码器对系统地址总线中未被外扩芯片用到的高位地址线进行译码, 以译码器的输出作 为外围芯片的片选信号。常用的译码器有:74LS138,74LS139,74LS154 等。优点是存储 器的每个存储单元有惟一的一个系统空间地址, 不存在地址重叠现象, 对存储空间的使用是 连续的,能有效地利用系统的存储空间。缺点是所需的地址译码电路较多。全地址译码法是 单片机应用系统设计中经常采用的方法。 3)部分地址译码法 单片机未被外扩芯片用到的高位地址线中,只有一部分参与地址译码,其余部分是悬空的。 优点是可以减少所用地址译码器的数量。 缺点是存储器每个存储单元的地址不是惟一的, 存 在地址重叠现象。因此,采用部分地址译码法时必须把程序和数据存放在基本地址范围内, 以避免因地址重叠引起程序运行的错误。8.3 利用全地址译码为 MCS-51 扩展 16 KB 的外部数据存储器, 存储器芯片选用 SRAM 6264。 要求 6264 占用从 A000H 开始的连续地址空间,画出电路图。8.4 利用全译码为 MCS-51 扩展 8 KB 的外部程序存储器,存储器芯片选用 EPROM 2764, 要求 2764 占用从 2000H 开始的连续地址空间,画出电路图。8.5 使用 74LS244 和 74LS273,采用全地址译码方法为 MCS-51 扩展一个输入口和一个输 出口,口地址分别为 FF00H 和 FF01H,画出电路图。编写程序,从输入口输入一个字节的 数据存入片内 RAM 60H 单元,同时把输入的数据送住输出口。 答:此题取消电路图,程序如下:● ●● ●ORG 0000H AJMP MAIN ● ● ● ● ● ● ● ●● MAIN:● ● ● ● ● ● ●ORG MOV0040H DPTR,#FF00HMOVX A,@DPTR MOV MOV 60H, A; DPTR,# FF01HMOVX @DPTR,A SJMP END MAIN8.6 采用全地址译码方法为 MCS-51 扩展 8 位并行输入口和 8 位并行输出口,口地址自定, 画出电路图(要求使用 74LSl38 译码器)。 8.6 题不作 8.7 8255A 共有几种工作方式?各适用于哪些场合? ● 8255A 有三种工作方式,方式 0 为基本输入/输出方式;方式 1 为选通输入/输出方式; 方式 2 为双向传送方式。 方式 0 是一种基本的输入/输出方式,这种工作方式不需要应答联络信号,A 口、B 口及 C 口的高半口和低半口都可以由编程设置为输入或输出。 方式 1 是一种选通输入/输出方式。A 口和 B 口可独立地设置为这种工作方式。在这种方式 下, 口和 B 口通常用于传送它们与外设之间的 I/O 数据,C 口用作 A 口和 B 口的应答联络 A 信号线,以实现中断方式传送 I/O 数据。 方式 2 是一种选通的双向传送方式。只有 A 口才能设定为这种工作方式,在方式 2 下,A 口为 8 位双向数据 I/O 口,C 口的 PC7~PC3 用来作为 A 口输入/输出的控制和同步信号。 此时,B 口及 C 口的低 3 位(PC0~PC2)可以工作在方式 0 或方式 1。 8.8 若对 8255A 作如下设置:A 口以方式 0 输出,B 口以方式 0 输入,C 口高 4 位为输入, 低 4 位为输出,控制寄存器地址为 0003H。试对 8255A 初始化,用位操作方式使 8255A 的 PC4 置位,使 PC3 复位。 ● ORG MOV MOV 答:在 C 口按位置位/复位控制字中,设无关位取 0,源程序如下: 0100H DPTR, #0003H A, #8AHMOVX @DPTR, A MOV A, #09H MOVX @DPTR, A MOV A,#06HMOVX @DPTR, A END习题 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.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:选通输入信号线,它的上升沿将上的信息打入 PP40,并启动 PP40 处理。 BUSY:状态输出线。PP40 正在处理主机的命令或数据(描绘)时 BUSY 输出高电平,空闲 时 BUSY 输出低电平。BUSY 可作为中断请求线或供 CPU 查询。 ACK:响应输出线,当 PP40 接收并处理完主机的命令或数据时,输出一个负脉冲,它也可 以作为中断请求线。
更多搜索:
赞助商链接
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 单片机定时中断程序 的文章

 

随机推荐