S3C2440的外部中断程序怎么写(用C语言)?

S3C2440的外部中断程序怎么写(用C语言)?,第1张

初始化中断,我一外部中断1-4为裂伍例,中断程序请看下手皮方:

void Key_Init(void)

{

rGPFCON&=~((3<<2)|(3<<4)|(3<<6)|(3<<8))//初始化GPF1,GPF2,GPF3,GPF4(分别对应KEY2,KEY3,KEY4,KEY5)

rGPFCON|=(2<<2)|(2<<4)|(2<<6)|(2<<8)//将GPF1,GPF2,GPF3,GPF4分别设置为EINT

}

然后设置中断控制寄存器

void Irq_Init(void)

{

rINTMSK &= ~((1<<2)|(1<<3)|(1<<4)|(1<<5))//将INTMSK(中断屏蔽寄存器)中的EINT1-4_7设置为可服务状态

rEINTMASK &= ~((1<毕源差<4))//外部中断屏蔽寄存器(KEY1,KEY2,KEY3和KEY4分别对应EINT4)

}

然后就要写中断服务函数了。

void Isr_Init(void)

{

pISR_EINT1=(unsigned int)Eint1_Isr

}

void __irq Eint1_Isr(void)

{

unsigned long val

val=rEINTPEND

if(val&(1<<1))

{

rEINTPEND |=1<<8

Led1_On()

Delay1s()

Led1_Off()

}

rSRCPND |=1<<1

rINTPND |=1<<1

}

不明白的可以追问我。

#include "reg52.h"

sbit key=P3^2

void main()

{

IT0=1//外部中断0连沿触发方式

EX0=1//使磨基液能外部锋歼中断0

EA=1//开部瞎物中断

while(1)

}

void int0() interrupt 0

{

int tab[]={0xff,0x7f,0xbf,0x3f,0xdf,0x5f,0x9f,0x1f,0xef,0x6f,0xaf,0x2f,0xcf,0x4f,0x8f,0x0f}

int count=15

long int i

while(1)

{

if(key==0)

for(i=0i<10000i++)

if(key==0)

{ count--

if(count==0)

count=15

P3= tab[count]

while(key==0)

}

}

}

sbit p32=P3^2

void ext0() interrupt 0

{

unsigned num=0

while(num<4)

 渗差桐   {

    丛坦while(p32==0)

    num++

    freq+=100

 庆行   }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8259068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存