⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avrisr.c

📁 Atmega16-ucosii的移植范例
💻 C
字号:
// AVRisr.c
/* AVR ISR */

#include "includes.h"

/*************************************************************************************************************/

void IsrEint0(void)
{


}
/*************************************************************************************************************/

void IsrEint1(void)
{

}

/*************************************************************************************************************/
SIGNAL(SIG_OUTPUT_COMPARE2)
//void OSIntTimer2(void)
{
    static unsigned char keycode=0;
    static unsigned char keypre=0;
    static unsigned char keynow=0;

    static unsigned char status=0;
    keynow=PINC&0b11111000;
    
    if(keynow!=keypre)
    {
        //有键按下
        keypre=keynow;//保存本次按键端口值

        status=0x11;
    }
    else
    {
        if(status==0x11)
        {
            status=0x22;
        }
        else
        if(status==0x22)
        {
            status=0x33;
        }
        else
        if(status==0x33)
        {
            status=0x00;

            if((keypre & 0b00001000)==0)
            {   
                if(keycode==STATUS_LOOP){keycode=STATUS_LOOP1;}
                else
                if(keycode==STATUS_LOOP1){keycode=STATUS_LOOP2;}
                else
                if(keycode==STATUS_LOOP2){keycode=STATUS_LOOP3;}
                else
                if(keycode==STATUS_LOOP3){keycode=STATUS_LOOP4;}
                else
                if(keycode==STATUS_LOOP4){keycode=STATUS_LOOP5;}
                else
                if(keycode==STATUS_LOOP5){keycode=STATUS_LOOP6;}
                else
                if(keycode==STATUS_LOOP6){keycode=STATUS_LOOP7;}
                else
                if(keycode==STATUS_LOOP7){keycode=STATUS_LOOP8;}
                else
                if(keycode==STATUS_LOOP8){keycode=STATUS_LOOP9;}
                else
                if(keycode==STATUS_LOOP9){keycode=STATUS_LOOP;}
                else
                {keycode=STATUS_LOOP;}
    
                //send message 
                MailBoxMsg[0]=keycode;
                MailBoxMsg[1]=status;
                MailBoxMsg[2]=PINC;
                OSMboxPost(MailBox,(void *)MailBoxMsg);
            }
        }
        else
        {
            status=0x00;
        }       
    } 
    
        
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -