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

標題: 改動了一個單片機程序,希望用定時器代替延時函數,并改變數字切換速度,求助 [打印本頁]

作者: lx駕    時間: 2018-12-27 16:19
標題: 改動了一個單片機程序,希望用定時器代替延時函數,并改變數字切換速度,求助
主要問題是不知道怎么加上定時器程序,以及切換顯示速度,希望有人指點。

#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();   
}  
}




作者: yzwzfyz    時間: 2018-12-27 22:07
定時器是獨立運行硬件設備。
用它替代延時要解決以下:
1、何時開始延時,做一個標記吧:B_START.
2、何時結束延時,再做一個標記:B_END
3、計多長時間,需要做一個計數器,用于計時。設計時器為R_JS。
4、初始化時,以上三個參數全清0。
5、主程序開始計時時:將B_START置1,并置R_JS=xx時間。是否延時結束,就查B_END是否=1,=1就表示延時時間結束,即時間到了。
6、定時器:當B_START=1時,將R_JS-1,當B_START=0時,不處理它。當R_JS-1=0時,置 B_END=1,表示時間到了,順便將B_START清0,停止計時。
7、記住:主程序查到時間到了(B_END=1),處理完事件后記得將B_END清0,以便下次再用。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1