EEliod嵌入式实验4

来源:互联网 发布:石油价格数据库 编辑:程序博客网 时间:2024/05/24 02:36
实验内容:

按键

显示

功能

01

on01

显示键值01

02

on02

显示键值02

03

on03

显示键值03

04

on04

显示键值04

05

off

关闭中断源

06

on

开启中断源

#include <stdio.h>#define LED_CS2   (*((volatile unsigned short int *)(0x10300000)))//LED1 and LED2#define LED_CS3   (*((volatile unsigned short int *)(0x10400000)))//LED3 and LED4#define KPDK_VALUE(*((volatile unsigned char *)(0x41500008)))//Direct Keypad#define KPAS_VALUE(*((volatile unsigned char *)(0x41500020)))//Matrix Keypad#define ICMR  (*((volatile unsigned char *)(0x40d00004)))//中断源屏蔽控制器地址void IRQ_Function(void){char i;char j;i = KPDK_VALUE;j = KPAS_VALUE;switch (i){case 0x40://key-press 1LED_CS2 = 0x2B23;LED_CS3 = 0x7940;break;case 0x02:  //key-press 2LED_CS2 = 0x2B23;LED_CS3 = 0x2440;break;case 0x04:  //key-press 3LED_CS2 = 0x2B23;;LED_CS3 = 0x3040;break;case 0x20: //key-press 4LED_CS2 = 0x2B23;LED_CS3 = 0x1940;break;default: break;}switch (j){case 0x00://key-press 5LED_CS2 = 0x238f;LED_CS3 = 0x0e0e;ICMR=0x0;//关闭中断break;default: break;}}void dummyOs(void){ unsigned short int temp = 0x8F8F;LED_CS2 = temp;LED_CS3 = temp; while(1)    {           int j=KPAS_VALUE;           switch (j)           {case 0x01:  //key-press 6LED_CS2 = 0x8f8f;LED_CS3 = 0x2B23; ICMR=0X00000010; //开启键盘中断break;default:break;        }//waiting for interrupt}}


0 0
原创粉丝点击