外部中断(2)
来源:互联网 发布:淘宝hd官网下载 编辑:程序博客网 时间:2024/06/09 23:08
#include "key.h"
void hander_irq();
void led_on();
void led_off();
void wat_on();
void wat_off();
int (*printf)(char *,...) = (void *)0x57e11d4c;
int flag =1;
int flag_two = 1;
int main()
{
*(volatile unsigned long *)0x56000000 = hander_irq;
//cpsr
__asm__ __volatile__(
"mrs r0,cpsr\n"
"bic r0,r0,#0x80\n"
"msr cpsr,r0\n"
:
:
:"r0","memory"
);
//enable
VIC0INTENABLE |=((1<<0)|(1<<26));
//select
VIC0INTSELECT &= ~((1<<0)|(1<<26));
//ex_interrupt
//key 配成中断
GPNCON = 2;
//ext_interrupt上升沿
EINT0CON0 |= (1<<1);
EINT0MASK &= ~(1<<0);
//int_interrupt
//watdog
WTCON = (1<<2)|(0<<3)|(1<<5)|(255<<8);
// WTCNT = 0x8000;
WTDAT = 0x2000;
//led
GPMCON = (1<<0)|(1<<4)|(1<<8)|(1<<12);
GPMDAT = 0xf;
}
void hander_irq()
{
if(VICxRAWINTR & (1<<0))
{
//clear ext_interrupt_key
EINT0PEND = 1;
printf("this is key\n");
if(flag)
{
wat_on();
}
else{
wat_off();
led_off();
}
flag ^= 1;
}
if(VICxRAWINTR & (1<<26))
{
//clear int_interruptu_watdong_count
WTCLRINT = 0;
printf("this is watdong\n");
if(flag_two)
{
led_on();
}
else{
led_off();
}
flag_two ^= 1;
}
}
void led_on(){
GPMDAT = 0;
}
void led_off(){
GPMDAT = 0xf;
}
void wat_on(){
WTCON &= ~(1<<5);
}
void wat_off(){
WTCON |= (1<<5);
}
- 外部中断(2)
- STM8S105S4_PKT学习笔记(2) 外部中断
- nrf51822 --- 外部中断(按键2)
- 十.ARM裸机学习之中断系统2(S5PV210按键外部中断及中断处理)
- PIC16F887 RB0外部中断(2)
- 外部中断(小结12)
- 外部中断(按键1)
- nrf51822 --- 外部中断 (按键)
- STM32--EXTI(外部中断)
- STM32学习笔记(2):外部中断的使用
- STM32学习笔记(2):外部中断的使用
- STM32学习笔记(2):外部中断的使用
- STM32学习笔记(2):外部中断的使用
- STM32学习笔记(2):外部中断的使用
- STM32学习笔记(2):外部中断的使用
- 外部中断
- 外部中断
- 外部中断
- 转载:Linux 性能监测:IO
- Eratosthenes筛法求1——100000之间所有的素数(32位汇编语言)
- hdu 1242 (bfs+优先队列)
- 使用printf()函数输出数据时,占位符的快速入门。(初学者)
- Zoom Extents in .Net
- 外部中断(2)
- 金士顿U盘才购买18天已经换过一次。京东客服最无耻客服7944公然耍无赖
- Web Services--gSOAP 2.7.6 第七章(7.1)
- C++ 友元
- Ecological Premium
- Kindergarten Counting Game
- Machined Surfaces
- Rotating Sentences
- poj1562 Oil Deposits(dfs求联通分量)