1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7117|回復: 2
打印 上一主題 下一主題
收起左側

單片機多功能按鍵 標志位flag一直弄不好,求大神幫忙!

[復制鏈接]
跳轉到指定樓層
樓主
ID:299904 發表于 2018-4-2 09:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
按鍵按下給低電平   怎么正確使用 k1_flag 來實現k1鍵按下保持低電平同時進入功能菜單


uchar   k1_flag = 0;


void keyscan()//菜單鍵按下掃描函數定義
{
k1=1;
k2=1;//
k3=1;//
k4=1;//
//判斷菜單鍵k1是否按下
if(k1==0)
{
  delay(5);
  
  if(k1==0)
  {
   while(!k1);//松手檢測
   k1_num++;//記錄菜單鍵k1是第幾次按下,而判斷是調節秒、分還是時。
   if(k1_num==1 )//指示調節秒
   {   
       EX0=0;//關閉外部中斷0,使時間走動停止,準備調時間
    ds1307_write_date(0xd0,0,0x80|b_second);
    lcd_write_com(0x80+0x40+12);//數據指針和光標移動秒出
    lcd_write_com(0x0f);//使光標顯示,并光標處字符格符閃爍,用來提示用戶此時可以調節是秒,是分還是時。
   }
   if(k1_num==2)//指示調節分
   {
    lcd_write_com(0x80+0x40+9);//數據指針和光標移動分出
   }
   if(k1_num==3)//指示調節時
   {
    lcd_write_com(0x80+0x40+6);//數據指針和光標移動時出
   }
   if(k1_num==4)//退出時間調節菜單
   {
    k1_num=0;//菜單鍵k0按下清零
    lcd_write_com(0x0c);//恢復到時鐘走動狀態,即光標不顯示,不閃爍
    //將所調的時間轉換成bcd碼
    b_second=dectobcd(second);
    b_minute=dectobcd(minute);
    b_hour=dectobcd(hour);
    //將所調的時間向時鐘寫入
    ds1307_write_date(0xd0,2,b_hour);
    ds1307_write_date(0xd0,1,b_minute);
    ds1307_write_date(0xd0,0,b_second);
    EX0=1;//開外部中斷0,時間開始繼續走動
   }
   
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:305386 發表于 2018-7-15 16:11 | 只看該作者
flag其實就是個變量而已,只是它的中文意思就是標志,在實際使用中方便好記才這么定義。聲明這個變量之后,因為程序要實現的功能很多,為了區分各個程序段實現什么功能就用標志位的值,使用if語句判斷進入功能實現程序,當然flag的值由你來決定。比如我用DA轉換器實現LED的由亮到滅和由滅到亮的循環過程,先使flag初值為0,然后如果flag為0就先由亮到滅,當滅完了就程序設定flag為1,再寫如果flag為1,則由滅到亮,亮完了又設定flag為0。這里就使用了標志變量來標志功能的狀態。
學會靈活變通在程序中應用好標志位可以使程序更靈活。
希望我的回答能幫助到你。

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:323217 發表于 2018-7-15 17:28 | 只看該作者
樓上正解
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表