串口中斷應用實例

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uint j=0;
uint  num=0;
uchar sl,sh,ml,mh,hl,hh;
uchar code x[13]={'0','1','2','3','4','5','6','7','8','9',':',0x0d,0x0a};
//--------------------------------------------------------------------------------------------
void Time0_int() interrupt 1 using 1
{
 TH0=(65536-40000)/256;
 TL0=(65536-40000)%256;
 num++;
 if(num>50)
  {
   num=0;sl++;
   if(sl>9)
    {
   sl=0;sh++;
   if(sh>5)
    {
     sh=0;ml++;
     if(ml>9)
      {
       ml=0;mh++;
      if(mh>5)
      {
     mh=0;hl++;
     if(hl>9)
      {
       hl=0;hh++;
       if(hh>5)
      hh=0;
      }
    }
    }
    }
  }
 SBUF=x[hh];
 while(TI==0);
 TI=0;
 SBUF=x[hl];
 while(TI==0);
 TI=0;
 SBUF=x[10];
 while(TI==0);
 TI=0;
 SBUF=x[mh];
 while(TI==0);
 TI=0;
 SBUF=x[ml];
 while(TI==0);
 TI=0;
 SBUF=x[10];
 while(TI==0);
 TI=0;
 SBUF=x[sh];
 while(TI==0);
 TI=0;
 SBUF=x[sl];
 while(TI==0);
 TI=0;
 SBUF=x[11];
 while(TI==0);
 TI=0;
 SBUF=x[12];
 while(TI==0);
 TI=0;
  }
}
//------------------------------------------------------------------------------------------------------
main()
{
 TMOD=0x21;
 TH0=(65536-40000)/256;                //20ms 中斷週期,共中斷3000次,顯示1分鐘
 TL0=(65536-40000)%256;
 TL1=0xfd;
 TH1=0xfd;
 SCON=0xd8;
 PCON=0x00;
 EA=1;
 ET0=1;
 TR0=1;
 TR1=1;
 while(1);
}
發佈了33 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章