按键测试实验

实验名称: 按键测试

实验目的: 熟悉ADS使用,熟悉c编程

实验原理:

 

   GPF1,GPF4,GPF2,GPF0分别控制K1,K2,K3,K4,未按键时,端口读入高电平,按键按下,对应端口读入低电平。

前次实验实现了对蜂鸣器的控制,只要调整蜂鸣器响与不响之间的延时,就可以达到改变声响频率的目的。

实验步骤:

Init.s与前几次一样,不再赘述。

Main.c实现按键控制蜂鸣器频率调整。代码如下:

#define GPBCON (*(volatile unsigned *)0x56000010)

#define GPBDAT (*(volatile unsigned *)0x56000014)

#define GPBUP  (*(volatile unsigned *)0x56000018)

#define GPFCON (*(volatile unsigned *)0x56000050)

#define GPFDAT (*(volatile unsigned *)0x56000054)

#define GPFUP  (*(volatile unsigned *)0x56000058)

 

void Delay(unsigned int i)

{

       unsigned int j;

       while(i--)

       //for (k=0;k<=0xff;k++)

              for (j=0;j<=0xff;j++);

}

 

void BuzzerOn()

{

       GPBDAT =0x001;// 使buzzer

}

void BuzzerOff()

{

       GPBDAT =0x000;

}

void BuzzerCount(unsigned int count)

{

       count=100*count;

       if(count!=0)

       {

              BuzzerOn();

              Delay(count);

              BuzzerOff();

              Delay(count);

       }

}

unsigned char KeySet()

{

      

       unsigned char KeyValue;

       KeyValue=0;

       if((0x02&GPFDAT)==0) KeyValue=2;       //GPF1-->K1,低电平 按下

       if((0x10&GPFDAT)==0) KeyValue=4;        //GPF4-->K2

       if((0x04&GPFDAT)==0) KeyValue=8;      //GPF2-->K3

       if((0x01&GPFDAT)==0) KeyValue=16;          //GPF0-->K4

       return KeyValue;   

}

void BuzzerMain()        //按不同的键有不同频率的声音,松开按键不会发声

{

       GPBCON=0xfffffd;//GPB0

       GPBUP =0xfff;//使用的口不上拉 

      

       GPFCON=0xfcc0;//GPF0,1,2,4设为输入,其他RESERVED

       GPFUP=0xff;//不上拉

       BuzzerOff();

       while(1)

       {

       BuzzerCount(KeySet());

       }

}

实验心得:

程序不难,但还是调了两个小时,有个小错没看出来,判断按键时有个数与错了,结果蜂鸣器一直响。还有就是不能太迷信网上资料,我原来的端口设置就是照抄的,后来检查出来了,浪费不少时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值