?? main.c
字號:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#define KEYCOL1 (1<<7) //輸出
#define KEYCOL2 (1<<8) //輸出
#define KEYCOL3 (1<<9) //輸出
#define KEYCOL4 (1<<10) //輸出
#define KEYROW1 (1<<11) //輸入
#define KEYROW2 (1<<12) //輸入
#define KEYROW3 (1<<13) //輸入
uint16 KEYS=0x0000;
/*********************************************************************************************************
** 鍵盤中斷服務程序,判斷鍵號,P0.1用作EINT0
********************************************************************************************************/
void __irq keypad_Eint0(void)
{
IO0CLR=KEYCOL1;
IO0SET=KEYCOL2|KEYCOL3|KEYCOL4;
switch((IO0PIN&0x00003800)>>11) //讀KEYROW, 11-13位
{
case 6: if(KEYS!=0x01) {KEYS=0x01;break;}
else {KEYS=0;break;}
case 5: if(KEYS!=0x02) {KEYS=0x02;break;}
else {KEYS=0;break;}
case 3: if(KEYS!=0x04) {KEYS=0x04;break;}
else {KEYS=0;break;}
default: break;
}
IO0CLR=KEYCOL2;
IO0SET=KEYCOL1|KEYCOL3|KEYCOL4;
switch((IO0PIN&0x00003800)>>11) //讀KEYROW, 11-13位
{
case 6: if(KEYS!=0x08) {KEYS=0x08;break;}
else {KEYS=0;break;}
case 5: if(KEYS!=0x10) {KEYS=0x10;break;}
else {KEYS=0;break;}
case 3: if(KEYS!=0x20) {KEYS=0x20;break;}
else {KEYS=0;break;}
default: break;
}
IO0CLR=KEYCOL3;
IO0SET=KEYCOL1|KEYCOL2|KEYCOL4;
switch((IO0PIN&0x00003800)>>11) //讀KEYROW 11-13位
{
case 6: if(KEYS!=0x40) {KEYS=0x40;break;}
else {KEYS=0;break;}
case 5: if(KEYS!=0x80) {KEYS=0x80;break;}
else {KEYS=0;break;}
case 3: if(KEYS!=0x0100) {KEYS=0x0100;break;}
else {KEYS=0;break;}
default: break;
}
IO0CLR=KEYCOL4;
IO0SET=KEYCOL1|KEYCOL2|KEYCOL3;
switch((IO0PIN&0x00003800)>>11) //讀KEYROW 11-13位
{
case 6: if(KEYS!=0x0200) {KEYS=0x0200;break;}
else {KEYS=0;break;}
default: break;
}
while((EXTINT&0x01)!=0)
{
EXTINT=0x01;
}
VICVectAddr=0; //向量中斷結束
}
/*********************************************************************************************************
** 要使向量中斷服務程序結束后,都從判斷KEYS的語句(地址)往下走
********************************************************************************************************/
int main (void)
{
PINSEL0=0x0C; //P0.1為EINT0
PINSEL1=0x00;
IO0DIR=0x00000780|0x02; //KEYCOL為輸出,P0.7-10. p0.1 輸出
IO0CLR=0x00000780;
EXTMODE=0x00;
/* 打開EINT3中斷(使用非向量IRQ) */
VICIntSelect = 0x00000000; // 設置所有中斷分配為IRQ中斷
VICDefVectAddr = (int)keypad_Eint0; // 設置中斷服務程序地址
EXTINT = 0x01; // 清除EINT0中斷標志
VICIntEnable = 1<<14; // 使能EINT0中斷,EINT3在Bit17上
while(1);
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -