预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

按键中断实验 实验目的:1掌握IO口的使用 2掌握中断处理程序编写 3掌握按键中断的使用 实验器材:Sinosys-EA2440实验箱PC机 实验原理:在SinoSys-EA2440a中,已经将EINT0、EINT2、EINT19、EINT11作为外部中断源和开发板上位号为SW1、SW2、SW3、SW4的这四个小按键相连,中断按钮的连接图如图1.1: 1.1中断按钮结构电路 在SinoSys-EA2440a中,已将EINT0、EINT2、EINT19、EINT11作 为外部中断源和开发板上位号为SW1、SW2、SW3、SW4的这四个小按键相连,其中,EINT0、EINT2、EINT11、EINT19分别和GPF0、GPF2、GPG3、GPG11复用,当GPFCON[5:4]=10、GPFCON[1:0]=10、GPGCON[7:6]=10、GPGCON[23:22]=10时,I/O为中断方式。通过寄存器的控制,可以达到开启中断和控制中断的目的。 实验总结:将4个按键端口设置成EINT0、EINT2、EINT11、EINT19模式。 rGPGCON=rGPGCON&(~((3<<22)|(3<<6)))|((2<<22)|(2<<6)); rGPFCON=rGPFCON&(~((3<<4)|(3<<0)))|((2<<4)|(2<<0)); 通过EXTINT寄存器对外部中断触发方式进行设置,这里设置下降沿触发。 rEXTINT0&=~(6|(6<<8)); rEXTINT0|=(0|(0<<8)); //EINT0、EINT2 rEXTINT1&=~(7<<12); rEXTINT1|=(0<<12); //EINT11 rEXTINT2&=~(0xf<<12); rEXTINT2|=(0<<12);//EINT19 对外部中断挂起寄存器清零,对外部中断屏蔽寄存器时能,同时设置中断服务程序的地址,将中断挂起寄存器清零,开启中断。 rEINTPEND|=(1<<11)|(1<<19); //cleareint11,19 rEINTMASK&=~((1<<11)|(1<<19)); //enableeint11,19 ClearPendidng(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);//SRCPNDandINTPND相应位1使能中断 pISR_EINT0=pISR_EINT2=pISR_EINT8_23=(U32)Key_ISR;//中断服务程序地址 EnableIrq(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);//INTMASK相应位置0 中断程序首先需要将产生中断的中断标志位清楚,然后改变LED显示标志位,同时通过键盘扫描程序显示在DNW上。 if(rINTPND==BIT_EINT8_23){ ClearPending(BIT_EINT8_23); if(rEINTPEND&(1<<11)){ rEINTPEND|=1<<11; } if(rEINTPEND&(1<<19)){ rEINTPEND|=1<<19; } } if(rINTPND==BIT_EINT0){ ClearPending(BIT_EINT0); } if(rINTPND==BIT_EINT2){ ClearPending(BIT_EINT2); } key=Key_Scan(); if(key!=0xff){ flag=~flag; Uart_Printf("Interruptoccur...K%dispressed!\n",key); 定时器实验: 1设置5个变量作为定时器产生中断的次数:variable0,variable1,variable2,variable3,variable4 打开定时器中断,通过对中断屏蔽寄存器INTMSK 设置实现:将INT_TIME0,INT_TIME1,INT_TIME2,INT_TIME3,INT_TIME4相应位置0。 通过按键中断,达到了控制流水灯的目的,实现了中断。