好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

51单片机定时器中断.doc

7页
  • 卖家[上传人]:m****
  • 文档编号:526717797
  • 上传时间:2022-11-28
  • 文档格式:DOC
  • 文档大小:228.50KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一.定时器相关寄存器1. 工作方式寄存器( TMOD )该寄存器用于设置定时 / 计数器的工作方式, 低四位用于定时器 0 ,高四位用于定时器 1 GATE:门控位 GATE = 0 时,只要用软件使 TCON 中的 TR0 或 TR1 为 1,就可以启动定时 / 计数器工作; GATA = 1 时,要用软件使 TR0 或 TR1 为 1,同时外部中断引脚INT0/1 也为高电平时,才能启动定时 / 计数器工作即此时定时器的启动条件,加上了INT0/1 引脚为高电平这一条件C/T: 定时 / 计数模式选择位 C/T =0 为定时模式; C/T=1 为计数模式2. 定时器 / 计数器控制寄存器控制寄存器( TCON )该寄存器的低 4 位用于控制外部中断 ,已在前面介绍,高 4 位用于控制定时 / 计数器的启动和中断申请TF1: T1 溢出中断请求标志位T1 计数溢出时由硬件自动置TF1 为 1 CPU 响应中断后 TF1 由硬件自动清 0TR1 :T1运行控制位 TR1 置 1时, T1开始工作; TR1 置 0时, T1 停止工作 TR1由软件置1 或清 0所以,用软件可控制定时 / 计数器的启动与停止。

      TF0: T0 溢出中断请求标志位,其功能与TF1 类同TR0 :T0运行控制位,其功能与TR1 类同3. 中断允许控制寄存器( IE)ET0:定时 / 计数器 T0 中断允许位;ET1:定时 / 计数器 T1 中断允许位;EA : CPU 中断允许(总允许)位二.定时器溢出中断的处理过程1、设置定时器工作方式2、为定时器装入初值3、定时器中断允许位置为 14、开总中断5、开定时器,等待产生溢出中断请求三.实现简单时钟说明:1.使用动态数码管显示2.选择工作方式 1,以 16 位的定时器 0 进行工作,即 TMOD=0x01,中断编号为1 ;3.定时 50ms ,即每隔 50ms产生一次中断:TH0=(65536-50000)/256; //16位定时器的高8 位TL0=(65536-50000)%256; //16位定时器的低8 位具体的时间与单片机的晶振有关,请了解机器周期、指令周期、时钟周期等相关知识include #define uchar unsigned char#define uint unsigned intuchar hour, min ,sec;uchar code wei[ 8 ]= { 0xfe ,0xfd ,0xfb ,0xf7 ,0xef ,0xdf ,0xbf ,0x7f }; // 共阴极数码管位选编码uchar code duan[ 11 ]= {0x3f ,0x06 , 0x5b ,0x4f ,0x66 , 0x6d ,0x7d , 0x07 ,0x7f ,0x6f ,0x01 }; // 共阴极数码管段选编码void delay( uint z){uint i,j;for (i=z;i> 0 ;i--)for (j= 110 ;j> 0 ;j--);}void timer0_init(){TMOD= 0X01 ;TH0=( 65536 - 50000 )/ 256 ;TL0=( 65536 - 50000 )%256 ;ET0= 1 ;TR0= 1 ;EA= 1;}void main(){uchar i;timer0_init();while (1 ){num[0]=duan[hour/10 ];num[1]=duan[hour%10 ];num[2]= 0x40;//显示一横num[3]=duan[min/10 ];num[4]=duan[min%10 ];num[5]= 0x40;//显示一横num[6]=duan[sec/10 ];num[7]=duan[sec%10 ];for (i= 0 ;i< 8 ;i++)// 显示部分{P0=wei[i];// 位选P1=num[i];delay( 2 );// 段选P1= 0x00;// 消隐}}/* 启动定时器后,没次计数溢出就会进入中断服务函数,重新赋初值,再进行计数,来达到定时的效果 */ void timer0() interrupt 1 // 定时器中断服务函数{TH0=( 65536 - 50000 )/ 256 ;TL0=( 65536 - 50000 )%256 ;t++;if (hour==24)hour=0 ;if ( min == 60){hour++;min = 0 ;}if (sec== 60 ){min ++;sec= 0 ;}if (t== 20 ){sec++;t= 0 ;}}。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.