这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 定时器10分钟

共1条 1/1 1 跳转至

定时器10分钟

助工
2014-11-26 20:23:01     打赏
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^0;
sbit wela=P2^1;
sbit beep=P3^2;

uint num,num1,num2;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};

void delayus(uint us)
{
    while(us--);
}

void delay(uint z)
{
    uint a,b;
    for(a=0;a<z;z++)
        for(b=0;b<110;b++);
}

void display(uint disnum)
{
    uchar wan,qian,bai,shi,ge;
    wan=disnum/10000;
    qian=disnum%10000/1000;
    bai=disnum%1000/100;
    shi=disnum%100/10;
    ge=disnum%10;
    
    dula=1;
    P0=table[wan];
    dula=0;
    P0=0xff;
    wela=1;
    P0=0xf7;
    wela=0;
    delayus(100);

    dula=1;
    P0=table[qian];
    dula=0;
    P0=0xff;
    wela=1;
    P0=0xef;
    wela=0;
    delayus(100);

    dula=1;
    P0=table[bai];
    dula=0;
    P0=0xff;
    wela=1;
    P0=0xdf;
    wela=0;
    delayus(100);

    dula=1;
    P0=table[shi];
    dula=0;
    P0=0xff;
    wela=1;
    P0=0xbf;
    wela=0;
    delayus(100);

    dula=1;
    P0=table[ge];
    dula=0;
    P0=0xff;
    wela=1;
    P0=0x7f;
    wela=0;
    delayus(100);
}

void main()
{
    TH0=(65536-46080)/256;
    TL0=(65536-46080)%256;
    TMOD=0x01;
    EA=1;
    ET0=1;
    TR0=1;
    while(1)
    {
        if(num==20)
        {
            num=0;
            num1++;
            num2++;
        }
        if(num2==30)
        {
            beep=0;
            delayus(2000);
            beep=1;    
            num2=0;
        }
        if(num1==600)
        {
            num1=0;
        }
        display(num1);
        
    }
        
}

void T0_timer() interrupt 1
{
    TH0=(65536-46080)/256;
    TL0=(65536-46080)%256;
    num++;
}

 


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]