找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9616|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機學(xué)習(xí)--常用的單片機子函數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51090 發(fā)表于 2014-9-22 16:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//延時函數(shù)
void delay(unit t)
{
  while(t--);
}

void delayms(uint xms)
{
  uint i,j;
  for(i=xms;i>0;i--)
   for(j=113;j>0;j--);
}


//共陰極數(shù)碼管編碼
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};


//共陰數(shù)碼管顯示函數(shù)
void smg_display(uchar numdis)
{
  uchar shi,ge;
  shi=numdis/10;
  ge=numdis;

  dula=1;
P0=table[shi];           //送段選數(shù)據(jù)
  dula=0;
P0=0xff;                 //送段選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存時
wela=1;                  //原來原來段選數(shù)據(jù)通過位選鎖存器造成混亂
P0=0xfe;                 //送位選數(shù)據(jù)
  wela=0;
delayms(5);              //延時

  dula=1;
  P0=table[ge];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfd;
  wela=0;
  delayms(5);
}


//定時器0、1初始化函數(shù)
void TR0_init()
{
TMOD=0x01;               //設(shè)置定時器0為工作方式1(M1M0為01)
TH0=(65536-45872)/256;   //裝初值11.0592M晶振定時50ms數(shù)為45872
  TL0=(65536-45872)%6;

//TH1=(65536-45872)/256;
//TL1=(65536-45872)%6;
EA=1;                    //開總中斷
ET0=1;                   //開定時器0中斷
//ET1=1;                   //開定時器1中斷
TR0=1;                   //啟動定時器0
//TR1=1;                   //啟動定時器1

}


//定時器0中斷函數(shù)
void T0_time() interrupt 1
{
TH0=(65536-45872)/256;   //重裝初值
  TL0=(65536-45872)%6;
num1++;                  //num每加1次判斷一次是否到20次
if(num==20)              //如果到了20次,說明1秒時間到
  {
   num=0;                 //然后把num清0重新再計20次
   led1=~led1;            //把發(fā)光管狀態(tài)取反
  }
}


//獨立鍵盤按鍵檢測
void keyscan()
{
  if(key1==0)
  {
   delayms(10);
      if(key1==0)
      {
        num++;
        if(num==60)
        num=0;
       while(!key1);              //等待按鍵釋放
      }
  }

  if(key2==0)
  {
   delayms(10);
      if(key2==0)
      {
        if(num==0)
        num=60;
        num--;
       while(!key2);              //等待按鍵釋放
      }
  }

  if(key3==0)
  {
   delayms(10);
      if(key3==0)
      {
        num=0;
       while(!key3);              //等待按鍵釋放
      }
  }

  if(key4==0)
  {
   delayms(10);
      if(key4==0)
      {
       while(!key4);              //等待按鍵釋放
        delayms(10);
        while(!key4);
        TR0=~TR0;
      }
  }
}

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表