找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1123|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

MCU輪巡檢測程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:660852 發(fā)表于 2019-12-10 18:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
.globl _start

_start:
//設(shè)置開機鍵按下后運行程序
        ldr r0, =0x1002330c
        ldr r1,[r0]
        orr r1,r1,#0x300
        str r1,[r0]

        // 關(guān)閉看門狗
        ldr        r0, =0x10060000                        
        mov        r1, #0
        str        r1, [r0]

        // 設(shè)置棧,以便調(diào)用c函數(shù)
        ldr        sp, =0x02060000                                                

        // 調(diào)用c函數(shù)
        bl        main        

halt:
        b halt
key.c
#define     GPM1CON     (*(volatile unsigned long *) 0x11000280)
#define     GPM1DAT     (*(volatile unsigned long *) 0x11000284)
#define     GPX1CON     (*(volatile unsigned long *) 0x11000C20)
#define     GPX1DAT     (*(volatile unsigned long *) 0x11000C24)

#define     GPX2CON     (*(volatile unsigned long *) 0x11000C40)
#define     GPX2DAT     (*(volatile unsigned long *) 0x11000C44)

static void GPIO_Init(void)
{
        /*LED_INIT*/
        GPM1CON &= ( ~(0xF << 16));
        GPM1CON |= (0x1 << 16);
        GPM1DAT &= 0x0;

        GPX1CON &= ( ~(0xF << 12));
        GPX1CON |= (0x1 << 12);
        GPX1DAT &= 0x0;

        //GPX2CON &= ( ~(0xF << 8));
        //GPX2CON |= (0x1 << 8);
        //GPX2DAT |= (0x1 << 2);

        /*KEY_INIT*/
        GPX2CON &= ~0xFF;
        GPX2CON |= 0x00;

        GPX2CON &= ( ~(0xFF <<16));
        GPX2CON |= (0x00 << 16);

        GPX2DAT &= 0x0;
}

void delay(int time)
{
        while (time--)
                ;   
}

int main(void)
{
        unsigned char keyValue1 ;
        unsigned char keyValue2 ;
        GPIO_Init();
        while(1)
        {
                keyValue1 = GPX2DAT;
                keyValue1 &= (~(0xFF << 2));
                keyValue2 = GPX2DAT >> 4;
                keyValue2 &= (~(0xFF << 2));

                switch(keyValue1){
                        case 0x01:
                                GPM1DAT |= (0x1 << 4);
                                GPX1DAT |= (0x1 << 3);
                                break;
                        case 0x02:
                                GPM1DAT |= (0x1 << 4);
                                break;
                        default :
                                GPM1DAT &= ~(0x1 << 4);
                                GPX1DAT &= ~(0x1 << 3);
                                break;
                }
                switch(keyValue2){
                        case 0x01:
                                GPM1DAT |= (0x1 << 4);
                                GPX1DAT &= ~(0x1 << 3);
                                delay(0x10000);
                                GPX1DAT |= (0x1 << 3);
                                GPM1DAT &= ~(0x1 << 4);
                                delay(0x10000);
                                break;
                        case 0x02:
                                GPX1DAT |= (0x1 << 3);
                                break;
                        default :
                                GPM1DAT &= ~(0x1 << 4);
                                GPX1DAT &= ~(0x1 << 3);
                                break;
                }
        }
        return 0;
}


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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-12-10 23:01 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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