亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 890|回復: 4
收起左側

九齊芯片實現非阻塞按鍵功能,但代碼程序出現錯誤,求解答

[復制鏈接]
ID:1159575 發表于 2025-9-25 10:56 | 顯示全部樓層 |閱讀模式
想按下按鍵1時io口翻轉,但功能實現不了


#include <ny8.h>
#include "ny8_constant.h"
#include "main.h"
//--------------- Global Definition ----------------------------------------
//--------------------------------------------------------------------------
unsigned char key_num;

void delay(int);
void DriverInit();
void key_tick();
unsigned char key_getnum();
unsigned char key_getstate();
//--------------------------------------------------------------------------
void main(void)
{
        DriverInit();
        key_num = key_getnum();

        while(1)
        {
                if(key_num == 1)
                {
                        PB0 = !PB0;
                        PB1 = !PB1;
                        PB2 = !PB2;
                        PB3 = !PB3;
                }
       
       
        }

}

void DriverInit()
{
        DISI();
//;Initial GPIO   
    IOSTA = C_PA0_Input | C_PA1_Input;   
    PORTA = 0xFF;                           
    APHCON = 0b11111100;
   
    IOSTB = C_PB_Output;     
    PORTB = 0x00;                          
  

//;Initial Timer0
        PCON1 = C_TMR0_Dis;                                                // Disable Timer0
        TMR0 = 0x7C;                                                                // 初始值125
        T0MD = C_PS0_TMR0 | C_PS0_Div32 ;               
       
       
        INTE = C_INT_TMR0;       
        T0IF = 0;//中斷標志位

       
//;Enable Timer0 & Global interrupt bit
        PCON1 = C_TMR0_En;                                                 // Enable Timer0
        ENI();                                                                        // Enable all unmasked interrupts                       
       
   


}


unsigned char key_getnum()
{
        uchar temp;
       
        if(key_num)
        {
                temp = key_num;
                key_num= 0;
                return temp;
        }
        return 0;
}



unsigned char key_getstate()
{
       
        if(KEY1 == 0)
        {
                return 1;
        }
        if(KEY2 == 0)
        {
                return 2;
        }
        return 0;
}


void key_tick()
{
        static uchar count;
        static uchar now,last;
        count++;
        if(count % 5 ==0)
        {
                last = now;
                now = key_getstate();
                if(last == 0 && now != 0)
                {
                        key_num = now;
                }
        }
}




//--------------------------------------------------------------------------
void isr(void) __interrupt(0)
{
       
        if(INTFbits.T0IF)
        {
                key_tick();
                INTF= (unsigned char)~(C_INT_TMR0);        // Clear T0IF flag bit               
               
        }

}

//--------------------------------------------------------------------------
void delay(int count)
{
        int i;
        for(i=1;i<=count;i++)
        ;
}
回復

使用道具 舉報

ID:1096929 發表于 2025-9-27 10:19 | 顯示全部樓層
具體問題出現是什么,你這個貌似沒有消抖啊
回復

使用道具 舉報

ID:1159575 發表于 2025-9-28 16:54 | 顯示全部樓層
我在定時器里面每20ms檢測一次按鍵,消抖了應該。
unsigned char key;
void main(void)
{
        DriverInit();
        key = key_getnum();
        while(1)
        {
                if(key == 1)
                {
                        PB0 = !PB0;
                        PB1 = !PB1;
                        PB2 = !PB2;
                        PB3 = !PB3;
                }  
        }
}
我之前主函數漏了一個變量,但是改完還是實現不了功能,我是按照b站江科大的案例進行寫的, 我初始化改為PORTB = 0xF0;   我PB口設置為輸出燈仿真,初始狀態就是燈一直閃.然后按鍵功能實現不了。哪里出問題了我看不出來
回復

使用道具 舉報

ID:1159575 發表于 2025-9-29 09:20 | 顯示全部樓層
cqycqy666 發表于 2025-9-28 16:54
我在定時器里面每20ms檢測一次按鍵,消抖了應該。
unsigned char key;
void main(void)

解決了,就是沒有關看門狗
回復

使用道具 舉報

ID:1096929 發表于 2025-9-29 10:42 | 顯示全部樓層
cqycqy666 發表于 2025-9-28 16:54
我在定時器里面每20ms檢測一次按鍵,消抖了應該。
unsigned char key;
void main(void)

這個問題你把代碼輸入到通義千問里面看看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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