专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机定时器0工作模式1(16位模式)

作者:佚名   来源:本站原创   点击数:  更新时间:2009年06月17日   【字体:

   51单片机的定时器0工作模式1(16位模式),外中断INT0(P3_2引脚)控制T0(P3_4引脚)的按键信号,按键(P3_4引脚)作为T0时钟信号输入定时器0。若是INT0为1,则按键的状态(不断的按下然后抬起按键),使定时/计数器0计数,溢出中断引起P2.0引脚相连的LED灯闪烁。
//本程序出自:51hei单片机网
#include "reg_c51.h"
unsigned char hex[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E};  //数码管十六进制译码表
void main(void)
{
TMOD &= 0xF0;   //定时/计数器0运行在模式1,16位模式
TMOD |= 0x0D;   //GATE0=1; C/T0#=1; M1=0; M0=1;
TH0 = 0xff;     //设置初值,初值=(65536-7)/256=FFH
TL0 = 0xf9;     //设置初值,初值=(65536-7)%256=F9H
                //初值为65529,只需要再计7个数,定时/计数器就可以溢出
ET0=1;  //允许定时/计数器0中断
EA=1;   //允许总中断
TR0=1;  //启动定时/计数器
while(1);     //无限循环
{
P1=hex[TL0/16];    //显示TL0的高位
P0=hex[TL0%16];    //显示TL0的低位
}}
void it_timer0(void) interrupt 1   //定时/计数器0中断服务程序
{
P2_0 = ~P2_0;     //每次中断将P2_0引脚取反,就是使LED灯闪烁
TH0 = 0xff;       //重置初值
TL0 = 0xf9;       //重置初值
}

关闭窗口

相关文章