欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2830|回復: 0
打印 上一主題 下一主題
收起左側

用中斷T0定時器實現簡單的時鐘

[復制鏈接]
跳轉到指定樓層
樓主
ID:71407 發表于 2014-12-31 01:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*用573鎖存器控制和單片機腳直接位選控制數碼管
用中斷T0作為秒計數器實現實時時鐘功能,由于未學鍵盤,調時日后再加*/
#include <reg52.h>
#include <intrins.h>
#define unint unsigned int
#define unchar unsigned char
void delay(unint i);      //函數聲名
char num;
//此表為 LED 的字模, 共陰數碼管 0-9  -
unsigned char code   Disp_Tab[] = {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6,0x02};
unsigned char code   dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};    //位碼   查表的方法控制
/************主函數**********************/
main()
{  
   unint i;
long int LedNumVal=0 ;
   unint LedOut[10];
    num=0;

TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
  while(1)
  {  
     if(num>=20)   //控制數字變化速度
  {
   num=0;
     ++LedNumVal;
  if(LedNumVal==86400)
  LedNumVal=0;
  }
  LedOut[7]=Disp_Tab[LedNumVal/3600%100/10];//時的十位
     LedOut[6]=Disp_Tab[LedNumVal/3600%10];//時的個位
     LedOut[5]=Disp_Tab[10];//分隔桿
     LedOut[4]=Disp_Tab[LedNumVal%3600/60%100/10];//分的十位
  LedOut[3]=Disp_Tab[LedNumVal%3600/60%10];//分的個位
     LedOut[2]=Disp_Tab[10];//分隔桿
     LedOut[1]=Disp_Tab[LedNumVal%60%100/10];//秒的十位
     LedOut[0]=Disp_Tab[LedNumVal%60%10];//秒的個位
  for( i=0; i<8; i++)
  {  
   P0 = LedOut[i];
   P2 = dispbit[i];   //使用查表法進行位選   
   delay(1);   //掃描間隔時間   太長會數碼管會有閃爍感
  }
  }   
}

void delay(unint z)//延時
{
unint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void time0() interrupt 1//中斷服務
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
num++;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表