嵌入式实验5

实验5  键盘中断实验

 

实验日期:           

实验目的

对键盘设备驱动程序和应用软件源代码的剖析,使学生深入理解嵌入式系统中键盘设备的工作原理及其软件设计方法,以便进行后续的综合实验及开发工作。

实验仪器

PC机、嵌入式系统实验箱、网线、串口线

实验原理

查询方式会浪费大量的处理器有效时间,而中断方式是多任务操作系统中与外设进行数据交互的最有效的方式。当CPU进行主程序操作时,如果外设数据已存入端口的数据输入寄存器,或端口的数据输出寄存器已空,此时由外设通过接口电路向CPU发出中断请求信号。CPU在满足一定条件下,暂停当前正在执行的主程序,转入执行该设备的中断处理子程序,待中断处理完毕之后,CPU再返回并继续执行原来被中断的主程序。这样,CPU就避免了把大量时间耗费在等待、查询外设状态的操作上,使其工作效率得以大大提高。

实验内容及步骤

实验内容:

本实验由学生完成对键盘设备驱动程序及应用程序的导入、运行及功能验证工作,使学生理解嵌入式系统中常用的键盘扫描方法。

实验步骤:

1.ARM开发板上已经默认加载了LED与按键的驱动程序,在开发板的/dev目录下可以找到leds和button两个设备文件。设计应用程序时可以通过open、read、 write、 ioctl 这些文件函数来访问设备文件。程序6.5和程序6.6分别演示了流水灯和按键状态读取的功能,两个应用程序的示例代码如下。

程序6.5流水灯示例程序

#include <stdio. h>#define IOCTL LED ON

#define IocTl LED OFF  0

int main(int argc, char** argv) {

printf("Hello leds!\n");

int fd = open("/dev/leds", 0);if  (fd>0){

inti,n=100;

while (n-- > 0) { // 1分钟流水灯

for  (i=0;i< 6; ++i) {

octl (fd, IOCTL_ LED OFF, 0) ;

ioctl (fd, IOCTL_ LED OFF, 1) ;

ioctl(fd, IOCTL LED OFF, 2) ;

ioctl (fd, IOCTL LED_ OFF, 3) ;

ioctl(fd, IOCTL_ LED _ON, (i >= 4)?((6-i)%4):i);usleep (100000); //延时100ms

 

close (fd) ;}

return O;}

程序6.6按键响应示例程 序

#include <stdio.h>#include <stdlib.h>

#include <unistd.h>  决#include <fcntl.h>#include <errno.h>int main (void) {

int i, btn fd;

char cbtns[6], obtns[6] ={'0', 'O', '0', 'O', 'O', 'O'};

btn fd = open ("/dev/buttons", 0) ;

LE btn _fd< 0) ( perror("open deVIce buttons");

exit(l); )

for (i:) {

if (readbtn_ fd, cbtns, 6) != 6) {

perror("read buttons:");

 exit(1);

}

for(i=O;i<6;++i){

if (obtns[i] != cbtns[i]) {

obtns[i] = cbtns[i];

printf("key %d is %s\n",i+1, obtns[i] == 'O’? "up”: "down") ;

if {obtns[2] == '1') { // KEY3按下肘退出死循坏

printf ("buttons test end!\n");

 break;

}

}

close (btn fd) ;

return O;

}

数据处理及结论

 

实验心得体会

通过本次中断实验,让我知道了对键盘设备驱动程序和应用软件源代码的剖析,使学生深入理解嵌入式系统中键盘设备的工作原理及其软件设计方法,以便进行后续的综合实验及开发工作。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沄边小卖部

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值