找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1090|回复: 1
打印 上一主题 下一主题
收起左侧

MCU轮巡检测程序

[复制链接]
跳转到指定楼层
楼主
ID:660852 发表于 2019-12-10 18:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
.globl _start

_start:
//设置开机键按下后运行程序
        ldr r0, =0x1002330c
        ldr r1,[r0]
        orr r1,r1,#0x300
        str r1,[r0]

        // 关闭看门狗
        ldr        r0, =0x10060000                        
        mov        r1, #0
        str        r1, [r0]

        // 设置栈,以便调用c函数
        ldr        sp, =0x02060000                                                

        // 调用c函数
        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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2019-12-10 23:01 | 只看该作者
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表