20122593李九生独立按键检测实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

独立按键检测实验

20122593李九生

实验目的:

1. 熟悉51系列单片机独立按键的工作原理。

2. 掌握与外部中断引脚INT0和INT1相连的独立按键

的编程方法。

实验原理:独立键盘就是各按键相互独立,每个按键各接一根I/O接口线,每根I/O接口线上的按键都不会影响其他的I/O接口线。因此,通过检测I/O接口线的电平状态就可以很容易地判断出哪个按键被按下了。

独立键盘的结构方式有查询和中断两种方式。查询方式在工作时通过执行相应的查询程序来判断有无键按下,是哪一个按下。中断方式处理时,当有任意键按下时则请求中断,在中断服务程序上通过执行判断程序,判断是哪一个键按下。

实验内容:

1.编写一程序,与P1口相连的独立按键控制P2口流

水灯。

2.编写一程序,与INT0和INT1引脚相连的独立按键

控制P2口流水灯。

实验思考题:如何实现按键按下,操作指令只执行一次?答:就是在按键检测完之后,在后面加一条while(1)无限循环语句,来检测按键是按下就好。

#include

#include

sbit key1=P1^0;

sbit key2=P1^1;

void delay(unsigned int i)

{

unsigned int j;

unsigned char k;

for(j=i;j>0;j--)

for(k=125;k>0;k--);

}

void main()

{

P1=0xff;

P2=0x01;

while(1)

{

if(P1!=0xff)

delay(3);

if(P1!=0xff)

if(key1==0)

{

P2=_crol_(P2,1);

delay(200);

}

while(key1==0);

if(key2==0)

{

P2=_cror_(P2,1);

delay(100);

}

}

}

#include

sbit key1=P3^2;

sbit key2=P3^3;

void delay(unsigned int i)

{

unsigned int j;

unsigned char k;

for(j=i;j>0;j--)

for(k=125;k>0;k--);

}

void main()

{

P2=0x01;

IT0 = 0;

IT1 = 0;

IE = 0x85;

while(1);

}

void Ex_Interrupt_0() interrupt 0 {

P2=_crol_(P2,1);

delay(200);

}

void EX_INT1() interrupt 2

{

P2=_cror_(P2,1);

delay(100);

}

相关文档
最新文档