最新c51定时器中断.ppt

最新c51定时器中断.ppt

ID:60215432

大小:149.50 KB

页数:24页

时间:2020-12-03

最新c51定时器中断.ppt_第1页
最新c51定时器中断.ppt_第2页
最新c51定时器中断.ppt_第3页
最新c51定时器中断.ppt_第4页
最新c51定时器中断.ppt_第5页
资源描述:

《最新c51定时器中断.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、3.2单片机定时器/计数器应用3.2.1利用Timer0中断产生1秒延时,让数1个码管显示秒计数本案例主要目的是熟练掌握单片机内部Timer0或Timer1的编程控制方法,会利用Timer0或Timer1中断精确定时。同时掌握数码管动态显示原理,学会6位数字显示的程序设计。本案例使用的电路为图3-1-3。一、程序设计#includecodeunsignedcharseven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedcharcp,i;//声明全局变量voidtim

2、er0_isr(void)interrupt1//timer0中断服务函数{TR0=0;//停止计数TL0=0x11;//TL0重新预置TH0=0xee;//TH0重新预置TR0=0;//开始计数cp++;//timer0中断1次,变量cp加1if(cp==200)//中断200次,时间刚好为1秒{cp=0;i++;}if(i==10)i=0;P0=seven_seg[i]//P0输出显示数据}voidtimer0_initialize(void)//timer0中断初始化函数{EA=0;//设置中断允许寄存器IE中的EA位,//关闭中断总开关TMOD=0x01;//设置计

3、时器模式控制寄存器,//Time0工作在定时方式1TR0=0;//设置计时器控制寄存器TCON寄存器//的TR0位为0,Timer0//停止计数TL0=0x11;TH0=0xee;//Timer0的16位计数器初始值为//0xee11,12MHz晶体振//频率,单片机的机器周期为1微妙,//Timer0每1微秒加1计数,//加满溢出变产生中断,//从计数到中断刚好为5毫秒PT0=1;//设置中断优先次序寄存器IP中的//PT0位,Timer0中断优先ET0=1;//设置中断允许寄存器IE中ET0的//位,开启中断小开关EA=1;//打开中断总开关TR0=1;//开始计数}v

4、oidmain(void){timer0_initialize()//timer0初始化,为中断做好准备while(1);//等待中断}二、程序说明1.中断服务函数名中,interruput为关键字,1为timer0中断号。在reg51.h头文件中已经定义,表3.2.1为单片机常用中断的中断号。在使用中断服务函数时,直接在名后加interruput和中断号即可。表3.2.1REG51.H中单片机常用中断号定义2.timer0可以用作计数,也可以用来定时,由由TMOD寄存器中为决定,作为计数器使用时,接受单片机外部引脚P3.4输入的脉冲加计数;作为定时器使用时,接受单片机内部

5、的机器周期脉冲。如果单片机的振荡频率为,振荡周期为,则机器周期为。本案例中MHz,则微秒,timer0工作在模式1为16为加计数器,当计数器初始值为0xee11时,则从开始计数到产生中断需要的时间为0xffff—0xee11个微秒,刚好为5000微秒,也即5毫秒。本案例TIMER0的初装也可以利用下面语句完成:#definedTEMOR0_COUNT0xee11TL0=TEMOR0_COUNT&0x00ff;//取TEMOR0_COUNT的低字节并装入TL0TH0=TEMOR0_COUNT>>8;//TEMOR0_COUNT左移8位,并将低字节装入TEMOR0_COUNT利

6、用定时器/计数器定时时,需要现设置工作模式,并计算它的初装值,计算初装值不好计算,常利用计算机中的计算器工具辅助。timer0工作在模式1可以最大65535微秒中断1次,如工作模式2,最大256微秒中断1次。3.当程序中只涉及一个中断时,可以不对中断的优先级进行设置,因此在本案例中语句PT0=1可以省略。程序中有多个中断但没有进行优先级设定的情况下,单片机中断优先级默认按终端号递增而依次降低。4.数码管显示语句放在了timer0中断服务函数里面,由于5毫秒中断1次,因此数码管显示的数据会每5毫秒更新1次。1秒内更新200次,更新过程是把原来的数据覆盖,但显示数据1秒内变化1

7、次。3.2.2利用4个数码管,实现秒信号加计数一、电路原理图3-2-1所示的电路中,4位七段数码管采用4只单个数码管组成,可以显示0000~9999,数据输入端并联后接P0口,位选即每个数码管的阳极分别接P2口,中间加非门驱动。因为P2口反相驱动,因此,如果千位数码管显示,P2.7输出低电平,P2的其它端口输出高电平,并且此时P0输出千位数据。在利用Proteuse软件仿真时,数码管SEVEN_SEG使用7SEG-MPX4-CA,非门NOT选用74HCseries类型中Gates&Inverters分类下的74HC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。