模块六 单片机的定时器计数器.doc_第1页
模块六 单片机的定时器计数器.doc_第2页
模块六 单片机的定时器计数器.doc_第3页
模块六 单片机的定时器计数器.doc_第4页
模块六 单片机的定时器计数器.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块六 单片机的定时器/计数器【教学聚焦】知识目标:1、了解单片机的中断定时计数器系统的结构2、掌握单片机的定时计数器控制3、掌握在程序设计中应用定时计数器的方法技能目标:1、能够熟悉单片机的定时计数器2、能够掌握输入/输出的控制方式3、能在程序设计中应用中断方式【课时建议】6课时教学重点:单片机的定时计数器教学难点:应用中断定时计数器方式进行程序设计【课堂随笔】项目6.1 定时器/计数器6.1.1定时器/计数器概述之前我们学习过用延时子程序实现一段时间的定时功能,但这种方法有它的局限性,在定时的过程中因延时子程序的运行会一直占用CPU,在延时时间段内单片机无法再做其它的事情了。如果我们需要用到一种不占用CPU的定时方法,就要用到单片机自带的定时/计数器进行定时工作。80C51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套 。器属于五个中断源包含两个外部中断,两个定时/计数器,一个串行中断。图1如图1所示,80C51单片机共有五个中断源,每个中断源都可根据相应条件产生中断请求,中断请求会将相应的标志位置1,当单片机允许使用中断源时,会每过一个指令周期对相应中断标志位进行一次查询。如发现该标志位为1,则会停下当前工作转到中断子程序处进行程序处理,之后再返回刚才中断处继续执行。从中断请求的发生到处理完中断返回这一过程成为一个完整的中断过程。图2定时/计数器的原理图如图2所示,单片机共有两个定时计数器,每一个定时/计数器的主要组成部分是两个连续的8位的存储单元,这两个存储单元分为低8位和高8位,低位可向高位进位。在定时计/数器进行定时工作时,每过一个机器周期(6MHZ晶振-2us,12MHZ晶振-1us),定时计数器的低8位存储单元会自动加一;当低8位(TL0或TL1)加满溢出后会向高8位存储单元(TH0或TH1)进位;当高、低两个8位存储单元全部加满溢出后会将与之对应的中断标志位(TF0或TH1)置1;当单片机允许使用定时/计数器这一中断源时,CPU会每过一个指令周期对与被使用的定时/计数器相应的中断标志位进行一次查询。如发现中断标志位为1,则说明定时到时,会停下当前工作,进入中断子程序进行相应的中断处理,之后返回原来的工作位置继续之前的工作。因此如果使用定时/计数器进行定时工作,在定时到时之前的时间里CPU可以不间断其他的程序运行,当定时到时后,因中断请求被CPU查询到,这时CPU会短暂地停下当前的程序任务转而执行中断子程序,之后返回原来的位置继续工作。尽管用定时/计数器进行定时也会中断程序运行,但子程序的内容有限,而且执行速度较快,往往几十us即可完成,故不会对原来的程序造成什么影响。6.1.2定时器/计数器控制分析AT89S51单片机内部定时器/计数器结构如图3所示。内部设有两个16位的可编程定时器/计数器。可编程是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 图3 定时/计数器的内部结构从图3可看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。定时/计数器的的控制就是要对这些寄存器进行相应的赋值,使定时/计数器按照需要完成初始化,起到定时/技术作用。6.1.3定时器/计数器的工作模式 定时计数器在使用时首先要对其工作模式进行设定,与之有关的特殊功能寄存器在上一节已经有了介绍,下面我们就对其各自的作用做详细的介绍。1. 定时/计数器控制寄存器TCONTCON是定时/计数器控制寄存器,它包含两个定时/计数器的溢出中断标志及外部中断和的中断标志。,TCON的内部结构如表1所示,TCON位定义如表2所示。 表1 TCON位格式TCOND7D6D5D4D3D2D1D0位符号TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H 表2 TCON位定义位符号位功能描述TF1定时/计数器T1溢出标志位。当定时/计数器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。TR1定时/计数器T1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。IE1外部中断请求标志。IT1外部中断触发方式选择位。 IT1=0,低电平触发;IT1=1,下降沿触发。TF0定时器/计数T0溢出标志,其功能及操作情况同TF1。TR0定时/计数器T0运行控制位,其功能及操作情况同TR1。IE0外部中断请求标志。IT0外部中断触发方式选择位,其功能及操作情况同IT1。2. 定时/计数器工作模式控制寄存器TMOD定时器方式控制寄存器TMOD,其结构如表3所示。 表3 TMOD格式位数D7D6D5D4D3D2D1D0位符号GATEC/M1M0GATEC/M1M0定时器T1T0TMOD的高4位用控制于T1,低4用于控制T0,每一位的具体作用如下:GATE:门控制位。GATE和软件控制位TR0(或TR1)、外部引脚信号(或)的状态,共同控制定时器计数器的打开或关闭。C/:定时器计数器选择位。C/1,为计数器方式;C/0,为定时器方式。M1M0:工作方式选择位,定时器计数器工作方式由M1M0设定。具体如表4所示。 表4 定时/计数器的工作方式M1 M0工作方式功能描述0 0工作方式013位计数器0 1工作方式116位计数器1 0工作方式2自动装入初值的8位计数器1 1工作方式3定时器0:分成两个8位计数器,定时器1:停止计数3. 中断允许寄存器IEIE控制CPU总断源的允许或禁止以及每个中断源是否允许中断。IE内部结构如表5所示,IE位定义如表6所示。IED7D6D5D4D3D2D1D0位符号EAESET1EX1ET0EX0位地址AFHAEHADHACHABHAAHA9HA8H表5 IE格式 表6 IE位定义IE位符号功能描述EAEA=0:关所有中断EA=1:开所有中断ESES=0:关串行通信中断ES=1:开串行通信中断ET1ET1=0:关T1中断ET1=1:开T1中断EX1EX1=0:关中断EX1=1:开中断ET0ET0=0:关T0中断ET0=1:开T0中断EX0EX0=0:关中断EX0=1:开中断 4. 中断优先寄存器IPIP用来控制各中断源优先级的选择,即设定中断源的中断响应优先级别,IP内部结构如表7所示,IP位定义如表8所示。 表7 IP位格式IPD7D6D5D4D3D2 D1D0位符号 PSPT1PX1PT0PX0位地址BFHBEHBDHBCHBBHBAHB9HB8H 表8 IP位定义IP符号IP定义PSPS=0:串行口中断低优先级PS=1:串行口中断高优先级PT1PT1=0:定时/计数器T1中断低优先级PT1=1:定时/计数器T1中断高优先级PX1PX1=0:外部中断中断低优先级PX1=1:外部中断中断高优先级PT0PT0=0:定时/计数器T0中断低优先级PT0=1:定时/计数器T0中断高优先级PX0PT1=0:外部中断中断低优先级PT1=1:外部中断中断高优先级单片机复位后,IP低五位全部清零,并将所有中断源设置为低优先级中断。如果几个同优先级的中断源同时向CPU申请中断,哪一个申请得到服务,取决于它们在CPU内部登记排队的序号。CPU通过内部硬件查询登记序号,按自然优先级响应各个中断请求。其内部登记序号是由硬件形成的,先后顺序如下: T0T1RI/TI 6.1.4定时器/计数器的容量在使用AT89S51的定时器计数器之前,一般完成以下几个步骤: 1) 确定定时/计数器工作方式,对TMOD赋值; 2) 计算定时/计数器的初值,对TH0、TL0或TH1、TL1赋值; 3) 开放CPU、定时/计数器中断,对IE中的EA、ET0、ET1赋值; 4) 启动定时器计数器,对TCON中TRl或TR0位赋值。 下面我们来学习定时/计数器的初值的具体方法:因为在不同工作方式下计数器位数不同,因而最大计数值也不同。现假设最大计数值为M,那么各方式下的最大值M值如下:方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:定时器0分成两个8位计数器,所以两个M均为256。因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算:X=M-N/(12/fosc)其中N为定时时间,fosc为晶振频率。在实际应用中经常采用16位的方式1,下面以16位的方式1说明如何确定初值。例如,T0选用方式1用于定时,外接晶振频率为12MHz,定时时间为10ms,计算过程如下:方式1时,M=65536,定时时间N=1010-3s,fosc=12MHz=12106HzX=M-N/(12/fosc)=65536-1010-3/(12/12106) =65536-10000=55536拆分X的高八位送TH0,低八位送TL0:MOV TH0,#0D8H;MOV TL0,#0F0H;项目62应用项目五 电子钟的制作及应用6.2.1定时器/计数器应用步骤经过以上学习我们知道要想使用定时/计数器必须先对其进行初始化,流程图如图4。 开始选择模式置初值开启中断启定时结束 TMOD TH0、TL0、TH1、TL1 IE TR0、TR1图4 定时/计数器初始化流程在初始化过程的每一步所对应的特殊功能寄存器已经列出,下面我们一起来学习怎样完成定时/计数器初始化程序的编写。定时器/计数器初始化函数及中断服务函数格式:T0方式1:以10ms定时时间、12MHz晶振为例ORG 0000HLJMP STARTORG OO13HLJMP INTT0ORG 0040HLCALL CSH.SJMP$;ORG 0100HCSH:MOV EA,01H; MOV ET0,01H; MOV TMOD,01H; MOV TH0,0D8H; MOV TL0,0F0H; MOV TR0,01H;RETORG 0200HINTT0:MOV TH0,0D8H; MOV TL0,0F0H; . RETI6.2.2电子钟系统制作分析1.任务要求六位数码显示,采用动态扫描方式,两位显示时位,两位显示分位,两位显示秒位,初始时间为23点58分46秒,如图5所示。图5 数字钟电路图2.任务分析在本任务中要解决两个问题,一个是显示问题,一个是定时问题。断码显示器的使用在之前的学习中我们已经掌握了,在本任务中我们要同时显示六位不同的数字,但是80C51单片机只有4组I/O驱动引脚,无法同时对六位断码显示器输出显示数据,这就需要用到动态扫描的方法来完成显示功能。下面以两位数显示为例来说明动态扫描在断码显示中的应用。电路图如图6所示。图6 动态扫描显示电路 ORG 0000H LJMP START ORG 0030H START: MOV R0,#40H ;40H.41H是显示缓冲区,依次存放十,个位 MOV A,#06H ;十位 MOV R0,A ; INC R0 ;个位 MOV A,#00H MOV R0,A DS1: MOV R0,#40H ;置显示缓冲区首址 MOV R2,#02H ;置扫描初值,点亮最左边的LED6DS2: MOV A,R0 ;得到的段显码输出到段数据口 ACALL TABLE MOV P0,A MOV A,R2 ;向位数据口P1输出位显码 CPL A MOV P2,A MOV R3,#0ffH ;延时一小段时间DEL: NOP DJNZ R3,DEL INC R0 ;显示缓冲字节加一 CLR C MOV A,R2 RRC A ;显码右移一位 MOV R2,A ;最末一位是否显示完毕?,如无则 JNZ DS2 ;继续往下显示 MOV A,TBF MOV B,#10 DIV AB MOV 40H,A MOV A,B MOV 41H,A SJMP DS1TABLE: INC A ;取与数字对应的段码 MOVC A,A+PC RET DB 0EDH,48H,0E6H,6EH,4BH DB 2FH,0AFH,68H,0EFH,6FHEND 图中使用两位共阳极段码显示器,P1口用来提供显示断码,P2.0、P2.1两位引脚用来提供显示器位选择码。在显示时,先由P2.0引脚输出高电平,P2.1引脚输出低电平选择个位显示器工作,这时让P1口输出“0”的断码使各位显示内容为“0”。这时开始一小段时间的延时(在视觉残留允许范围内,如10ms),之后改变P2.0、P2.1、P1的值使十位显示器工作,并显示“6”,再加入一小段时间的延时。这时只要重复上面的过程就可以让两位显示器交替显示,达到同时显示“60”的动态显示效果了。程序如下。在动态扫描显示的时候,程序进入了无限循环的状态,无法在进行其他的工作了,要想完成一秒钟的定时以及到时后的显示内容修改工作就要中断当前的循环工作进程,在1S到时的时候进行中断,处理完显示内容修改后再返回动态扫描的显示程序中,这样就可以实现任务要求的数字钟设计了。下面以60S倒计时为例,编程实现动态扫描与定时/计数器中断的使用方法。BUF EQU 23H ;存放计数值 TBF EQU 22H ;存放显示值 ORG 0000H LJMP START ORG 000BH LJMP CLOCK ORG 0030H START: MOV R0,#40H ;40H.41H是显示缓冲区,依次存放十,个位 MOV A,#06H ;十位 MOV R0,A ; INC R0 ;个位 MOV A,#00H MOV R0,A MOV TMOD,#01H ;定时器0初始化为方式1 MOV TH0,#0D8H ;置时间常数,延时0.1秒 MOV TL0,#0F0H MOV BUF,#00H ;置0 MOV TBF,#60 SETB ET0 SETB EA SETB TR0DS1: MOV R0,#40H ;置显示缓冲区首址 MOV R2,#02H ;置扫描初值,点亮最左边的LED6DS2: MOV A,R0 ;得到的段显码输出到段数据口 ACALL TABLE MOV P0,A MOV A,R2 ;向位数据口P1输出位显码 CPL A MOV P2,A MOV R3,#0ffH ;延时一小段时间DEL: NOP DJNZ R3,DEL INC R0 ;显示缓冲字节加一 CLR C MOV A,R2 RRC A ;显码右移一位 MOV R2,A ;最末一位是否显示完毕?,如无则 JNZ DS2 ;继续往下显示 MOV A,TBF MOV B,#10 DIV AB MOV 40H,A MOV A,B MOV 41H,A SJMP DS1TABLE: INC A ;取与数字对应的段码 MOVC A,A+PC RET DB 0EDH,48H,0E6H,6EH,4BH DB 2FH,0AFH,68H,0EFH,6FHCLOCK: MOV TL0,#0D0H ;置时间常数 MOV TH0,#0F0H PUSH PSW PUSH ACC INC BUF ;计数加一 MOV A,BUF ;计到10否?没有则转到QUIT退出中断 CJNE A,#02H,QUIT MOV BUF,#00H ;置初值 MOV A,TBF DEC A ; MOV TBF,A CJNE A,#00H,QUIT CLR TR0QUIT: POP ACC POP PSW RETI ;中断返回END6.2.3编制程序将这样的动态扫描内容进行扩充即可实现六位数的动态扫描显示效果。在上一节两位数码显示中已经学习了如何显示、如何产生1秒计时,数字钟在此基础上又增加了分位和时位,我们知道当秒位计够60秒时,自身归0,同时让分位上加1,当分位计够60时,分为归0,时位加1,当时位计够24时,时位归0,数字钟的程序就是按照这样的逻辑关系进行编写的。初始化图8数字钟流程图动态扫描、数码显示产生秒计时计够60分无限循环计够60秒计够24时秒归0,分加1分归0,时加1时归0秒加1中断返回程序开始 YYYNNNa 主函数b 定时器T0中断函数BUF EQU 23H ;存放计数值SBF EQU 22H ;存放秒值MBF EQU 21H ;存放分值HBF EQU 20H ;存放时值CSEG AT 0000H LJMP STARTCSEG AT 01BH LJMP CLOCKCSEG AT 0030HSTART: MOV R0,#40H ;40H-45H是显示缓冲区,依次存放 时分秒 MOV A,#02H ;时高位 MOV R0,A ; INC R0 ;时、底位 MOV A,#03H MOV R0,A INC R0 ;分高位 MOV A,#05H MOV R0,A INC R0 ;存分低位 MOV A,#08H MOV R0,A INC R0 ;秒高位 MOV A,#04H MOV R0,A INC R0 ;秒低位 MOV A,#06H MOV R0,A MOV TMOD,#10H ;定时器1初始化为方式1 MOV TH1,#0D8H ;置时间常数,延时0.1秒 MOV TL1,#0F0H MOV BUF,#00H ;置0 MOV HBF,#23 MOV SBF,#58 MOV MBF,#46 SETB ET1 SETB EA SETB TR1DS1: MOV R0,#40H ;置显示缓冲区首址 MOV R2,#20H ;置扫描初值,点亮最左边的LED6DS2: MOV A,R0 ;得到的段显码输出到段数据口 ACALL TABLE MOV P0,A MOV A,R2 ;向位数据口P1输出位显码 CPL A MOV P1,A MOV R3,#0FFH ;延时一小段时间DEL: NOP DJNZ R3,DEL INC R0 ;显示缓冲字节加一 CLR C MOV A,R2 RRC A ;显码右移一位 MOV R2,A ;最末一位是否显示完毕?,如无则 JNZ DS2 ;继续往下显示 MOV R0,#45H MOV A,SBF ;把秒值分别放于44H,45H中 ACALL GET MOV A,MBF ;把分值分别放入40H,41H中 ACALL GET MOV A,HBF ACALL GET SJMP DS1 ;转DS1从头显示起TABLE: INC A ;取与数字对应的段码 MOVC A,A+PC RET DB 3FH DB 06H DB 5BH DB 4FH DB 66H DB 6DH DB 7DH DB 07H DB 7FH DB 6FH DB 40HGET: MOV R1,A ;把从时。分或秒字节中取来的值的高 ANL A,#0FH ;位屏蔽掉,并送入缓冲区 MOV R0,A DEC R0 MOV A,R1 ;把时。从分或秒字节中取来的值的低 SWAP A ;位屏蔽掉,并送入缓冲区 ANL A,#0FH MOV R0,A DEC R0 ;R0指针下移一位 RETCLOCK: MOV TL1,#0D8H ;置时间常数 MOV TH1,#0F0H PUSH PSW PUSH ACC CPL P1.0 CPL P1.1 CPL P1.2 CPL P1.3 INC BUF ;计数加一 MOV A,BUF ;计到10否?没有则转到QUIT退出中断 CJNE A,#0AH,QUIT MOV BUF,#00H ;置初值 MOV A,SBF INC A ;秒值加一,经十进制调整后放入 DA A ;秒字节 MOV SBF,A CJNE A,#60H,QUIT ;计到60否?没有则转到QUIT退出中断 MOV SBF,#00H ;是,秒字节清零 MOV A,MBF INC A ;分值加一,经十进制调整后放入 DA A ;分字节 MOV MBF,A CJNE A,#60H,QUIT ;分值为60否?不是则退出中断 MOV MBF,#00H ;是,清零 MOV A,HBF INC A DA A MOV HBF,A CJNE A,#24H,QUIT MOV HBF,#00HQUIT: POP ACC POP PSW RETI ;中断返回END6.2.4系统调试在Proteuse软件上自行设计电路图,并根据自己设计的电路图在Keilc软件中编译程序进行调试,观察仿真运行结果。在程序中修改使数字钟的显示初始值为18点26分56秒,在进行运行观察变化。项目63应用项目六 智能抢答器的制作及应用6.3.1电路原理分析及设计抢答器可同时供不大于8名选手或8个代表队参加比赛,各用一个抢答按钮,按钮的编号与选手的编号是相对应的,分别是S1、S2、S3、S4、S5、S6、S7、S8;给节目主持人设置二个控制按钮开关,用来控制系统的清零和抢答的开始;抢答开始后,若有选手按动抢答按钮,在数码管上显示出选手的编号,同时蜂鸣器给出音响提示,禁止其他选手抢答,优先抢答选手的编号一直保持到主持人将系统清零为止。当节目主持人启动开始键后,要求定时器立即减计时,并用显示器显示,同时蜂鸣器发出短暂的声响,声响持续时间 0.5S,参赛选手在设定的时间内抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间, 并保持到主持人将系统清零;如果定时抢答的时间不大于5S后,却没有选手抢答时,系统持续报警,直到定时抢答的时间为零,本次抢答无效,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示FFF 犯规处理;如果主持人没按开始键,就有选手抢答,则显示选手编码,并持续报警;如果已经有选手抢答了,别的选手则按键无效。直到主持人重新复位按下开始键为止,电路图如图8所示。图8 抢答器电路6.3.2硬件系统制作分析在制作硬件电路时应注意各元件的工作电压以及工作电流条件,在相应的电路中应添加适当的限流电阻,同时要注意P0引脚在使用时应连接上拉电阻。为了使蜂鸣器具有足够的驱动电流,在P3.7引脚增加了三极管做电流放大。同时为了使设计电路图符合实际电路需求,在电路图中增加了上拉电阻及缓存器。6.3.3编制程序 ORG 0000H LJMP START ORG 0003H LJMP ESS ;跳转到外部中断0中断子函数 ORG 00A0HSTART: SETB EA SETB EX0 SETB IT0 ;外部中断初始化LP: MOV R2,#00H INC R2 JB P1.0,LP1 LCALL LOPLP1: INC R2 JB P1.1,LP2 LCALL LOPLP2: INC R2 JB P1.2,LP3 LCALL LOPLP3: INC R2 JB P1.3,LP4 LCALL LOPLP4: INC R2 JB P1.4,LP5 LCALL LOPLP5: INC R2 JB P1.5,LP6 LCALL LOPLP6: INC R2 JB P1.6,LP7 LCALL LOPLP7: INC R2 JB P1.7,LP8 LCALL LOPLP8: LJMP LP ;按键判断LOP: MOV 56H,#02HLP16: MOV 51H,#10D MOV 52H,#10H CLR P3.7 ;蜂鸣器报警LP10: LCALL DELAY DJNZ 51H,LP10 SETB P3.7 ;蜂鸣器结束报警LP15: LCALL DELAY DJNZ 52H,LP15 DJNZ 56H,LP16 MOV DPTR,#TAB MOV A,R2 MOVC A,A+DPTRLP11: MOV P2,#01H MOV P0,A LJMP LP11 RETESS: MOV P2,#00H CLR P3.7 MOV TMOD,#00000001B MOV R3,#0AHL12: MOV R4,#14H L11:MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TAB SETB TR0 ;定时/计数器0初始化 MOV A,R3 MOV B,#0AH DIV AB MOVC A,A+DPTR MOV P2,#01H MOV P0,A LCALL DLAY MOV A,B MOVC A,A+DPTR MOV P2,#02H MOV P0,A LCALL DLAY L10:JNB TF0,L10 ;查询方式进行定时/计数器中断处理 CLR TF0 SETB P3.7 DJNZ R4,L11 DEC R3 CJNE R3,#0FFH,L19 LJMP L18L19: CJNE R3,#00H,L12 MOV 51H,#50D CLR P3.7L15: LCALL DELAY DJNZ 51H,L15 SETB P3.7 MOV P2,#00H LJMP L18L18: RETIDLAY: MOV 53H,#05HL14: MOV 54H,#0F0HL13: MOV R2,#00H INC R2 JB P1.0,L1 LCALL LOOPL1: INC R2 JB P1.1,L2 LCALL LOOPL2: INC R2 JB P1.2,L3 LCALL LOOPL3: INC R2 JB P1.3,L4 LCALL LOOPL4: INC R2 JB P1.4,L5 LCALL LOOPL5: INC R2 JB P1.5,L6 LCALL LOPL6: INC R2 JB P1.6,L7 LCALL LOOPL7: INC R2 JB P1.7,L8 LCALL LOOPL8: DJNZ 54H,L13 DJNZ 53H,L14 RETLOOP: MOV TMOD,#00010000B MOV R5,#11HL22: MOV R6,#14HL21: MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 ;定时/计数器1初始化处理 MOV DPTR,#TAB MOV A,R2 MOVC A,A+DPTRL16: MOV P2,#01H MOV P0,A LCALL DELAY CJNE R5,#0FH,L24 LJMP L25L24: JC L25 LJMP L20 L25: MOV A,R5 MOV B,#0AH DIV AB MOV DPTR,#TAB MOVC A,A+DPTR MOV P2,#04H MOV P0,A LCALL DELAY MOV A,B MOV DPTR,#TAB MOVC A,A+DPTR MOV P2,#08H MOV P0,A LCALL DELAY MOV P2,#02H MOV P0,#0BFH LCALL DELAYL20: JNB TF1,L20 ;查询方式进行定时/计数器中断处理 CLR TF1 DJNZ R6,L21 DEC R5 CJNE R5,#0FFH,L22 MOV 57H,#10H CLR P3.7L27: LCALL DELAY DJNZ 57H, L27 SETB P3.7 MOV R3,#00H MOV P2,#00H RETDELAY: MOV 61H,#10D D0: MOV 62H,#248D D1: DJNZ 62H,D1 DJNZ 61H,D0 RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND6.3.4系统调试在Proteuse软件上自行绘制电路图,并根据自己设计的电路图在Keilc软件中编译程序进行调试,观察仿真运行结果。调试运行以下功能:1 选手抢答时是否触发报警提示。2 选手正确抢答后答题时间是否正确倒计时显示,倒计时到时后是否自动清0。3 主持人按下复位按钮后是否进入初始状态。4 在一名选手抢答后,其他选手是否还可以继续抢答。重点串联:定时/计数器的工作原理及使用方法掌握定时/计数器的内部结构及工作原理,掌握定时计/数器的初始化设置方法使用定时/计数器制完成作数字钟及智能抢答器的设计制作扩展定时/计数器的使用方法,完成智能温度计的设计制作基础训练:一、 单选题1、51单片机有( )个中断源。A、2个 B、3个 C、4个 D、5个2、51单片机有( )个定时/计数器。A、1个 B、2个 C、3个 D、4个3、51单片机的定时/计数器0在作为定时器使用时有( )种工作方式。A、1 B、2 C、3 D、4二、填空题1、选择定时/计数器的工作方式需对 特殊功能寄存器进行赋值。2、定时/计数器0的中断入口地址是 H。3、对定时/计数器0初始化时需对 和 两个特殊功能寄存器赋定时/计数初始值。三、判断题1、51单片机的定时/计数器的定时时间只受到初始值的影响( )。2、T0和T1的工作方式都有4种( )。3、T0和T1不可以同时工作( )。技能训练【课时建议】 2课时技能训练6.1:设计DS18B20与单片机的连接实验;一、 DS18B20简介1DS18B20基本知识DS18B20数字温度计是DALLAS公司生产的1Wire,单总线器件,具有线路简单、体积小的特点。用它来组成一个测温系统,线路简单,在一根通信线,可以接多个的相同数字温度计,十分方便。1、DS18B20产品的特点(1)、只占用一个引脚即可实现通信。(2)、每个DS18B20器件都有一个独一无二的序列号。(3)、实际应用中不需要外连接部任何元器件即可实现测温。(4)、测量温度范围在55到125之间。(5)、数字温度计的分辨率用户可以从9位到12位选择。(6)、内部有温度上、下限告警设置。2、DS18B20的引脚介绍TO92封装的DS18B20的引脚排列见图1,其引脚功能描述见表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论