專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

定時(shí)器中斷0~100秒

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2011年08月10日   【字體:

電路很簡單,我就不畫圖了,四位數(shù)碼管 通過2個74hc595連起來,1個595負(fù)責(zé)段選,1個595負(fù)責(zé)位選,利用單片機(jī)的定時(shí)器中斷實(shí)現(xiàn)0-100數(shù)字的循環(huán)顯示.程序已經(jīng)通過本人測試通過

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rck=P0^0;
sbit sck=P0^1;
sbit si=P0^2;
uchar num[]={0x80,0xed,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08};
uint b=0,i=0,j=0,k;
void write_595(uchar x)//對595芯片進(jìn)行設(shè)初始化
 {
  for(k=0;k<8;k++) //移位寄存器
   {
    x>>=1;
 sck=0;
 si=CY;
 sck=1;
   }
 }
void date_danpianji()//對單片機(jī)計(jì)時(shí)器進(jìn)行初始化

 {
  EA=1;//總中斷開啟
  ET1=1;//定時(shí)器開啟
  TMOD=0X10;//選擇定時(shí)器工作模式
  TH1=(65536-33333)/256;//除整賦給高八位
  TL1=(65536-33333)%256;//除余賦給第八位
  TR1=1; //啟動定時(shí)器 
 }
void main()//主函數(shù)
 {
  date_danpianji();//調(diào)用定時(shí)器中斷
  while(1)//循環(huán)
   {   
    if(b==20)//檢測中斷函數(shù)是否滿足b==20,如果滿足則執(zhí)行
     {
   b=0;
   i++;
   if(i==10)
    {
     i=0;
     j++;
     if(j==10)j=0;
    }
  }
    write_595(num[j]);
    write_595(num[i]);
    rck=0;
    rck=1; 
   }
 } 
void ext() interrupt 3 using 1 //定時(shí)器中斷
{
  TH1=(65536-33333)/256;
  TL1=(65536-33333)%256;
  b++;
}

關(guān)閉窗口

相關(guān)文章