资源预览内容
第1页 / 共66页
第2页 / 共66页
第3页 / 共66页
第4页 / 共66页
第5页 / 共66页
第6页 / 共66页
第7页 / 共66页
第8页 / 共66页
第9页 / 共66页
第10页 / 共66页
亲,该文档总共66页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
情境三简易秒表n子情境一子情境一 中断系统中断系统 n子情境二子情境二 定时定时/计数器计数器 n子情境三子情境三 基于单片机控制的秒表基于单片机控制的秒表151单片机学习-第3章简易秒表的设计子情境一子情境一 中断系统中断系统n一、任务目标n通过学习使读者了解中断的基本概念,中断的执行过程,中断的控制方法和具有中断的单片机控制程序编写。n二、任务分析n当CPU正在处理某项事务的时候,如果系统出现了某些急需处理的异常情况或特殊的请求,这时要求CPU暂停正在处理的工作,而转去处理这个随机发生的紧急或特殊事件,待该事件处理完后,自动回到原来被中断的地方,继续执行被中断的程序,这个过程称做中断。251单片机学习-第3章简易秒表的设计n51系列单片机中断系统,是众多8位单片机中功能较强的一种,可以提供5个中断源,分别是外部中断0、外部中断1、定时/计数器T0、定时/计数器T1和串行口中断。n中断处理过程由以下几个阶段完成。n(1)中断请求n当中断源发出中断请求时,将相应的中断请求标志位置“1”。子情境一子情境一 中断系统中断系统351单片机学习-第3章简易秒表的设计n(2)中断允许控制n51系列单片机有专门的中断允许寄存器IE对中断源的开放或屏蔽进行两级控制。当IE的控制位EA=“0”时,屏蔽所有的中断申请;当EA=“1”时,CPU开放允许控制的第一级,但5个中断源是否响应中断请求,还要看IE中与这5个中断源直接对应的中断允许控制位的状态,当对应位的状态为“1”时,则允许响应相应的中断请求,否则不响应中断请求。子情境一子情境一 中断系统中断系统451单片机学习-第3章简易秒表的设计n(3)中断查询nCPU查询TCON和SCON中的各个中断标志位的状态,确定有哪个中断源发生请求,查询时根据中断优先级控制寄存器IP的状态,按优先级顺序进行,如果查询某个中断源所对应的中断标志位为“1”,表明有中断请求发生,在中断允许的情况下,紧接着从下一机器周期开始进行中断响应。子情境一子情境一 中断系统中断系统551单片机学习-第3章简易秒表的设计n(4)中断响应n1)中断响应条件n51系列单片机CPU响应中断的条件有以下3个。n有中断源发出中断请求。n中断总允许控制位EA=“1”,即CPU允许所有中断源申请中断。n申请中断的中断源其中断允许控制位为“1”,即该中断源可以向CPU申请中断。n当以上3个条件都满足时,中断请求才可能被CPU响应。子情境一子情境一 中断系统中断系统651单片机学习-第3章简易秒表的设计n2)中断响应过程n当中断源发出中断请求后,满足中断响应条件,且不存在受阻情况时,CPU将立即响应该中断请求,如有多个中断源同时提出中断请求时,将按中断源的优先级别做出响应,先响应高优先级的中断源,后响应低优先级的中断源。在响应中断请求后,先将断点地址压入堆栈保存,以备中断结束后返回原程序;接着将相应中断处理程序的入口地址送入程序计数器PC,使程序转向该中断入口地址,并执行中断服务程序。子情境一子情境一 中断系统中断系统751单片机学习-第3章简易秒表的设计n(5)中断处理n中断处理分保护现场、中断服务、恢复现场和中断返回4个步骤。保护现场是指中断响应后,在中断服务程序的开头采用PUSH指令将服务程序中要使用的累加器、通用寄存器中的数据压入堆栈。在现场保护时应关闭中断,预防正在保护数据时又响应中断级别更高(中断嵌套)的中断请求,而丢失数据;然后紧接着根据中断事件的要求编写中断服务程序;在中断服务结束后,立即关闭中断,然后通过POP指令恢复现场;最后用中断返回指令RETI,硬件自动将存放在堆栈中的断点地址弹出至PC,使CPU继续执行原来的程序。子情境一子情境一 中断系统中断系统851单片机学习-第3章简易秒表的设计n三、相关知识n下面对中断控制中用到的4个专用寄存器的相关知识进行讲解。n51系列单片机为用户提供了4个专用寄存器:定时/计数器控制寄存器TCON、串行口控制寄存器SCON、中断允许控制寄存器(IE)、中断优先级控制寄存器IP,来控制单片机的中断系统。子情境一子情境一 中断系统中断系统951单片机学习-第3章简易秒表的设计n1定时/计数器控制寄存器n该寄存器用于锁存外部中断请求标志以及定时/计数器的溢出中断请求标志等。进行字节操作时,寄存器地址为88H;按位操作时,各位的地址为88H8FH。寄存器各位的含义及位地址如表4-2所示。位地址8FH8EH8DH8CH8BH8AH 89H88H位符号TF1TR1TF0TR0IE1IT1IE0IT0子情境一子情境一 中断系统中断系统表4-2定时/计数器控制寄存器1051单片机学习-第3章简易秒表的设计n其中与中断有关的控制位共4位。n(1)IT0和IT1外部中断T0和T1的中断请求触发方式控制位nIT0(IT1)=1:脉冲触发方式,下降沿有效(下降沿时产生中断请求)。nIT0(IT1)=0:电平触发方式,低电平有效(低电平时产生中断请求)。n(2)IE0和IE1外中断请求标志位n当CPU采样到(或)端出现有效中断请求信号时,IE0(IE1)位由硬件置1,当中断响应完成转向中断服务程序时,由硬件把IE0(或IE1)清0。n高4位的功能在本章第二节中讲解。子情境一子情境一 中断系统中断系统1151单片机学习-第3章简易秒表的设计n2串行口控制寄存器n进行字节操作时,寄存器地址为98H;按位操作时,各位的地址为98H9FH。寄存器的各位含义及位地址如表4-3所示。 位地址 9FH 9EH9DH9CH9BH9AH99H98H位符号 SM0SM1SM2RENTB8RB8TIRI表4-3串行口控制寄存器子情境一子情境一 中断系统中断系统1251单片机学习-第3章简易秒表的设计n其中与中断有关的控制位共两位。n(1)TI串行口发送中断请求标志位n当发送完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。n(2)RI串行口接收中断请求标志位n当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。串行中断请求由TI和RI的逻辑或得到,即无论是发送标志还是接收标志,都会产生串行中断请求。子情境一子情境一 中断系统中断系统1351单片机学习-第3章简易秒表的设计n3中断允许控制寄存器n进行字节操作时,寄存器地址为0A8H;按位操作时,各位的地址为0A8H0AFH。寄存器的各位含义及位地址如表4-4所示。 表4-4中断允许控制寄存器位地址AFHAEHADHACHABHAAHA9HA8H位符号EA / /ESET1EX1ET0EX0子情境一子情境一 中断系统中断系统1451单片机学习-第3章简易秒表的设计nn其中与中断有关的控制位共6位。n(1)EA中断允许总控制位nEA=0:中断总禁止,禁止所有中断。nEA=1:中断总允许,总允许后中断的禁止或允许由各中断源中断允许控制位进行设置。n(2)EX0和EX1外部中断0和外部中断1的中断允许控制位。nEX0(EX1)=0:禁止外部中断。nEX0(EX1)=0:允许外部中断。子情境一子情境一 中断系统中断系统1551单片机学习-第3章简易秒表的设计n(3)ET0和ET1定时/计数器中断允许控制位nET0(ET1)=“0”:禁止定时/计数器中断。nET0(ET1)=“1”:允许定时/计数器中断。n(4)ES串行中断允许控制位nES=“0”:禁止串行中断。nES=“1”:允许串行中断。子情境一子情境一 中断系统中断系统1651单片机学习-第3章简易秒表的设计n4中断优先级控制寄存器n51系列单片机的中断优先级控制比较简单,因为系统只定义了高、低两个优先级。高优先级用“1”表示,低优先级用“0”表示。各中断源的优先级由中断优先级寄存器进行设定。IP寄存器地址为0B8H,位地址为0BFH0B8H。该寄存器的位含义及位地址如表4-5所示。位地址BFHBEHBDHBCHBBHBAHB9HB8H位符号/PSPT1PX1FT0PX0表4-5中断优先级控制寄存器子情境一子情境一 中断系统中断系统1751单片机学习-第3章简易秒表的设计n(1)PX0外部中断0的中断优先级设定位;n(2)PT0定时/计数器0的中断优先级设定位;n(3)PX1外部中断1的中断优先级设定位;n(4)PT1定时/计数器1的中断优先级设定位;n(5)PS串行口中断优先级设定位。n以上各位设置为0时,则相应的中断源为低优先级;设置为1时,则相应的中断源为高优先级。子情境一子情境一 中断系统中断系统1851单片机学习-第3章简易秒表的设计n优先级的控制原则是:n当两个不同优先级的中断源同时提出中断请求,低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套,51系列单片机最多只有两级中断嵌套。n如果同级的多个中断同时出现,则按CPU查询次序确定哪个中断请求被响应。其查询次序为n外部中断0定时/计数器0溢出中断外部中断1定时/计数器1中断串行中断。子情境一子情境一 中断系统中断系统1951单片机学习-第3章简易秒表的设计n1简述中断处理过程。n2简述中断编程结构。n3单片机如何确定5个中断源的中断优先级别?分别写出中断优先级控制寄存器IP=05H和IP=00H时5个中断源的中断优先级顺序。n4用伟福6000软件或KeiluVision2软件输入本节任务二的源程序并编译调试。n5用Proteus软件绘制出本节任务二仿真电路图并仿真运行。n6根据本节任务二的电路原理图连接成电路板,用编程器将仿真通过的程序烧录到单片机中,脱机运行并观察电路运行情况。子情境一子情境一 中断系统中断系统思考与练习2051单片机学习-第3章简易秒表的设计n一、任务目标n本任务让读者掌握定时/计数器的工作原理,掌握定时/计数器的工作方式及定时/计数初值的计算,熟悉定时/计数器的编程结构,了解定时/计数器的应用领域。n二、任务分析n51系列单片机有两个16位可编程的定时/计数器,分别称为定时/计数器T0和T1。其实就是由两个独立的8位专用寄存器TH0,TL0和TH1,TL1组成16位加法计数器。它们各自都兼有定时和计数的功能。分别由工作方式寄存器TMOD和控制寄存器TCON对定时/计数器的工作方式、启停及溢出中断请求进行控制。 子情境二子情境二 定时定时/计数器计数器 2151单片机学习-第3章简易秒表的设计n1定时/计数器工作在定时方式时n当定时/计数器工作方式寄存器TMOD中的功能选择位为“0”时,定时/计数器工作于定时方式。此时定时器T0或T1对机器周期进行计数,当启动控制位TR0和TR1为1时,定时器就从某一初始值开始计数,每一机器周期定时器加1,当计数值达到最大值时计数溢出,将定时器的溢出标志位TF0或TF1置1,并提出一次中断请求,如允许定时器中断的话,将产生一次定时器中断,进行定时器溢出中断服务处理;如采用查询方式进行定时器溢出处理的话,则程序查询到TF0或TF1位为1时,就进行相应的定时器溢出处理操作。子情境二子情境二 定时定时/计数器计数器2251单片机学习-第3章简易秒表的设计n2定时/计数器工作在计数方式时n当定时/计数器工作方式寄存器TMOD中的功能选择位为“1”时,定时/计数器工作于计数方式。此时计数器T0或T1对外部计数脉冲(外部引脚T0(P3.4)或T1(P3.5)输入的计数脉冲信号)进行计数,每来一个外部输入脉冲信号计数器加1。在计数工作方式时,单片机每个机器周期对外部引脚T0(P3.4)或T1(P3.5)电平进行一次采样,当在某一机器周期采样到高电平,跟接着在下一机器周期采样到低电平时,则在再下一机器周期计数器加1;所以计数工作方式时是对外部输入的负脉冲进行计数,计数器每次加1需用两个机器周期,则计数脉冲信号的最高频率为机器周期频率的二分之一。子情境二子情境二 定时定时/计数器计数器2351单片机学习-第3章简易秒表的设计n当启功控制位TR0和TR1位为1时,计数器从某一初始值开始计数,每来一个外部计数脉冲计数器加1,当计数值达到最大值时,计数器溢出,将计数器的溢出标志位TF0或TF1置“1”,并提出一次中断请求,如允许计数器中断的话,将产生一次中断请求,进行计数器溢出中断服务处理;如果采用查询方式进行计数器溢出处理的话,则程序查询到TF0或TF1位为“1”时,就进行相应的计数器溢出处理操作。 子情境二子情境二 定时定时/计数器计数器2451单片机学习-第3章简易秒表的设计n三、相关知识n下面讲解对定时/计数器进行控制的两个特殊功能寄存器及工作方式。n1定时/计数器控制寄存器n(1)定时/计数器工作方式寄存器(TMOD)nTMOD的作用是对T0和T1的功能、工作方式及启动方式进行控制,地址为89H,其各位的含义如表4-6所示,高4位对T1进行控制,低4位对T0进行控制,高4位与低4位的作用相同。 子情境二子情境二 定时定时/计数器计数器2551单片机学习-第3章简易秒表的设计n表4-6定时/计数器工作方式寄存器n1)GATE门控位nGATE=“0”:定时/计数器仅受TR(TCON中的TR0或TR1)控制,当TR为“1”时,定时器开始工作,此时称软启动方式。 子情境二子情境二 定时定时/计数器计数器2651单片机学习-第3章简易秒表的设计nGATE=“1”:只有(外部引脚(P3.2)和(P3.3))为高电平,且TR为“1”时,定时/计数器才工作,如两个信号中任意一个为低电平,则定时器不工作,此时称为硬启动。n2)C/T功能选择位nC/T=“0”:定时功能。nC/T=“1”:计数功能。 子情境二子情境二 定时定时/计数器计数器2751单片机学习-第3章简易秒表的设计n3)M0M1工作方式选择位nM0和M1组合可以定义4种工作方式,如表4-7所示。M0 M1工作方式功能描述0 00 11 01 1方式0方式1方式2方式313位计数器16位计数器自动重装初值8位计数器T0:分成两个独立的8位计数器T1:停止计数表4-7定时/计数器工作方式选择 子情境二子情境二 定时定时/计数器计数器2851单片机学习-第3章简易秒表的设计n(2)定时/计数器控制寄存器(TCON)nTCON作用是对定时/计数器的启动、停止、溢出中断请求及外部中断请求和触发方式控制,地址为88H,可以进行位寻址。其中高4位是对定时/计数器进行控制,低4位是对外部中断进行控制,低4位在本章的第一节中已经介绍过,其各位的含义及位地址如表4-8所示。位地址8FH8EH8DH8CH8BH8AH89H88H位符号TF1TR1TF0TR0IE1IT1IE0IT0表4-8定时/计数器控制寄存器 子情境二子情境二 定时定时/计数器计数器2951单片机学习-第3章简易秒表的设计n1)TF0,TF1T0和T1溢出标志位n当计数满溢出时,由硬件将TF0或TF1置“1”。n2)TR0,TR1T0和T1启动控制位nTR0(TR1)=“1”:T0或T1开始计数。nTR0(TR1)=“0”:T0或T1停止计数。n其余4位对外部中断进行控制,在前面已详细介绍过,在此不再赘述。 子情境二子情境二 定时定时/计数器计数器3051单片机学习-第3章简易秒表的设计n2定时/计数器工作方式n51系列单片机定时器/计数器共有4种工作方式。工作在方式0、方式1和方式2时,定时器/计数器0和定时器/计数器1的工作原理完全一样,现以定时/计数器0为例介绍4种工作方式。n(1)方式0n方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成,TL0高三位未用。定时器/计数器0工作在方式0的逻辑结构如图4-5所示。 子情境二子情境二 定时定时/计数器计数器3151单片机学习-第3章简易秒表的设计图4-5T0(T1)方式0结构3251单片机学习-第3章简易秒表的设计n当C/T=“0”时,多路转换开关接通振荡器的12分频输出,13位计数器对此脉冲信号(即机器周期)进行计数。计数器从某一计数初值开始每个机器周期加1,当加了N个1时计数器从初值计数到最大值,则所用时间为N个机器周期。从而改变不同的计数值N(因最大值是固定,通过改变计数初值来实现),可以实现不同的定时时间,这就是定时/计数器的定时工作原理。定时时间为: 子情境二子情境二 定时定时/计数器计数器3351单片机学习-第3章简易秒表的设计n(2)方式1n方式1是16位计数结构的工作方式,其计数器由TH0全部8位和TL0的全部8位构成。其逻辑电路和工作情况与方式0完全相同,所不同的只是计数器的位数。定时时间为: 子情境二子情境二 定时定时/计数器计数器3451单片机学习-第3章简易秒表的设计图4-6T0(T1)方式2结构3551单片机学习-第3章简易秒表的设计n(4)方式3n1)T0工作于方式3nT0工作于方式3时的结构图如图4-7(a)、(b)所示。在方式3下,定时/计数器0被拆为两个独立的8位计数器TL0和TH0。其中TL0既可以作为计数功能使用,又可以作为定时功能使用,占用了原T0的控制位、引脚和中断源,即,GATE,TR0,TF0,T0(P3.4),(P3.2)引脚均用于TL0的控制。对于TH0只能作为定时器使用,由于定时/计数器0的运行控制位TR0和溢出标志位TF0已被TL0占用,因此TH0占用了定时/计数器1的运行控制位TR1和溢出标志位TF1,并占用了T1的中断源,即TH0定时器的启动和停止受TR1的状态控制,而计数溢出时则置位TF1。 子情境二子情境二 定时定时/计数器计数器3651单片机学习-第3章简易秒表的设计图4-7T0方式3结构3751单片机学习-第3章简易秒表的设计n2)T0工作于方式3时T1的工作情况n当定时器/计数器T0工作在方式3时,定时器/计数器T1可工作在方式0、方式1和方式2,此时T1的结构如图4-8(a)、(b)所示。由于TR1,TF1和T1中断源均被定时/计数器0占用,此时仅有控制位切换其定时或计数工作方式,计数溢出时,只能将输出送入串行口。在这种情况下定时器/计数器1只能作为波特率发生器使用,以确定串行通信的速率。只要设置好工作方式,便可自动运行。如果要停止工作,只需要把定时/计数器1设置在工作方式3即可。通常把定时/计数器T1设置为方式2作为波特率发生器比较方便。 子情境二子情境二 定时定时/计数器计数器3851单片机学习-第3章简易秒表的设计图4-8T0方式3时的T1结构3951单片机学习-第3章简易秒表的设计n一、任务目标n利用单片机作为主控制器实现电子秒表,用4位LED数码管显示时间。设置外部按键SB,当按键SB第一次按下时启动秒表开始计时;当第二次按下按键S1时秒表停止计时,当第三次按下按键S1时秒表回零;即用一个按键S1来控制秒表的启动、停止和回零功能。n通过本次任务的学习,使读者了解秒表的电路设计及程序设计,熟悉定时器的应用及其编程方法。子情境三子情境三 单片机控制的秒表单片机控制的秒表4051单片机学习-第3章简易秒表的设计n二、任务分析n1秒表硬件电路设计n采用ATMEL公司生产的AT89C51单片机控制器,用4位共阴LED数码管显示时间,为了节省单片机的I/O资源,LED数码管采用动态显示方式,由P2口的低4位输出位选信号,P1口输出LED数码管的显示段码。用非门来提高P2口的驱动能力,使LED管达到合适的亮度。完成设计的仿真电路如图4-9所示。子情境三子情境三 单片机控制的秒表单片机控制的秒表4151单片机学习-第3章简易秒表的设计n 图4-9基于单片机控制的秒表仿真电路图4251单片机学习-第3章简易秒表的设计n2程序设计n采用主程序调用子程序的设计方法,主程序首先对定时器和有关寄存器及存储单元进行初始化,调用按键扫描子程序和显示子程序,判断计时时间是否到9分59秒。主程序设计流程图如图4-10所示。子情境三子情境三 单片机控制的秒表单片机控制的秒表4351单片机学习-第3章简易秒表的设计图4-10主程序设计流程图4451单片机学习-第3章简易秒表的设计(1)定时初值的计算n按12MHz的时钟频率计算,其机器周期为1s,选用定时/计数器工作方式1,定时时间50ms。计算初值如下:n计数值N=定时/计数器最大值M定时/计数器初值Xn则初值X=MNn机器周期为TM=121/osc=121/12106=1sn采用定时器工作方式1,所以初值为nX=21650ms/1us=15536=3CB0Hn所以TH0=3CH,TL0=B0H子情境三子情境三 单片机控制的秒表单片机控制的秒表4551单片机学习-第3章简易秒表的设计n(2)初始化n通过初始化设定定时器0工作方式为方式1,开放定时器0的中断及总中断,分别给存放毫秒、秒、分的计数单元3FH,40H,41H,42H清零。关闭定时/计数器T0。给存储按键次数的寄存器R1清零。子情境三子情境三 单片机控制的秒表单片机控制的秒表4651单片机学习-第3章简易秒表的设计n(3)判断有无键按下,并进行按键处理n因为只有一个与P3.0相连的接独立式按键,所以用JBP3.0,KEYEND指令来读按键的状态。当P3.0=0时则有键按下,然后进行10ms的延时消抖,延时消抖后将存放按键次数的寄存器R7加1,接着判断R1中的值是多少?如果是1(表示第一次按键)则用SETBTR0指令启动定时器T0;如果是2则用CLRTR0指令关闭定时器T0;如果是3则将存放时间的3FH,40H,41H,42H单元及存放按键次数的R1清零。程序设计流程图如图4-11所示。子情境三子情境三 单片机控制的秒表单片机控制的秒表4751单片机学习-第3章简易秒表的设计图4-11按键确认程序设计流程图4851单片机学习-第3章简易秒表的设计n(4)显示子程序设计n显示子程序的主要作用是根据存放在3FH,40H,41H,42H单元的计数值查表找到跟计数值对应的段码,然后送到对应的LED数码管进行显示。程序设计流程图如图4-12所示。子情境三子情境三 单片机控制的秒表单片机控制的秒表4951单片机学习-第3章简易秒表的设计图4-12显示子程序流程图5051单片机学习-第3章简易秒表的设计n(5)中断子程序设计n本任务中定时器T0定时50ms,每到50ms,T0产生一次中断,进入中断服务程序。在中断服务程序中,首先将累加器A中内容压入堆栈,保护好现场,接着给T0重装初值。然后50ms计数单元加1,再判断计数单元是否加到2(即0.1s),若没有则中断返回;若加到了,则首先50ms计数单元清零,接着将毫秒的计数单元加1。子情境三子情境三 单片机控制的秒表单片机控制的秒表5151单片机学习-第3章简易秒表的设计n再判断毫秒计数单元是否到10(即1s),若没有则中断返回;若到了10,则将毫秒计数单元清零。然后将秒的个位计数单元加1,秒的个位计数单元加1后判断是否加到10,若不是则中断返回;若是则将秒的个位计数单元清零,然后秒的10位计数单元加1,再判断秒的10位计数单元是否到6,若不是则中断返回;若是则将秒的十位清零,分计数单元加1。程序设计流程图如图4-13所示。子情境三子情境三 单片机控制的秒表单片机控制的秒表5251单片机学习-第3章简易秒表的设计图4-13中断服务程序设计流程图5351单片机学习-第3章简易秒表的设计n AJMPTIMERnORG0030HnMAIN:MOVDPTR,#TABLEnMOVSP,#50HnMOVTMOD,#01H;定时器T0的工作方式为方式1nMOVIE,#82HnCLRTR0nCALLCLEAR;对计分、秒、毫秒计数单元清零nLOOP:CALLSCANKEY;调用按键扫描子程序子情境三子情境三 单片机控制的秒表单片机控制的秒表5451单片机学习-第3章简易秒表的设计n CALLDISP;调用显示子程序nMOVA,42H;判断定时时间是否到9分59秒nCJNEA,#09,E3nMOVA,41HnCJNEA,#05,E3nMOVA,40HnCJNEA,#09,E3nMOVA,3FHnCJNEA,#09,E3nCLRTR0nCALLCLEAR;时间到了9分59秒关闭定时器并自动回零子情境三子情境三 单片机控制的秒表单片机控制的秒表5551单片机学习-第3章简易秒表的设计nE3:AJMPLOOPnCLEAR:MOVA,#00H;对分、秒、毫秒计数单元清0nMOVR1,#3FHnE2:MOVR1,AnINCR1nCJNER1,#43H,E2nMOVR7,#00HnRETnSCANKEY:PUSHAnJBP3.0,KEYEND;判断按键SB是否按下?子情境三子情境三 单片机控制的秒表单片机控制的秒表5651单片机学习-第3章简易秒表的设计n CALLDELAY_10MS;延时消抖nINCR7;按键次数寄存器加1nMOVA,R7nCJNEA,#01,STOP;是第1次按下吗?nSETBTR0;启动秒表计时nAJMPKEYENDnSTOP:CJNEA,#02,RESET;是第2次按下吗;nCLRTR0;秒表停止计时nAJMPKEYENDnRESET:CJNEA,#03,KEYEND;是第3次按下吗?nCALLCLEAR;秒表复位nKEYEND:POPAnRET子情境三子情境三 单片机控制的秒表单片机控制的秒表5751单片机学习-第3章简易秒表的设计n显示子程序:nDISP:CLRAnMOVR0,#3FHnMOVR2,#08HnMOVR3,#04nE1:MOVA,R0;读取分、秒、毫秒计数单元的值nMOVCA,A+DPTR;查表找跟计数值相对应的显示段码nMOVP2,#00H;消隐nMOVP1,AnMOVA,R2子情境三子情境三 单片机控制的秒表单片机控制的秒表5851单片机学习-第3章简易秒表的设计nMOVP2,AnMOVR6,#255;显示时间nDJNZR6,$nINCR0nRRAnMOVR2,AnDJNZR3,E1nRET子情境三子情境三 单片机控制的秒表单片机控制的秒表5951单片机学习-第3章简易秒表的设计n中断子程序:nTIMER:PUSHAnMOVTH0,#3CH;送定时50ms的初值nMOVTL0,#0B0HnINC43H;中断次数单元加1nMOVA,43HnCJNEA,#02,END_TIME;是否中断了2次?nMOV43H,#00H;中断次数单元清零nINC3FH;中断了2次,0.1S(毫秒)计数单元加1nMOVA,3FHnCJNEA,#10,END_TIME;到了1秒吗?子情境三子情境三 单片机控制的秒表单片机控制的秒表6051单片机学习-第3章简易秒表的设计nMOV3FH,#00H;到了1秒,毫秒计数单元清零nINC40H;秒的个位计数单元加1nMOVA,40HnCJNEA,#10,END_TIME;到了10秒吗?nMOV40H,#00H;到了10秒,秒个位计数单元清零nINC41H;秒的十位计数单元加1nMOVA,41HnCJNEA,#06,END_TIME;到了60秒吗?nMOV41H,#00H;到了60秒,秒的十位计数单元清零nINC42H;分计数单元加1END_TIME:POPAnRETI子情境三子情境三 单片机控制的秒表单片机控制的秒表6151单片机学习-第3章简易秒表的设计DELAY_10MS:MOVR5,#50nD1:MOVR4,#100nDJNZR4,$nDJNZR5,D1nRETnTABLE:DB3FH,06H,05BH,4FH,66H,6DH,7DHnDB07H,7FH,6FHnEND子情境三子情境三 单片机控制的秒表单片机控制的秒表6251单片机学习-第3章简易秒表的设计n三、任务实施n1源程序输入、编辑及编译n用伟福6000,KeiluVision2或其他仿真软件将本任务中的源程序输入计算机,并进行编译,如果编译没有语法错误,则产生一BIN(二进制)和HX(十六进制)目标代码文件。子情境三子情境三 单片机控制的秒表单片机控制的秒表6351单片机学习-第3章简易秒表的设计n2程序调试n用伟福6000软件或KeiluVision2软件对编译通过的程序进行调试,在调试过程中打开工作寄存器窗口、特殊功能寄存器窗口和内部RAM窗口,进行程序运行时各输入端口状态的设置,观察程序运行过程中各相关单元的值。在程序调试时,先用单步或跟踪运行,在程序调试通过后再用全速运行。n3电路仿真子情境三子情境三 单片机控制的秒表单片机控制的秒表6451单片机学习-第3章简易秒表的设计图4-14仿真电路运行6551单片机学习-第3章简易秒表的设计n1用伟福6000软件或KeiluVision2软件输入本节任务二的源程序并编译调试。n2用Proteus软件绘制出本节任务二仿真电路图并仿真运行。n3用KeiluVision2软件和Proteus软件进行联合仿真运行。n4根据本节任务二的电路原理图制作印制电路板,将程序下载到单片机中,运行并观察结果。子情境三子情境三 单片机控制的秒表单片机控制的秒表思考与练习6651单片机学习-第3章简易秒表的设计
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号