找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

改動(dòng)了一個(gè)單片機(jī)程序,希望用定時(shí)器代替延時(shí)函數(shù),并改變數(shù)字切換速度,求助

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 6 黑幣 回復(fù)本帖可獲得 2 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:452212 發(fā)表于 2018-12-27 16:19 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
主要問(wèn)題是不知道怎么加上定時(shí)器程序,以及切換顯示速度,希望有人指點(diǎn)。

#include "reg52.h"   
typedef unsigned int u16;  
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x5b,0x3f,0x4f,0x66,0x06,0x3f};
         
void delay(u16 i)
{
while(i--);
}

void DigDisplay()
{
u8 i;
for(i=0;i<7;i++)
{
  switch(i)  
  {
   case(0):
    LSA=1;LSB=1;LSC=1; break;
   case(1):
    LSA=0;LSB=1;LSC=1; break;
   case(2):
    LSA=1;LSB=0;LSC=1; break;
   case(3):
    LSA=0;LSB=0;LSC=1; break;
   case(4):
    LSA=1;LSB=1;LSC=0; break;
   case(5):
    LSA=0;LSB=1;LSC=0; break;
   case(6):
    LSA=1;LSB=0;LSC=0; break;
  }
  P0=smgduan[ i];
  delay(100);
  P0=0x00;
}
}

void main()
{
while(1)
{
  DigDisplay();   
}  
}



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

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2018-12-27 22:07 | 只看該作者
定時(shí)器是獨(dú)立運(yùn)行硬件設(shè)備。
用它替代延時(shí)要解決以下:
1、何時(shí)開(kāi)始延時(shí),做一個(gè)標(biāo)記吧:B_START.
2、何時(shí)結(jié)束延時(shí),再做一個(gè)標(biāo)記:B_END
3、計(jì)多長(zhǎng)時(shí)間,需要做一個(gè)計(jì)數(shù)器,用于計(jì)時(shí)。設(shè)計(jì)時(shí)器為R_JS。
4、初始化時(shí),以上三個(gè)參數(shù)全清0。
5、主程序開(kāi)始計(jì)時(shí)時(shí):將B_START置1,并置R_JS=xx時(shí)間。是否延時(shí)結(jié)束,就查B_END是否=1,=1就表示延時(shí)時(shí)間結(jié)束,即時(shí)間到了。
6、定時(shí)器:當(dāng)B_START=1時(shí),將R_JS-1,當(dāng)B_START=0時(shí),不處理它。當(dāng)R_JS-1=0時(shí),置 B_END=1,表示時(shí)間到了,順便將B_START清0,停止計(jì)時(shí)。
7、記住:主程序查到時(shí)間到了(B_END=1),處理完事件后記得將B_END清0,以便下次再用。

評(píng)分

參與人數(shù) 1黑幣 +6 收起 理由
lx駕 + 6 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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