您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 谭久刚-《单片机应用技术》1-3
《单片机应用技术》课程开发小组子情境1-3:定时中断流水灯控制任务1-3-2任务1-3-1定时中断实现灯的闪烁及流动查询方式编程实现定时器的1s延时《单片机应用技术》课程开发小组任务1-3-1:查询方式编程实现定时器的1s延时任务要求:定时器编程查询方式实现1s延时查询方式定时器延时1s程序设计认识单片机内部定时器Step1Step2任务实施步骤知识点小结《单片机应用技术》课程开发小组Step1认识单片机内部定时器GATEC/TM1M0GATEC/TM1M0TH1TL1TH0TL0T1方式T0方式T1引脚(P3.5)T0引脚(P3.4)机器周期脉冲内部总线TMODTCON外部中断相关位TF1TR1TF0TR01.定时器结构51单片机内部有两个16位定时器/计数器,可用作定时或计数。定时器的本质是加1计数器,由高8位TH和低8位TL两个寄存器组成;TMOD是定时器的工作方式寄存器,确定工作方式、功能和启动方式;TCON是控制寄存器,其高四位用于控制定时器的启停和设置溢出标志;T0和T1引脚分别用作T0、T1定时器的计数脉冲输入。《单片机应用技术》课程开发小组Step1认识单片机内部定时器2.定时器工作原理加1计数器输入的计数脉冲有两个来源,作为定时器使用时,对机器周期(12MHz晶振,1us)脉冲加1计数;作为计数器使用时,对来自单片机引脚T0(P3.4)或T1(P3.5)上输入的外部脉冲加1计数。根据定时时间或计数个数对TH和TL设定初值,启动定时器后,开始加1计数,当计数器加到为全1时,再输入一个脉冲就使计数器回零(溢出),且计数器的溢出使TCON中TF0或TF1置1,作为定时器工作时,表示定时时间已到;如果工作于计数模式,则表示计数值已满。可见,溢出时计数器的值减去计数初值便是加1计数器的计数值,例如16位定时器,初值设为55536,溢出值为65535(全1)+1=65536,则计数值为10000;再假设,作为定时器使用时,机器周期为1us(12MHz),则定时时间为10ms。反过来,要定时10ms,则应将定时器初值设为55536。《单片机应用技术》课程开发小组Step1认识单片机内部定时器3.定时器寄存器1).工作方式寄存器TMOD(SFR,89H)工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。注意,TMOD映射地址为89H,不能位寻址,只能进行字节操作。T1T0GATE,门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时器工作;GATA=1时,要用软件使TR0或TR1为1,同时需要P3.2或P3.3引脚上脉冲信号的配合才能启动定时器。提示:GATE=1常用来测量外中断引脚上正脉冲的宽度,作为普通定时/计数器使用时,一般将GATE置‘0’。M1M0,工作方式设置位定时/计数器有四种工作方式,由M1M0进行设置:,定时/计数模式选择位/CT1/0CT,计数工作模式,定时工作模式《单片机应用技术》课程开发小组Step1认识单片机内部定时器3.定时器寄存器2).控制寄存器TCON(SFR,88H)TCON的低4位用于控制外部中断,高4位用于控制定时/计数器的启停和溢出标志。TF1,T1溢出志位定时器溢出时硬件自动置1,表示定时时间到或计数个数到,可供CPU查询或向CPU申请中断。查询时须软件清零TF1,响应中断后TF1由硬件自动清0。TR1,T1启停控制位GATE=0时,软件将TR1置1时,T1开始加1计数;TR1置0时,T1停止工作。GATA=1时,软件将TR1置1,同时外部中断引脚P3.3)为高电平时,才能启动定时/计数器工作。TF0,T0溢出标志位,其功能与TF1类同。TR0,T0启停控制位,其功能与TR1类同。《单片机应用技术》课程开发小组Step1认识单片机内部定时器4.定时器工作方式TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&≥110T0引脚INT0引脚00机器周期TH0TL08位5位溢出TCONTMODD0D7D7D0申请中断151单片机内部定时器工作方式有4种,可通过设置方式寄存器TMOD的M1、M0进行选择。1).定时器工作方式0工作方式0为13位计数器,如图,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志。最大计数值为,如果采用12MHz时钟信号,则最大定时时间为:132819281921s=8.192ms《单片机应用技术》课程开发小组Step1认识单片机内部定时器4.定时器工作方式2).工作方式1工作方式1为16位计数器,如图,由TL0作为低8位、TH0作为高8位,TL0溢出时,向TH0进位,TH0溢出时,置位TCON中的TF0标志。最大计数值为,如果采用12MHz时钟信号,则最大定时时间为:。16265536655361s=65.536msTF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&≥110T0引脚INT0引脚10机器周期TH0TL08位8位溢出TCONTMODD0D7D7D0申请中断《单片机应用技术》课程开发小组Step1认识单片机内部定时器4.定时器工作方式3).工作方式2工作方式2为自动重装初值的8位计数方式,如图,TL0为8位加1计数器,TH0用以保存计数初值,程序初始化时,TL0和TH0由软件赋予相同的初值,TL0加1计数溢出时,置位TCON中的TF0标志,同时自动将TH0中的初值装入TL0,从而进入新一轮计数,如此循环下去。最大计数值为,如果采用12MHz时钟信号,则最大定时时间为。工作方式2一般用作串行通信等较精确的脉冲信号发生器。822562561s=0.256msTF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&≥110T0引脚INT0引脚10机器周期TH0TL08位溢出TCONTMODD0D7D7D0申请中断《单片机应用技术》课程开发小组Step1认识单片机内部定时器4.定时器工作方式4).工作方式3工作方式3只适用于定时/计数器T0。方式3为两个8位定时器,将T0分成为两个独立的8位计数器TL0和TH0,如图。TL0占用T0的控制位、引脚和中断源,可定时亦可计数,加1计数溢出置TF0为‘1’;TH0占用T1的控制位TF1、TR1,只能用作定时,不能对外部脉冲进行计数。。注意,T1设置为工作方式3时,停止工作,但T0工作在方式3时,T1可以工作在方式0、1、2,此时,T1通常用作控制串口数据传输速度。TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&≥110T0引脚INT0引脚11机器周期TH0TL08位溢出TCONTMODD0D7D0申请中断机器周期8位申请中断溢出《单片机应用技术》课程开发小组Step1认识单片机内部定时器5.定时器的初始化对定时器的编程需完成如下初始化工作:对TMOD赋值,以确定T0和T1的工作方式;计算初值,并将其写入TH0、TL0或TH1、TL1;中断方式时,则对IE赋值,开放中断;使TR0或TR1置位,启动定时/计数器定时或计数。《单片机应用技术》课程开发小组Step2查询方式定时1s程序设计1.查询定时程序功能分析及流程图选择12MHz晶振,采用工作方式1,最大定时时间为65.536ms,要实现1s的定时,可利用工作方式1定时50ms,循环定时20次即可,程序流程如图。定时时间到后,硬件将TF置1,CPU可以采取两种方式获取TF的状态,一种是查询方式,即,定时器开始工作后,CPU就利用位条件转移指令JB等对TF进行查询,一旦TF为1,表示定时时间到;另一种是中断方式,定时器启动后,CPU执行其他程序,时间到,TF置1,同时通过单片机中断系统主动告诉CPU定时时间到。开始循环次数R0=20定时器初始化(工作方式选择、定时器初值、中断、开启定时器)定时器溢出?(TF=1?)循环次数修改(R0=R0-1)定时20次到?(R0=1?)YN结束《单片机应用技术》课程开发小组Step2查询方式定时1s程序设计2.汇编语言源程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;查询方式、定时器实现1s定时程序,主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ORG0000HLJMPSTARTORG0030HSTART:MOVR0,#20;50ms定时20次INT_AGAIN:LCALLINIT_TIMER0;定时器初始化WAIT:JBCTF0,TIMER0_FLOW;查询等待LJMPWAITTIMER0_FLOW:DJNZR0,INT_AGAIN;循环定时50ms次数修改DELAY1s_UP:LJMP$;1s定时时间到后,进入死循环;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定时器初始化子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INIT_TIMER0:MOVTMOD,#01H;T0设为定时工作、方式1、软件开启定时MOVTH0,#3CH;定时器初值,定时50ms,初值设为15536MOVTL0,#0B0H;即十六进制数3CB0HCLRET0;关中断SETBTR0;启动计时RET;子程序返回END1)工作方式设置T0设为定时工作、方式1、软件开启定时。TMOD只能字节寻址。T1T0000000012)计数初值计数晶振为12MHz,定时器每加1为1us,方式1工作时定时器满65536溢出,要实现50ms的延时,则定时初值应为15536,转换为十六进制数3CB0H,高八位3CH送入TH0,低八位0B0H送入TL0。晶振为6MHz时,初值应为多少?3)中断控制开中断SETBEA;开总中断SETBET0;开定时器0中断关中断CLRET0;开定时器0中断采用查询方式,关中断。4)开定时器TR0=1启动加1定时器定时时间到查询程序定时器启动后,从15536开始加1计数,加到65535后再加1定时器溢出将TF0置‘1’,表示50ms定时时间到,条件跳转指令查询TF0的状态:JB(为1跳转)指令格式:JBbit,标号指令功能:bit为‘1’则跳转到标号处执行程序,否则执行下一句指令。JBC(为1跳转并清零)指令格式同JB,除能完成JB的查询跳转功能外,跳转时同时将TF0位清‘0’。JNB(为0跳转)指令格式同JB,功能与JB相反,即TFO为‘0’跳转,为‘1’执行JNB下一句程序。《单片机应用技术》课程开发小组Step2查询方式定时1s程序设计3.程序仿真《单片机应用技术》课程开发小组任务1-3-2:定时中断实现灯的闪烁及流动任务要求:利用定时中断延时实现流水灯控制定时中断实现灯的闪烁及流动显示定时中断实现全部灯闪烁5次定时中断延时1s程序设计认识单片机中断系统Step1Step2Step3任务实施步骤知识点小结Step4《单片机应用技术》课程开发小组Step1认识单片机中断系统1.什么叫中断CPU在处理某一事件A时,发生了另一事件B(如定时器溢出)定时器溢出请求CPU迅速去处理(中断请求),引起事件B的根源,称为中断源,如定时器;CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方(断点)继续处理事件A(中断返回)。这一过程称为中断,实现上述中断功能的部件称为中断系统。《单片机应用技术》课程开发小组Step1认识单片机中断系统1.什么叫中断执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回主程序A响应返回断点RETI……中断服务程序B观察执行过程,中断和子程序类似,只不过,子程序是程序员根据需要,在
本文标题:谭久刚-《单片机应用技术》1-3
链接地址:https://www.777doc.com/doc-1823215 .html