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

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2988|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

ABOV單片機(jī)的四路按鍵中斷源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:285534 發(fā)表于 2020-3-21 10:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是好東西,請(qǐng)珍惜這等寶貝,絕對(duì)是惜世珍寶,ABOV單片機(jī)資料太少,如有有緣人,拿去(硬貨)//======================================================
// Used ABOV Semiconductor's code generator
// Device name : A31G111/112
//======================================================
#include "A31G11x_pcu.h"
#include "A31G11x_scucg.h"
#include "A31G11x_uartn.h"
#include "A31G11x_int.h"
#include "A31G11x_adc.h"
#include "debug_frmwrk.h"

/**********************************************************************
// Main Clock Selection
**********************************************************************/
//#define USED_HIRC
//#define USED_WDTRC
//#define USED_MOSC
//#define USED_SOSC
//Clock Out Selection ( Monitoring )
#define USED_CLKO
volatile uint32_t msec;
volatile uint32_t test;

void mainloop(void);
//uint32_t bo;        
//uint32_t bi;
void delay (void)
{
        uint32_t i;
        
        for (i = 0; i < 0x100000; i++) ;
}
// PE0 port interrupt  
void EXTINT0_Handler(void)
{
        uint32_t j;
        uint32_t status;
        
        status = EIntPE_GetIntStatus();
        if(status & (_BIT(0)))
        {
                for (j= 0; j<5; j++)
                {
                        GPIO_SetValue(PE, _BIT(5));
                        delay();
                        GPIO_ClearValue(PE, _BIT(5));
                        delay();
                }
        }
                EIntPE_ClearIntStatus(0xFF);
}
// PE1 port interrupt  
void EXTINT1_Handler(void)
{
        uint32_t j;
        uint32_t status;
        
        status = EIntPE_GetIntStatus();
        if(status & (_BIT(1)))
        {
                for (j= 0; j<5; j++)
                {
                        GPIO_SetValue(PE, _BIT(5));
                        delay();
                        GPIO_ClearValue(PE, _BIT(5));
                        delay();
                }
        }
                EIntPE_ClearIntStatus(0xFF);
}
// PE2 port interrupt  
void EXTINT2_Handler(void)
{
        uint32_t j;
        uint32_t status;
        
        status = EIntPE_GetIntStatus();
        if(status & (_BIT(2)))
        {
                for (j= 0; j<5; j++)
                {
                        GPIO_SetValue(PE, _BIT(6));
                        delay();
                        GPIO_ClearValue(PE, _BIT(6));
                        delay();
                }
        }
                EIntPE_ClearIntStatus(0xFF);
}
// PE3 port interrupt  
void EXTINT3_Handler(void)
{
        uint32_t j;
        uint32_t status;
        
        status = EIntPE_GetIntStatus();
        if(status & (_BIT(3)))
        {
                for (j= 0; j<5; j++)
                {
                        GPIO_SetValue(PE, _BIT(7));
                        delay();
                        GPIO_ClearValue(PE, _BIT(7));
                        delay();
                }               
        }        
        
        EIntPE_ClearIntStatus(0xFF);
}
/**********************************************************************
    // Main
**********************************************************************/
int main()
{
        init();                        // 初始化        
  mainloop();//主程序               
  return (0);
} //main
///////////////////////////////////////
void mainloop(void)
{
//  uint32_t tmp=0x0;
//   AD_Init();         //AD管腳初始化
// Test Pin setting PE5
        PCU_SetDirection(PE, 5, PUSH_PULL_OUTPUT);
        PCU_ConfigurePullupdown(PE, 5, DISPUPD);        
        GPIO_ClearValue(PE, _BIT(5));

        // Test Pin setting PE6
        PCU_SetDirection(PE, 6, PUSH_PULL_OUTPUT);
        PCU_ConfigurePullupdown(PE, 6, DISPUPD);
        GPIO_ClearValue(PE, _BIT(6));
        
        // Test Pin setting PE7
        PCU_SetDirection(PE, 7, PUSH_PULL_OUTPUT);
        PCU_ConfigurePullupdown(PE, 7, DISPUPD);
        GPIO_ClearValue(PE, _BIT(7));

//        // external interrupt test pin PE0
        PCU_SetDirection(PE, 0, INPUT);
        PCU_ConfigurePullupdown(PE, 0, ENPU);               
        PCU_SetDebounce(PE,0,HCLK_1024);
        
        // external interrupt test pin PE1
        PCU_SetDirection(PE, 1, INPUT);
        PCU_ConfigurePullupdown(PE, 1, ENPU);        
        PCU_SetDebounce(PE,1,HCLK_1024);
        
//        // external interrupt test pin PE2
        PCU_SetDirection(PE, 2, INPUT);
        PCU_ConfigurePullupdown(PE, 2, ENPU);               
        PCU_SetDebounce(PE,2,HCLK_1024);
        
        // external interrupt test pin PE3
        PCU_SetDirection(PE, 3, INPUT);
        PCU_ConfigurePullupdown(PE, 3, ENPU);        
        PCU_SetDebounce(PE,3,HCLK_1024);



        EIntPx_SetReg(PORTE, 0, 0, 1); //使能GPIO中斷        
        EIntPx_SetReg(PORTE, 1, 0, 1); //使能GPIO中斷
        EIntPx_SetReg(PORTE, 2, 0, 1); //使能GPIO中斷        
        EIntPx_SetReg(PORTE, 3, 0, 1); //使能GPIO中斷

        EIntCfg(EINT0_SEL,PORTE,0);         //外部中斷配置
        EIntCfg(EINT1_SEL,PORTE,1);  //外部中斷配置        
        EIntCfg(EINT2_SEL,PORTE,2);         //外部中斷配置
        EIntCfg(EINT3_SEL,PORTE,3);  //外部中斷配置
        
        EIntPE_ClearIntStatus(0xFF);        

        NVIC_EnableIRQ(EXINT0_IRQn);  //使能外部中斷        
        NVIC_EnableIRQ(EXINT1_IRQn);  //使能外部中斷
        NVIC_EnableIRQ(EXINT2_IRQn);  //使能外部中斷        
        NVIC_EnableIRQ(EXINT3_IRQn);  //使能外部中斷

        
        EInt_MaskDisable(EXINT0_MASK|EXINT1_MASK|EXINT2_MASK|EXINT3_MASK); //中斷源掩碼配置
        
  while(1){               
//     AD_scan();              //按鍵掃描
//     AD_Handle();                        //按鍵處理                 
//                for(tmp = 0; tmp < 1000000; tmp++);        
                delay();
                GPIO_SetValue(PB, _BIT(0));
                delay();
                GPIO_ClearValue(PB, _BIT(0));               
        }  //while

} //mainloop


全部資料51hei下載地址:
abov-四路按鍵中斷-.7z (219.92 KB, 下載次數(shù): 11)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表