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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3818|回復: 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;                                                                                       
                }
        }        
}

回復

使用道具 舉報

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條線出來測試了同樣是沒有電壓,我也打開了上拉。求大神指教啊

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

使用道具 舉報

ID:607312 發表于 2020-9-27 09:57 | 顯示全部樓層
心有浮生 發表于 2020-9-26 17:41
沒電壓怎么能驅動芯片工作啊

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

使用道具 舉報

ID:235954 發表于 2020-9-27 17:00 | 顯示全部樓層
TRISA<7:0>: PORTA 三態控制位 1 = PORTA 引腳被配置為輸入(三態) 0 = PORTA 引腳被配置為輸出
回復

使用道具 舉報

ID:235954 發表于 2020-9-27 17:01 | 顯示全部樓層
WPUA<7:0>: 弱上拉寄存器位 1 = 使能上拉 0 = 禁止上拉
回復

使用道具 舉報

ID:607312 發表于 2020-9-29 14:09 | 顯示全部樓層
梁廷明 發表于 2020-9-27 17:01
WPUA: 弱上拉寄存器位 1 = 使能上拉 0 = 禁止上拉

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

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产婷婷在线视频 | 伊人久久在线观看 | 国内精品久久久久 | 国产不卡一区 | 国产精品中文字幕一区二区三区 | 亚洲精品视频在线播放 | 日本中出视频 | 欧美日韩一二区 | 久久久人成影片一区二区三区 | 99精品99 | 日韩影音| 一区二区三区在线免费观看视频 | 黄色网址免费看 | 欧美二区在线 | 在线看免费 | 日韩在线中文字幕 | 二区中文字幕 | 在线观看中文字幕 | 国产成人91| 亚洲综合一区二区三区 | 国产成人综合久久 | 毛片毛片毛片毛片毛片 | 亚洲欧美国产精品久久 | 久久er精品 | 亚洲精品乱码久久久久久蜜桃91 | 浴室洗澡偷拍一区二区 | 国产毛片视频 | 2020天天操 | 性高湖久久久久久久久aaaaa | av三级在线观看 | 天天亚洲 | 国产精品美女久久久久久免费 | 亚洲一区二区三区四区在线观看 | 欧美日韩精品 | 国产伊人精品 | 久久久久一区二区三区 | tube国产 | 欧美理伦片在线播放 | 精品一区二区三区在线视频 | 精品自拍视频在线观看 | 羞羞在线观看视频 |