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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

中微的單片機程序請教大神 發現IO口沒有檢測到上拉的5V,更是檢測不了按鍵

[復制鏈接]
跳轉到指定樓層
樓主
ID:607312 發表于 2020-9-26 09:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
以下這個程序我用CMS89F6285B來做的,但是發現IO口沒有檢測到上拉的5V。更是檢測不了按鍵。請問=大神幫忙看看是哪里錯了

#include <cms.h>


#define                BSET(x,y)        x|=(1<<y)                //將寄存器x第y位置1
#define                BCLR(x,y)        x&=~(1<<y)                //將寄存器x第y位置0

#define                Key1                RB1                                //定義按鍵IO口
#define                Key2                RB2
#define                Key3                RB3
#define                Key4                RB4
#define                Led1                RE3                                //定義Led IO口


volatile unsigned char KeyData;                        //按鍵值
volatile unsigned char KeyFlag;                        //按鍵標志,0位有按鍵、1位有短按鍵、2位有長按鍵
//函數聲明
void Kscan(void);        
void Maink(void);

//主程序
void main(void)
{

        TRISA = 0B11111111;                                //配置IO狀態
        TRISB = 0B11111111;
        TRISC = 0B11111111;
        TRISE = 0B00000000;
        
        //PORTB = 0B11111111;
        
        WPUA = 0B11111111;                                //配置上拉情況
        WPUB = 0B00011110;
        WPUC = 0B00000000;
        WPUE = 0B00000000;                                                //1為使能上拉,0為禁止上拉
        
        while(1)
        {
                asm("clrwdt");                                        //清看門狗
               
                Kscan();                                                //按鍵掃描
                Maink();                                                //按鍵處理
        }
}

/***********************************************
函數名稱:Kscan
函數功能:按鍵掃描
入口參數:無
出口參數:無
備注:
************************************************/
void Kscan()
{        
        static unsigned char keycount,nkeycount,keyold;
        static unsigned int keylong;
        
        KeyData = 0;
        
        if(!Key1)                                                        //為低時有按鍵
                BSET(KeyData,0);
        if(!Key2)               
                BSET(KeyData,1);
        if(!Key3)               
                BSET(KeyData,2);
        if(!Key4)        
                BSET(KeyData,3);
        
        if(KeyData)                                                        //有按鍵                                                
        {        
                if(KeyData == keyold)                        //鍵值等于舊鍵值
                {
                        if(KeyFlag & 0x02)                        //有按鍵判斷長按鍵
                        {
                                if((KeyData == 0x99) && (++keylong >= 200))//匹配有長按鍵的按鍵,如需長按鍵可修改KeyData匹配值
                                {
                                        keylong =0;
                                        BSET(KeyFlag,0);        //有按鍵標志
                                        BSET(KeyFlag,2);        //長按鍵標志                                       
                                }                                                                                       
                        }                        
                        else if(++keycount >= 5)        //消抖動
                        {
                                BSET(KeyFlag,0);                //有按鍵標志
                                BSET(KeyFlag,1);                //短按鍵標志
                        }
                }
                else
                {
                        keyold =KeyData;
                        keycount =0;        
                }               
        }
        else                                                                //無按鍵
        {
                keycount =0;
                keylong =0;        
                if(++nkeycount >=5)                                //無按鍵超過5次時清標志位
                {
                        KeyFlag =0;
                        KeyData =0;
                        keyold =0;
                }        
        }        
}
/***********************************************
函數名稱:Maink
函數功能:按鍵處理
入口參數:無
出口參數:無
備注:
************************************************/
void Maink()
{
        if(KeyFlag & 0x01)
        {        
                BCLR(KeyFlag,0);
                                
                switch(KeyData)
                {
                        case 0x01: Led1 = 1; break;
                        case 0x02: Led1 = 0; break;
                        case 0x04: Led1 = 1; break;
                        case 0x08: Led1 = 0; break;                                                                                       
                }
        }        
}

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

使用道具 舉報

沙發
ID:654028 發表于 2020-9-26 14:12 | 只看該作者
電壓沒有的話找找電路原因
回復

使用道具 舉報

板凳
ID:607312 發表于 2020-9-26 16:26 | 只看該作者
心有浮生 發表于 2020-9-26 14:12
電壓沒有的話找找電路原因

沒有電路了,我直接把單片機VCC,GND接2條線出來測試了同樣是沒有電壓,我也打開了上拉。求大神指教啊
回復

使用道具 舉報

地板
ID:654028 發表于 2020-9-26 17:41 | 只看該作者
cdiyy 發表于 2020-9-26 16:26
沒有電路了,我直接把單片機VCC,GND接2條線出來測試了同樣是沒有電壓,我也打開了上拉。求大神指教啊

沒電壓怎么能驅動芯片工作啊
回復

使用道具 舉報

5#
ID:607312 發表于 2020-9-27 09:57 | 只看該作者
心有浮生 發表于 2020-9-26 17:41
沒電壓怎么能驅動芯片工作啊

5V是正常的,配置了IO口為輸入腳,同時打開了上拉電阻,可是該IO腳沒有輸入的檢測5V
回復

使用道具 舉報

6#
ID:235954 發表于 2020-9-27 17:00 | 只看該作者
TRISA<7:0>: PORTA 三態控制位 1 = PORTA 引腳被配置為輸入(三態) 0 = PORTA 引腳被配置為輸出
回復

使用道具 舉報

7#
ID:235954 發表于 2020-9-27 17:01 | 只看該作者
WPUA<7:0>: 弱上拉寄存器位 1 = 使能上拉 0 = 禁止上拉
回復

使用道具 舉報

8#
ID:607312 發表于 2020-9-29 14:09 | 只看該作者
梁廷明 發表于 2020-9-27 17:01
WPUA: 弱上拉寄存器位 1 = 使能上拉 0 = 禁止上拉

求大神幫忙看看如何修改啊,搞得懷疑人生了
回復

使用道具 舉報

9#
ID:705966 發表于 2021-11-6 10:50 | 只看該作者
        TRISA = 0B11111111;                                //配置IO狀態
        TRISB = 0B11111111;
        TRISC = 0B11111111;
1全改為0試試
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品揄拍一区二区 | 天天干天天爱天天 | 蜜桃视频在线观看免费视频网站www | 天天夜碰日日摸日日澡 | 久久精品91 | 91久久婷婷 | 一级做a爰片性色毛片16 | 日本在线免费 | 成人福利片 | 成人精品一区二区三区四区 | 久久久精品影院 | 欧美综合网 | 最新国产视频 | 成人在线精品视频 | caoporn免费| 欧美成人精品一区二区三区 | 中文字幕成人在线 | 精品一区二区三区中文字幕 | a欧美| 国产精品揄拍一区二区久久国内亚洲精 | 精品欧美一区二区精品久久久 | 毛片黄片免费看 | 成av在线| 久久福利电影 | 国产成人精品999在线观看 | 亚洲精品一区二区在线 | 精品久久久久久亚洲精品 | 在线免费av观看 | 久久精品国产一区二区三区不卡 | 国产精品成人在线播放 | 先锋资源亚洲 | 一级黄色录像毛片 | 久久蜜桃资源一区二区老牛 | 国产成人高清视频 | 欧美日韩亚洲国产综合 | 91原创视频在线观看 | 国产精品久久久久久久免费大片 | 亚洲黄色成人网 | 亚洲精品视频一区 | 日韩a级片| 国产精品一码二码三码在线 |