用数码管和定时器做的时钟

来源:本站
导读:目前正在解读《用数码管和定时器做的时钟》的相关信息,《用数码管和定时器做的时钟》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《用数码管和定时器做的时钟》的详细说明。
简介:呵呵,感谢刘老师的讲解,终于做出来了,没有白费2个小时的时间。感觉比较难的是时钟的算法。继续努力。

第4个程序:用数码管和定时器做的时钟。

#includetypedef unsigned char  uchar;typedef  unsigned int  uint;sbit duan=P1^7;sbit wei=P1^6; uint shuaxin=0;unsigned long int m=0;uchar code disap_tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7f,0x67};uchar code shuaxin_tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void timer0_init(void){  TMOD &= 0xF0;  //设置定时器模式     TMOD |= 0x02;  //设置定时器模式    TL0 = 0x06;  //设置定时初值  TH0 = 0x06;  //设置定时重载值  TR0=1;  //定时器开始工作     EA=1; //开总中断开关  ET0=1; //允许定时器中断}void main(void){  uchar shiwan,wan,qian,bai,shi,ge;    timer0_init();  while(1)  {      shiwan=(m/3600)/10;   wan=(m/3600)%10;   qian=((m/60)%60)/10;     bai=((m/60)%60)%10;     shi=(m%60)/10;     ge=(m%60)%10;           switch(shuaxin)           { case 0:  duan=1;P0=0x00;duan=0;                 wei=1;P0=shuaxin_tab[0];wei=0;//刷新第一个数码管,刷新时间1ms            P0=0X00;      duan=1;P0=disap_tab[shiwan];duan=0;    break;                                 case 1:  duan=1;P0=0x00;duan=0;                wei=1;P0=shuaxin_tab[1];wei=0;        P0=0X00;      duan=1;P0=disap_tab[wan];duan=0;      break;        case 2:  duan=1;P0=0x00;duan=0;                wei=1;P0=shuaxin_tab[2];wei=0;         P0=0X00;      duan=1;P0=0x40;duan=0;    break;       case 3:  duan=1;P0=0x00;duan=0;                 wei=1;P0=shuaxin_tab[3];wei=0;         P0=0X00;      duan=1;P0=disap_tab[qian];duan=0;    break;                case 4:  duan=1;P0=0x00;duan=0;                 wei=1;P0=shuaxin_tab[4];wei=0;          P0=0X00;      duan=1;P0=disap_tab[bai];duan=0;    break;                   case 5:  duan=1;P0=0x00;duan=0;                wei=1;P0=shuaxin_tab[5];wei=0;        P0=0X00;      duan=1;P0=0x40;duan=0;     break;        case 6:  duan=1;P0=0x00;duan=0;                wei=1;P0=shuaxin_tab[6];wei=0;         P0=0X00;      duan=1;P0=disap_tab[shi];duan=0;    break;       case 7:  duan=1;P0=0x00;duan=0;                 wei=1;P0=shuaxin_tab[7];wei=0;         P0=0X00;      duan=1;P0=disap_tab[ge];duan=0;    break;    default: P0=0x00;     break;             }   }}void timer0_isr()interrupt 1{  static uchar i=0;   static uint counter=0;         i++;        counter++;    if(4==i)//说明1ms到了,该下一个数码管刷新了     {  i=0;    shuaxin++;    if(8==shuaxin)      shuaxin=0;    } if(4000==counter)//1s时间到了,要显示数字了    { counter=0;      m++;            if(86400==m)             m=0;     }}

用数码管和定时器做的时钟用数码管和定时器做的时钟

提醒:《用数码管和定时器做的时钟》最后刷新时间 2024-03-14 01:19:18,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《用数码管和定时器做的时钟》该内容的真实性请自行鉴别。