久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

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

51單片機(jī)按鍵流水燈程序問題

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 2 黑幣 回復(fù)本帖可獲得 2 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:900875 發(fā)表于 2021-11-14 23:11 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序燒進(jìn)單片機(jī)后k2(暫停鍵)按下無效  反而k3(切換流水燈)按下會(huì)暫停在最后一個(gè)燈   這是為什么呢

#include "stdio.h"
#include "reg51.h"        
#include "intrins.h"

#define led P2

typedef unsigned int u16;         
typedef unsigned char u8;

sbit k1=P3^1;
sbit k2=P3^2;        
sbit k3=P3^3;        
sbit k4=P3^4;        
bit SF=1;
bit UF=0;



void delay(u16 i)
{
        while(i--);        
}



unsigned char Key_Scan()
{
         unsigned char  KeyNum = 0;
         k1=1;
         k2=1;
         k3=1;
         k4=1;
         if(!k1||!k2||!k3||!k4)
         {
                 delay(1000);
                 if(!k1||!k2||!k3||!k4)
                 {
                         if(!k1)
                         {
                                 KeyNum=1 ;
                         }
                          if(!k2)
                                {
                                        KeyNum=2 ;
                                }
                                 if(!k3)
                                 {
                                 KeyNum=3;
                                 }
                                  if(!k4)
                                        {
                                        KeyNum=4;
                                        }
                }
    while(!k1||!k2||!k3||!k4);
                 }
         return KeyNum;
                 }


void Key_Service()
{  
        u8 i;
  switch(Key_Scan())
        {
               
                case 1:SF = 1;break;//啟動(dòng)
                case 2:SF = 0;break;//停止
                case 3:UF = 1;break;//流水燈1
                case 4:UF = 0;break;//流水燈2
                default:break;
        }
        if(SF)
        {
          P2=0xfe;
                if(UF)
                {
                        for(i=0;i<7;i++)
                        {
                        led=_cror_(led,1);
                  }
                }
                else
                 {
                         for(i=0;i<7;i++)
                         {
                         led=_crol_(led,1);
                         delay(5000);
                         }
                }
                delay(50000);
        }
}




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




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

使用道具 舉報(bào)

沙發(fā)
ID:101869 發(fā)表于 2021-11-15 05:27 來自手機(jī) | 只看該作者
貌似KeyNum沒有死作用啊,這個(gè)你沒有調(diào)用起來啊
回復(fù)

使用道具 舉報(bào)

板凳
ID:900875 發(fā)表于 2021-11-15 17:23 | 只看該作者
非凡科技 發(fā)表于 2021-11-15 05:27
貌似KeyNum沒有死作用啊,這個(gè)你沒有調(diào)用起來啊

不好意思可以說的更清楚一點(diǎn)嗎 我沒看出什么問題
回復(fù)

使用道具 舉報(bào)

地板
ID:659782 發(fā)表于 2021-11-15 19:12 | 只看該作者
unsigned char Key_Scan() 函數(shù)實(shí)現(xiàn)掃描哪個(gè)按鍵按下了,void Key_Service()函數(shù)里要根據(jù)調(diào)用Key_Scan()的返回值做出處理,你的程序只處理了開始和花樣一,以及開始花樣二,對(duì)于停止鍵按下程序未作處理,所以你按下停止鍵沒有反應(yīng),與if(SF)相對(duì)應(yīng)添加else   P2=0x00;即可;
回復(fù)

使用道具 舉報(bào)

5#
ID:659782 發(fā)表于 2021-11-15 19:16 | 只看該作者
sunnyqingfeng 發(fā)表于 2021-11-15 19:12
unsigned char Key_Scan() 函數(shù)實(shí)現(xiàn)掃描哪個(gè)按鍵按下了,void Key_Service()函數(shù)里要根據(jù)調(diào)用Key_Scan()的 ...

另外你的程序只能實(shí)現(xiàn)一次流水燈,因?yàn)槊勘O(jiān)測(cè)到一次按鍵按下,只執(zhí)行了一次for循環(huán)
回復(fù)

使用道具 舉報(bào)

6#
ID:779523 發(fā)表于 2021-11-15 20:09 | 只看該作者
非凡科技 發(fā)表于 2021-11-15 05:27
貌似KeyNum沒有死作用啊,這個(gè)你沒有調(diào)用起來啊

http://www.zg4o1577.cn/bbs/dpj-106198-1.html這個(gè)這個(gè)
回復(fù)

使用道具 舉報(bào)

7#
ID:584814 發(fā)表于 2021-11-16 08:16 | 只看該作者
unsigned char Key_Scan()
{
         unsigned char  KeyNum = 0;
         k1=1;         k2=1;         k3=1;         k4=1;

         if(!k1||!k2||!k3||!k4)
         {..........  }

    while(!k1||!k2||!k3||!k4);
                 }
         return KeyNum;
                 }

看這個(gè)函數(shù):
1、定義了k1-k4的值然后判斷,有意義么 ?
2、 if(!k1||!k2||!k3||!k4)起作用的話會(huì)死在 while(!k1||!k2||!k3||!k4);呵呵呵
回復(fù)

使用道具 舉報(bào)

8#
ID:435676 發(fā)表于 2021-11-16 09:19 | 只看該作者
程序問題哦!重新寫個(gè)吧百度一下!參考一下他人的寫法和思路!你這個(gè)不需要指點(diǎn)哦思路是錯(cuò)的,指點(diǎn)就是整體翻新思路寫法。一句話你的程序只寫到了10%;還有90%
回復(fù)

使用道具 舉報(bào)

9#
ID:950257 發(fā)表于 2021-11-16 09:35 | 只看該作者
程序在執(zhí)行流水燈程序,cpu被流水燈占用,沒有時(shí)間檢測(cè)按鍵,可以使用中斷檢測(cè)按鍵
回復(fù)

使用道具 舉報(bào)

10#
ID:435676 發(fā)表于 2021-11-16 09:45 | 只看該作者
按鍵掃描程序打開串口監(jiān)測(cè)看一下,在運(yùn)行時(shí)有沒有正常按照你的思路走。寫程序時(shí)建議您經(jīng)常借用串口監(jiān)測(cè)來調(diào)試程序。這樣問題會(huì)得到更快的解決
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩精品在线 | 精品国产一区探花在线观看 | 91欧美精品成人综合在线观看 | 国产美女视频一区 | 精品久久国产视频 | 伊人天堂网 | 久久久久国产一区二区三区 | 欧美日韩精品专区 | 在线精品一区 | 久草福利 | 综合久久av | www.youjizz.com日韩 | 久久99这里只有精品 | 亚洲一区| 午夜精品久久久久久久星辰影院 | 国产精品久久久久久婷婷天堂 | 日产久久 | 欧美激情综合色综合啪啪五月 | 日本成人午夜影院 | 欧美一区免费 | 人人澡人人射 | 欧美一区二区三区在线播放 | 欧美视频区| 亚洲精品性视频 | 久久精品国产一区老色匹 | 国产资源视频 | 欧美中文字幕 | 亚洲一区二区在线播放 | 欧美日韩国产一区二区三区 | 91高清视频在线观看 | 国产伦精品一区二区三区高清 | 欧洲在线视频 | 国产在线97| 成人一区精品 | 国产一区高清 | 国产精品免费看 | 欧美 日韩 国产 成人 在线 | 成人免费大片黄在线播放 | 欧美www在线 | 超碰在线影院 | 国产精品二区三区在线观看 |