单片机==时钟定时器(6)

来源:互联网 发布:as3.0 外部js接口 编辑:程序博客网 时间:2024/06/07 06:15
#include <reg52.h>#include <intrins.h>#define SEGPORT P0sbit bit_select = P2^0;sbit seg_select = P2^1;unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char segdata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char tempdata[8];unsigned char sec = 0;unsigned char min = 0;unsigned char hour = 0;void timer0_init(void){    EA = 1;    TMOD |= 0x01;    TH0 = (65536 - 50000) / 256;    TL0 = (65536 - 50000) % 256;    ET0 = 1;    TR0 = 1;}void timer1_init(void){    EA = 1;    TMOD |= 0x10;    TH1 = (65536 - 1000) / 256;    TL1 = (65536 - 1000) % 256;    ET1 = 1;    TR1 = 1;}void timer0_isr() interrupt 1{    static unsigned char j = 0;    TH0 = (65536 - 50000) / 256;    TL0 = (65536 - 50000) % 256;    j++;    if(20 == j)    {        j = 0;        sec++;        if(60 == sec)        {            sec = 0;            min++;            if(60 == min)            {                min = 0;                hour++;                if(24 == hour)                {                    hour = 0;                }            }        }    }    tempdata[6] = segdata[sec / 10];    tempdata[7] = segdata[sec % 10];    tempdata[5] = 0x40;    tempdata[3] = segdata[min / 10];    tempdata[4] = segdata[min % 10];    tempdata[2] = 0x40;    tempdata[0] = segdata[hour / 10];    tempdata[1] = segdata[hour % 10];}void display(){    static unsigned char i = 0;            SEGPORT = 0x0;            seg_select = 1;            seg_select = 0;            SEGPORT = 0xff;            bit_select = 1;            bit_select = 0;            SEGPORT = tempdata[i];            seg_select = 1;            seg_select = 0;            SEGPORT = bitdata[i];            bit_select = 1;            bit_select = 0;        i++;      if(8 == i)      {            i = 0;      }}void timer1_isr() interrupt 3{    TH1 = (65536 - 1000) / 256;    TL1 = (65536 - 1000) % 256;    display();}void main(){     timer0_init();     timer1_init();     while(1);}
0 0
原创粉丝点击