📄 interrupt.h
字号:
#ifndef __INTERRUPT_H__
#define __INTERRUPT_H__
/*
#define GPECON (*(volatile unsigned long *)0x56000040)
#define GPEDAT (*(volatile unsigned long *)0x56000044)
#define GPEUP (*(volatile unsigned long *)0x56000048)
#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)
#define GPFUP (*(volatile unsigned long *)0x56000058)
#define GPGCON (*(volatile unsigned long *)0x56000060)
#define GPGDAT (*(volatile unsigned long *)0x56000064)
#define GPGUP (*(volatile unsigned long *)0x56000068)
#define EINTMASK (*(volatile unsigned long *)0x560000a4)
#define INTMSK (*(volatile unsigned long *)0X4a000008)
#define PRIORITY (*(volatile unsigned long *)0x4a00000c)
#define EINTPEND (*(volatile unsigned long *)0x560000a8)
#define INTPND (*(volatile unsigned long *)0X4a000010)
#define SRCPND (*(volatile unsigned long *)0X4a000000)
#define TCFG0 (*(volatile unsigned long *)0x51000000)
#define TCFG1 (*(volatile unsigned long *)0x51000004)
#define TCON (*(volatile unsigned long *)0x51000008)
#define TCNTB0 (*(volatile unsigned long *)0x5100000c)
*/
/* use addr.h instead of above definition list*/
#include "addr.h"
#define BIT_EINTMASK_11 (0x1 << 11)
#define BIT_EINTMASK_19 (0x1 << 19)
#define BIT_EINTPEND_11 (0x1 << 11)
#define BIT_EINTPEND_19 (0x1 << 19)
#define BIT_GPFCON8 (0x1 << 8)
#define BIT_GPFCON10 (0x1 << 10)
#define BIT_GPFCON12 (0x1 << 12)
#define BIT_GPFCON14 (0x1 << 14)
#define BIT_EINT0 (0x1 << 0)
#define BIT_EINT2 (0x1 << 2)
#define BIT_EINT8_23 (0x1 << 5)
#define BIT_TIMER0 (0x1 << 10)
/* Set keyboard related registers*/
#define INIT_KEYBOARD_REG() do { \
/* GPGCON6,2 set output*/ \
GPGCON = (GPGCON & (~((3<<12)|(3<<4)))) | ((1<<12)|(1<<4)) ; \
/* GPGCON6:KSCAN; GPGCON2:KSCAN3; GPGDAT6,2 output*/ \
GPGDAT = GPGDAT & (~((1<<6)|(1<<2))); \
/* GPECON13,11 set output*/ \
GPECON = (GPECON & (~((3<<26)|(3<<22)))) | ((1<<26)|(1<<22)); \
/* PEDAT13,11 output 0*/ \
GPEDAT = GPEDAT & (~((1<<13)|(1<<11))); \
/* GPGCON11,3 set EINT*/ \
GPGCON = (GPGCON & (~((3<<22)|(3<<6)))) | ((2<<22)|(2<<6)) ; \
/* GPFDAT2,0 set EINT*/ \
GPFCON = (GPFCON & (~((3<<4)|(3<<0)))) | ((2<<4)|(2<<0)) ; \
/* Enable up resistance*/ \
GPFUP |= (1<<0) | (1<<2); \
GPGUP |= (1<<3) | (1<<11); \
} while (0)
/* Set interrupt pending registers*/
#define CLEAR_PENDING_REG(bit) do { \
SRCPND = (bit); \
INTPND = (bit); \
} while (0)
/* initialize Timer0*/
#define INIT_TIMER0(sec) do { \
/* Prescaler0 = 119*/ \
TCFG0 = 119; \
/*Select MUX input for PWM Timer0:divider=16*/ \
TCFG1 = 0x03; \
/* 0.5sec touch off a interrupt*/ \
TCNTB0 = (int)6250*(sec); \
/* Timer 0 manual update*/ \
TCON |= (1<<1); \
/* Timer 0 auto reload on Timer 0*/ \
/* output inverter off clear "Timer 0 manual update"*/ \
TCON = 0x09; \
}while (0)
#define ENABLE_INTMSK_REG(bit) INTMSK &= ~(bit)
#define ENABLE_EINTMASK_REG(bit) EINTMASK &= ~(bit)
#define CLEAR_EINTPEND_REG(bit) EINTPEND |= (bit)
#define SET_LED_REG_MODE(bit) GPFCON = (bit)
void init_irq(void);
int key_scan(void);
void timer0_handler(void);
void key_handler(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -