《毕业设计智能抢答器.doc》由会员分享,可在线阅读,更多相关《毕业设计智能抢答器.doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、目 录第一节 引 言11.1 智能抢答器的介绍11.2 设计任务1第二节单片机简介22.1 8051单片机的主要性能22.2 信号引脚的介绍22.3 信号引脚的第二功能32.4 引脚的第一、第二功能会不会混淆3第三节 设计方案的比较53.1 原始方案53.2 最终方案6 第四节 硬件设计介绍74.1 74LS47译码器74.2 LM35884.3 硬件部分工作原理8 第五节 软件设计介绍105.1主程序流程图105.2 INT0中断服务程序框图115.3 中断12第六节 结论15参考文献 16附录 16单片机控制的智能抢答器设计 第一节 引 言随着我国经济和文化事业的发展,在很多公开竞争场合要
2、求有公正的竞争裁决,诸如证券、股票交易及各种智力竞赛等,因此出现了抢答器。抢答器一般是由很多电路组成的,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。因此我们设计了以单片机为核心的新型智能的抢答器,在保留了原始抢答器的基本功能的同时又增加一系列的实用功能并简化其电路结构。抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动等场合。传统普通抢答器主要存在以下缺陷:(一)、在一次抢答过程中,当出现超前违规抢答时,只能处理违规抢答信号,而对没有违规的有效抢答信号不能进行处理,因而使该次抢答过程变为无效。(二)、当有多个违规抢答时,普通抢答器或采用优先编码
3、电路选择其中一个,或利用抢答电路电子元件的“竞争”选择其中一个。对于后者由于抢答电路制作完毕后电子元件被固定。各路抢答信号的“竞争”能力也被固定,因而本质上也有优先权。普通抢答器存在不公平性。(三)、当有多个违规抢答时,普通抢答器只能“抓住”其中一个而出现“漏洞”。1.1 智能抢答器的介绍这是一种单片机控制的智能化抢答器,该抢答器可以克服普通抢答器存在的各种缺陷。详细介绍了其硬件结构和设计方法。本系统的功能是通过按下抢答键的按钮使单片机的相应的口线读入信号,经过处理后输出致7447显示所按下的键号。本系统还具备了用概率的方法筛选第一有效抢答信号、显示超前违规抢答信号、以及可变的提示抢答的倒计时
4、信号和按键自检等功能。其中简述了单片机的特点和7447芯片的使用;概述中断系统的控制功能,并详细介绍了本系统软件的程序设计和步骤。1.2 本设计任务 任务:以单片机为控制核心的智能型抢答器。它对采样获得的各种抢答信号进行分析,识别超前违规信号。并对它们进行处理,使每一次抢答过程都有效。利用存储器记忆多个违规信号,克服“漏洞”现象。当同时出现多个抢答信号时,利用程序软件随机选择其中一个十分公平并具有倒计时功能、验键、违规显示等功能。第二节 单片机简介电子计算机的发展经历了从电子管、晶体管、集成电路到大规模集成电路共四个阶段,即通常所说的第一代、第二代、第三代和第四代计算机。现在广泛使用的微型计算
5、机是大规模集成电路技术发展的产物,因此它属于第四代计算机,而单片机则是微型计算机的一个分支。从1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个不同的方向发展:一个是向着高速度、大容量、高性能的高档微机方向发展;而另一个则是向稳定可靠、体积小和价格廉的单片机方向发展。但两者在原理和技术上是紧密联系的。单片机因将其主要组成部分集成在一个芯片上而得名,具体说就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O口电路等主要微型机部件,集成在一块芯片上。虽然单片机只是一块芯片,但从功能和组成上,它已具有了计算机的属性,为此它称为单片微型机。单片机有很多的特点,
6、主要表现在:体积小、功耗低、价格廉、控制功能强、应用现场环境恶劣等等。本设计核心采用了AT89C51单片机。80C51单片机系列是在MCS51系列的基础上发展起来的,早期的80C51只是系列众多芯片中的一类,但是随着后来的发展,80C51已经形成独立的系列,并且成为当前8位单片机的典型代表。80C51的芯片信号引脚和逻辑符号如图21。80C51芯片为40引脚双列直插封装,单一的+5V电源,其引脚排列和逻辑结构如图21,它具有3个可编程I/O口,其中个2个口(A和B)为8位口,1个口(C)为6为口。此外还有256单元的RAM和1个14位计数结构的定时器/计数器。2.1 80C51的主要性能:1、
7、8位微处理器和控制器2、内含一个一位布尔运算处理器,可直接对数据的位进行操作和运算,特别适用于逻辑控制。3、内部含有4KB的程序ROM。4、2个16位的计数/定时器。5、内部时钟振荡器6、全双工方式的串行接口(UART)7、两极中断优先权的6个中断源/5个中断矢量的中断逻辑。8、哈佛结构的存储器组织,支持高达64K为单周期指令,支持六种寻址方式。9、最高时钟振荡频率可达12MHZ,大部分指令执行时间为1s,乘、除指令为4s。2.2 信号引脚介绍:1、输入/输出口线 口8位双向口线 口8位双向口线 口8位双向口线 口8位双向口线2、ALE 地址锁存控制信号 在系统扩展时,ALE用于控制把口输出的
8、底8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于ALE是以六分之一晶振频率的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。3、外部程序存储器读选通信号 在读外部ROM时有效(低电平),以实现外部ROM单元的读操作。4、访问程序存储器控制信号 当信号为低电平时,对ROM的读操作限定在外部程序存储器;而当信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。5、RST 复位信号 当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。6、XTAL1和XTAL2外接晶体引线端 当使用芯片内部时钟时,此二引线端用
9、于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。7、VSS地线8、VCC+5V 电源2.3 信号引脚的第二功能 由于工艺及标准化等原因,芯片的引脚数目是有限的,例如MCS51系列芯片引脚数目40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了供需矛盾,所以只能“复用”,即给一些信号引脚赋予双重功能。1、常见的第二功能信号(1)、口线的第二功能信号 的8条口线都定义有第二功能,详见下表21 表21口线的第二功能 (2)、EPROM存储器程序固化所需要的信号有内部EPROM的单片机芯片(例如87C51),为写入程序需提供专门的编程脉冲和编程电源,它们也是由信
10、号引脚以第二功能的形式提供的,即:编程脉冲: 30脚(ALE/PROG)编程电压(25V):31脚(/ )(3)、备用电源引入MCS51单片机的备用电源也是以信号引脚第二功能的方式由9脚(RST/VPD)引入的。当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不丢失。2.4 引脚的第一、第二功能会不会混淆(1)、对于各种型号的芯片,其引脚的第一功能信号是相同的,所不同的只在引用的第二功能信号上。 (2)、对于9、30和31各引脚,由于第一功能信号与第二功能信号是单片机在不同工作方式下的信号,因此不会发生使用上的矛盾。 (3)、口线的第二功能信号都
11、是单片机的重要控制信号。因此在实际使用时,总是先按需要优先选用它的第二功能,剩下不用的才作为口线使用。引脚表现出的是单片机的外特性或硬件特性,在硬件方面用户只能使用引脚,即通过引脚组建系统。因此熟悉引脚是单片机硬件学习的重要内容。见图21 1图21 8051单片机芯片引脚图 第三节 设计方案比较3.1 原始方案其工作原理为主逻辑电路的工作原理介绍如下:参看图31。ICl为CD4532八输入优先权编码器,IC2为CD4042四D锁存器,IC3为CD4511七段译码驱动器,IC4为CD4514二一十六线译码器。其作用是将八路按键的输入转化成三位二进制编码,同时由GS端指示编码的有效性。没有键按下时
12、GS为低电平、输出无效的000,反之GS高电平、此时的代码有效,如果为000则是0号键的代码。之所以采用优先权编码器,是考虑如果有多个键真正的同时按下(时间上的差别微小到电路无法区分)时,稳定输出这几个键中优先权最高的键的代码。电路的关键之处是对IC2四D锁存器的巧妙利用,其CP端与Q0相连。由其功能表可知,无任何键按下时,ICl的GS端为0,故IC2的CP端为1,IC3的BI端为0,IC4的INH端为1,由于IC2的M模式控制端为1,而且各锁存器的输出跟随对应输入的变化,Q1Q3为无效的000,IC2处于一个稳态;此时IC3处于消隐状态,数码管无任何显示,IC4处于输出禁止状态,L0L7也全
13、灭。当AN0-AN7中有任何一个键按下时,ICl输出有效数据的同时其GS端变为1,该组数据(包括GS)到达IC2锁存器输出端时CP端获得下降沿,数据被锁存的同时禁止了后继输入,也就是当抢先选手的编号被锁存的同时屏蔽了后继选手的动作;此时IC3和IC4均正常工作,数码管显示抢先选面前手的编号,该选手的灯也点亮了。当主持人按下AN8时(此时AN0AN7应该无键按下,ICl的GS端为0),IC2的M端变为0,由功能表知锁存器先是处于跟随状态,其CP端恢复为1,后是CP的正跳变使锁存器转为锁存状态(即无效数据状态),IC3消隐,IC4输出禁止。然后AN8松开,M端恢复为1,锁存器又回到初始的跟随状态,
14、为下一轮抢答作好准备。图31 第一方案电路图3.2 最终方案相较第一方案而言此方案(如图32)采单片机为控制核心大大简化了系统电路结构,把各种处理的功能整合在了单片机内部。此设计方案把软件的设计作为设计重点,在原始的单一功能上添加了倒计时抢答、纠正同时按键问题等新颖的附属功能。并保留了传统的光亮报警部分。图32 最终方案电路图第四节 硬件设计介绍4.1、74LS47译码器 图33 7447引脚图7447为4-7线译码驱动器,使其与数码管各个管脚相连接显示数字,如:输出1001置7447则数码管则显示9, 其具体设定详见图33和表31。具体连接时使其使能端全部接电源。表31 7447真值表4.2
15、、LM358图34 LM358管脚图LM358为一电流放大元件,在此电路中用于为声音报警提供所需电流。其管脚如图34所示4.3 硬件部分工作原理本设计采用AT89C51单片机作为控制核心。AN0AN7为8个 抢答键。P0.0P0.7为8路抢答信号输入端。当有抢答键按下时,对应输入端为低电平“0”反之为高电平“1”。AN8为抢答启动键。在抢答开始时,按动一下AN8键,向单片机申请一次INTO中断单片机在中断服务程序中对抢答信号进行采样和识别处理。采用二位LED共阳数码管以动态扫描方式对抢答键号、违规抢答键号、倒计时时间等信息进行显示,倒计时时间由选择开关K2进行选择。本设计共有4个时间档供选择(
16、15S、30S、60S、99S)AN10为违规显示器。按动AN10键,可对一次抢答过程中出现的所有超前违规抢答的键号进行显示。K为验键功能选择开关,当需要验键时,将K闭合,可检验各抢答键能否正常工作,验键完毕将K打开。LED1为违规指示灯。当一次抢答过程存在违规抢答信号时,LED1发出多个第一有效抢答信号的处理。1、第一有效抢答信号的处理在抢答过程中往往会出现多个抢答键同时按下,或者时间差非常短。单片机无法识别它们之间的时间差,此时R2中会出现多个为1的位,既出现多个第一有效抢答信号。但每次抢答过程只能输出显示一个第一有效抢答信号,公正处理这个问题的方法是随机地挑选其中的一个。本设计采用一种随
17、机定位查找方法:将R2中各位的查找顺序排成一个环,如图35然后找一个随机数x从第x位开始按上述查找顺序环规定查找顺序找R2中为1的位。 图35 随机查找示意图第一个被找到为1的位其对应的抢答信号作为被选择的第一有效抢答信号。本设计抢答键的权目为8个随机权数可选择为07。例如:假设x3,R2=B即出现三个第一有效抢答信号。(对应AN6.AN4.AN0三个键)根据上述方法,则从D3位开始查找第一个找到为1的位是D4因而抢答键AN4被选中。2、违规抢答信号的记录抢答开始按动AN8键单片机开始INT0中断服务程序,先采样P0口并将采样值送入工作寄存器R0使LED显示“AA”字形提示开始,显然R0中寄存
18、了抢答开始前最后一瞬间各路抢答输入信号。若无违规抢答,R0值为FFH;若有违规抢答,R0值不为FFH。R0中为0的位对应的抢答键属违规。若R0=B表示AN0和AN6二路抢答键违规出现R0时表示八路抢答器全部违规,LED显示“UU”延时5s后返回主程序需重新抢答。所谓“有效抢答信号”是指从LED显示“HH”字形提示抢答开始之后的抢答信号,在抢答提示之前的抢答信号属于“违规信号”。最先到达的有效抢答信号称为“第一有效信号”。3、第一有效抢答信号的处理抢答提示之后,单片机再采样P0口,用于检测抢答信号,将采样值送入工作寄存器R1。若采样值为FFH表示还没有抢答,继续采样P0口。若R1值不为FFH表示
19、有人按下抢答键。但还应判断是否由违规抢答所导致,这只需将R1值与R0值进行比较。若R1和R0值相同表示是由违规抢答所导致,则继续采样P0口。若R1和R0值不同,则表示存在有效抢答,不再采样P0口。此时R1中含有第一有效抢答信号。为了提取R1中第一有效抢答信号,抛弃其中的违规抢答信号,可进行如下处理:将R0与R1相“异或”再与R0相“与”,并将运算送工作寄存器R2即(R0R1)R0置R2。经上述逻辑运算可知,若抢答键产生第一有效抢答信号,则R2中第i位为1(R2i=1)若R2值为0则表示没有效抢答信号,此表为抢答过程中可能出现的4种抢答信号处理过程。其具体数值详见表32表32 抢答信号处理过程表
20、抢答键R0iR1iR2i说明ANi101有效110未抢答000违规010违规4、倒计时的处理本设计有多个时间档可选择,用于留出抢答选手对抢答的反应。原设计方案有多档位可以选择,但实际应用中我只做了99秒的倒计时显示用以达到显示的效果,若要修改计时的档位只需要修改软件地址预设的数值即可。倒计时还为违规抢答的显示留出时间档,以记录和显示违规操作的键号。 第五节 软件设计系统软件由主程序和INT0中断服务组成。主程序由验键,违规显示,倒计时等功能子程序组成,系统完成初始化后循环检查各个功能当用户使用某个功能时,按下相应的按钮(或开关)单片机进入相应的功能处理。INT0中断服务程序完成抢答信号采样和识
21、别处理。5.1、主程序流程图: 图41 主程序流程图5.2 INT0中断服务程序框图:INT0中断服务程序入口采样P1口给R0R0=00H?显示“HH”提示抢答开始采样P1口给R1R2=(R0R1)R0R2=0吗?R2中1的个数为1吗?用随机定位查找法确定第一有效抢答信号抢答键号显示及光亮报讯延时5S后关显示R0=FFH?有违规信号P1.4置1无违规信号P1.4置0返回八路全部违规显示“UU”延时5S图42中断服务程序框图5.3 中断本设计以中断为基础因此这里对中断进行详细的说明。这是由于中断是一项重要的计算机技术,这一门技术在单片机中得到了充分继承。中断是工业过程控制及智能化仪器用微型机或单
22、片机应用最多的一种数据传送方式。在通常情况下,单片机执行主程序,只有当正常状态出现故障,或发出中断请求时,单片机才暂停执行主程序,转去执行或处理中断服务程序,执行完中断服务程序后,再返回到主程序继续运行。 基于资源共享原理上的中断技术,在计算机中得到了广泛的应用。中断技术能实现CPU与外部设备的并行工作,提高CPU的利用率以及数据的输入/输出效率;中断技术也能对计算机运行过程中突然发生的故障作到及时发现并进行自动处理如:硬件故障、运算错误及程序故障等;中断技术还能使我们通过键盘发出请求,随时对运行中的计算机进行中的计算机进行干扰,而不用先停机处理,然后再重新开机等等。 在单片机中,中断技术主要
23、用于实时控制。所谓实时控制,就是要求计算机能及时地相应被控对象提出的分析、计算和控制等请求,使被控对象保持在最佳工作状态,以到达预定的控制效果。由于这些控制参量的请求都是随机发出,而且要求单片机必须作出快速响应并及时处理,对此只有靠中断技术才能实现。 向CPU发出中断请求的来源称之为中断源。MCS51是一个多中断源的单片机,以80C51为例有3类共五个中断源,分别是外部中断2个,定时中断2个和串行中断1个。 在MCS51单片机中,控制寄存器共有4个,即定时器控制寄存器、中断允许控制寄存器、中断优先控制寄存器及串行口控制寄存器。这4个控制寄存器都属于专用寄存器之列。MCS51的中断优先级控制比较
24、简单,因为系统只定义高低2个优先级。各中断源的优先级由中断优先级寄存器(IP)进行设定。从中断相应到转向执行中断服务程序,完成中断所要求的操作任务,是一个很复杂的过程。中断完成后,TCON或SCON中的中断请求标志应及时清除。否则就意味着中断请求仍然存在,弄不好就会造成中断的重复查询和相应,因此就存在一个中断请求的撤销问题。MCS51是通过只有在一条指令的最后一个机器周期的查询有效才能进行中断相应来实现。它有一种单步工作方式,所谓单步执行就是由外来脉冲控制程序的执行。而外来脉冲是通过按键产生的,因此实际上单步执行就是按一次键执行一条指令。中断系统的控制1、定时器/计数器的控制寄存器(1)、定时
25、器控制寄存器(TCON) TCON寄存器既参与中断控制又参与定时控制。现对其定时功能加以介绍。其中有关定时的控制位共有4位:F0和TF1计数溢出标志位当计数器计数溢出(计满)时,该位置“1”;使用查询方式时,此位作状态位供查询,但应注意查询有效后应以软件方法及时将该位清“0”;使用中断方式时,此位作中断标志位,在转向中断服务程序时由硬件自动清“0”。R0和TR1定时器运行控制位TRO(TR1)=0 停止定时器/计数器工作TRO(TR1)=1 启动定时器/计数器工作(2)、工作方式控制寄存器(TMOD)TMOD寄存器是一个专用寄存器,用于设定两个定时器/计数器的工作方式。但TMOD寄存器不能位寻
26、址,只能用字节传送指令设置其内容。各位定义如表41: 表41 TMOD定义表位一组的结构使它不能位寻址, 一定义就是4位。从寄存器的位格式中可以看出,它的低半字节定义定时器/计数器0,高半字节定义定时器/计数器1。ATE门控位GATE=O 以运行控制位TR启动定时器GATE=1 以外中断请求信号(或)启动定时器定时方式或计数方式选择位 =0 定时工作方式 =1 计数工作方式 M1M0工作方式选择 M1M0=00 方式0 M1M0=01 方式1 M1M0=10 方式2 M1M0=11 方式3(3)、中断允许控制寄存器(IE)EA中断允许总控制位ET0和ET1定时/计数中断 定时器/计数器提供给用
27、户使用的有:8位计数器TH和TL,以及有关的控制位。这些内容只能以软件方法使用。中断源和中断标志位能够产生中断申请的部件被称为中断源。8051型单片机提供了五个中断源:两个外部中断源和三个内部中断源。每一个中断源都有一个中断申请标志位,但是串行口占有两个中断标志位。一共有六个中断标志位。表42给出了它们各自的名称。表42 中断的说明表2、定时工作方式0(1)、电路逻辑结构 方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低五位构成。TL0的高3位弃之不用。其中OCS是Oscillator(震荡器)的缩写。当C/=0时,多路开关接通振荡脉冲的12分频输出,13位计数器以此进行
28、计数,这就是所谓定时器工作方式。当C/=1时,多路开关接通计数引脚(T0),外部计数脉冲由引脚T0输入。当计数脉冲发生负跳变时,这就是所谓计数工作方式。 不管是哪种工作方式,当TL0的低五位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。 门控位GATE:当GATE=0时,由于GATE信号封锁了或门,使用TRO引脚信号无效。而这时或门输出端的高电平状态却打开了与门。因此可以由TRO(TCON)的状态来控制计数脉冲的接通与断开。这时如果TRO=1,TRO则接通模拟开关,使计数器进行加法计数,即定时器/计数器0工作。如果TRO=0,则断开模拟开关,停止计数,定时器/
29、计数器0不能工作。因此在单片机的定时或计数应用中要注意GATE位的清“0”。 当GATE=1,同时又TRO=1时,有关电路的或门和与门全都打开,计数脉冲的接通与断开由外引脚信号控制。当该信号为高电平时计数器工作;当该信号为低电平时计数器停止工作。这种情况可用于测量外信号的脉冲宽度。(2)、定时和计数应用两个前提:溢出停止和加法计数A、定时工作方式0在方式0工作方式下,当为计数工作方式时,计数值的范围是:18192(213)当为定时工作方式时,定时时间的计算公式为:(213计数初值)晶振周期12或 (213计数初值)机器周期其时间单位与晶振周期或机器周期相同(us).B、定时工作方式1方式1是1
30、6位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。其逻辑电路和工作情况与方式0完全相同。所不同的只是组成计数器的位数。当为计数工作方式时,计数值的范围是: 165536(216)当为定时工作方式时,定时时间计算公式为:(216计数初值)晶振周期12或 (216计数初值)机器周期其时间单位与晶振周期或机器周期相同。在方式0和方式1中,每当CPU响应中断后,都应该在中断服务子程序中对T0和T1初始化,即软件重装初值n。而且必须用两条指令对TH0 和TL0(TH1和TL1)分别装载初值。还应该注意到中断服务子程序执行的时间可能部分地影响定时时间。(四)、具体设计方法本设计主要是以中
31、断的方法(中断的概念已在上一节详细的介绍过了)来一步一步的实现各个部分的具体功能,以倒计时为例:1S等于毫秒而每一计时脉冲是1微秒,因此需要输入个计时脉冲方可达到1秒的时间。由于16位计数初值为0000H,需要65536个计时脉冲方可发生溢出。现在需要个脉冲,则溢出次数达15.258次。=65536*15+1696065636-16960=48570=BDC0HBDH给TH0,C0H给TL0其他部分的软件的编程方法也诸如此类,围绕中断展开,这里就不逐一进行介绍了。各个部分的设计方法详见程序附录及之前的程序流程图。第六节 结论本设计报告主要介绍了用单片机实现的抢答器的软件设计方法。系统介绍了该电
32、路的硬件构成和软件工作过程,系统以AT89C51为核心,主要采用中断控制系统,结合所学的单片机的知识,实现系统的功能要求。设计中很好的使软、硬件相结合,虽然还存一些问题但产品基本上达到了设计的要求。在设计过程中,通过大量的查阅资料,认真研究教材,并向指导老师请教很多问题,使自己对单片机有了更为深刻的理解,在做软件时,仔细的分析硬件电路,画出程序流程图,培养了我的耐性和刻苦钻研的精神。参考文献1 周航慈编. 单片机应用程序设计技术(修订版)M.北京:北京航空航天大学出版社 20022 徐爱卿编.单片微型计算机应用和开发系统M.北京:北京航空航天大学出版社,1998.3 戴梅芳编.微型计算机技术及
33、应用M.北京:清华大学出版社,1996.4 李广弟,朱月秀,王秀山编.单片机基础M. 北京:北京航空航天大学出版社,2001.5 吴金戌. 8051单片机实践与应用M.北京:清华大学出版社,2003年6 李朝青. PC机及单片机数据通信技术M.北京:航空航天大学出版社,2000 7 王福瑞编. 单片微机测控系统设计大全M.北京:北京航航空航天大学出版社,19988 何立民编. MCS51系列单片机应用系统设计系统配置与接口技术.M北京:北京航空航天大学出版社, 1996。 附录:1、主程序ORG 00HJMP STARTORG 0BHJMP TIMERSTART:Mov TMOD,#01H M
34、ov TH0,#0BDH Mov TL0,#0C0H Mov IE,#82H Mov 20H,#10 Mov 21H,#10 Mov R7,#10 CLR TR0A4: JNB P1.0,B0_0 JNB P1.1,B1_1 JNB P1.2,B2_2 JNB P1.3,B3_3 JNB P1.4,B4_4 JNB P1.5,B5_5 JNB P1.6,B6_6JNB P1.7,B7_7B0_0:AJMP B0B1_1:AJMP B1B2_2:AJMP B2B3_3:AJMP B3B4_4:AJMP B4B5_5:AJMP B5B6_6:AJMP B6B7_7:AJMP B7 Mov p2,#
35、10H CALL DELAY ANL P2,#00H Mov P2,#20H CALL DELAY ORL P2,#00H JB P3.0,A4 SETB TR0A1: Mov A,20H Mov DPTR,#TABLE Movc A,A+DPTR ADD A,#10H Mov P2,A CALL DELAY ANL P2,#00H Mov A,21H Mov DPTR,#TABLE Movc A,A+DPTR ADD A,#20H Mov P2,A CALL DELAY ANL P2,#00H Mov A,#01H CJNE A,21H,A1 Mov A,#01 CJNE A,20H,A1
36、JMP STARTTIMER:DJNZ R7,A2 Mov TH0,#0BDH Mov TL0,#0C0H Mov R7,#16 DJNZ 20H,A2 Mov 20H,#10 DJNZ 21H,A2 MOV 21H,#10A2: RETIB0:MOV P2,#11H ACALL DELAY AJMP A4B1:MOV P2,#12H ACALL DELAY AJMP A4B2:MOV P2,#13H ACALL DELAY AJMP A4B3:MOV P2,#14H ACALL DELAY AJMP A4B4:MOV P2,#15H LCALL DELAY LJMP A4B5:MOV P2,#16H ACALL DELAY AJMP A4B6:MOVX P2,#17H LCALL DELAY LJMP A4B7:MOV P2,#18H ;ACALL DELAY ;ALJMP A4 DELAY:MOV R6,#248 DJNZ R6,$ RETTABLE:DB 00H,00H,01H,02H,03H,04H DB 05H,06H,07H,08H,09H END