定时

四、定时

(超链接里的博主讲的很详细)

定时时间 = (216-X)x 12/晶体震荡频率

  • 时间单位:us

  • 晶震频率:MHZ

定时/计数器工作方式寄存器TMOD

定时器初始化

定时器0

//定时器初始化
void timerInit(){
    EA = 1;    //开总中断
    ET0 = 1;    //开定时器/计数器中断0
    TMOD |= 0x01;    //方式1,16位定时器
    TH0 = 0x00;
    TL0 = 0x00;
    TR0 = 1;   //开定时器T1    
}

定时器1

//定时器初始化
void timerInit(){
    EA = 1;    //开总中断
    ET1 = 1;    //开定时器/计数器中断1
    TMOD |= 0x10;    //方式1,16位定时器
    TH1 = 0x00;
    TL1 = 0x00;
    TR1 = 1;   //开定时器T1    
}

实践代码:数码管每秒加一,从零加到九,跑马灯每一秒变换一次

/**
* 
* “^”是异或运算符,异或是“相同为0,不同为1
* P2的初值是0000 0000,异或0000 0001就是0000 0001
* 下一步0000 0001异或0000 0010就是0000 0011
* 下一步0000 0011异或0000 0100就是0000 0111
* 依次类推,跑马灯会从亮一个到亮两个到亮全部,
* 再从灭一个到灭两个到灭全部
*/      
#include<reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define number 9216

//变量定义
sbit K13 = P1^3;
sbit wela = P1^5;
sbit dula = P1^4;
int i, j;
//段选 0~9
uint table[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
//位选 1~8
uchar positions[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

//函数声明
void display(int position, int n);
void T1_int();
void timerInit();

//主函数
void main()
{ 
    P2 = 0x00;
    timerInit();
    while(1);
}

//定时器初始化
void timerInit()
{
    EA = 1;    //开总中断
    ET1 = 1;    //开定时器/计数器中断1
    TMOD |= 0x10;    //方式1,16位定时器
    TH1 = 0x00;
    TL1 = 0x00;
    TR1 = 1;   //开定时器T1    
}

//定时器T1中断
void T1_int() interrupt 3
{
    static int c = 0;
    TH1 = (65536-number) / 256;
    TL1 = (65536-number) % 256;
    TR1 = 1;
    c ++;
    if (c == 100 )
    {
        display(i,j);
         P2 ^=(1<<i) ; //跑马灯接在P2口
        if (i == 8)  i = 0;  
        if (j == 10)  j = 0;  
        c = 0;        
    }
}

//数码管显示
void display(int position, int n)
{
    //异常检查
    if(n < 0 || n > 17) return ;    
    if(position < 0 || position > 7) return ;
    
    //“总开关”打开
    K13 = 0;
    
    //消隐
    dula = 1;
    P0 = 0x00;
    dula = 0;
    
    //位选
    P0 = positions[position];
    wela = 1;//高电平数据直通    
    wela = 0;//低电平锁存 
    
    //段选  
    P0 = table[n]; 
    dula = 1;
}
posted @ 2021-09-04 01:37  六月琳  阅读(68)  评论(0)    收藏  举报