蜂鸣器控制实验

实验名称 蜂鸣器控制实验

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

实验原理

 

蜂鸣器控制实验_第1张图片

    ARMGPB0控制蜂鸣器,当输出高电平时,三极管导通,蜂鸣器工作。输出低电平时,三极管未工作,蜂鸣器停止。

实验步骤:

先初始化指针sp,用不着中断,就不必设置了。文件Init.s,代码如下:

       AREA DATA, CODE, READONLY

    ENTRY

       ldr r13,=0x1000

       IMPORT BuzzerMain

       b BuzzerMain

       END

初始化完成后,跳转到Main.c,代码如下:

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

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

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

#define time 300

void Delay(unsigned int i);

void BuzzerMain()

{

       GPBCON=0xfffffd;//GPB0

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

       while(1)

       {

       GPBDAT ^=0x001;//异或 使buzzer间断地响

       Delay(time);

       }

}

 

void Delay(unsigned int i)

{

       unsigned int j, k;

      

       while(i--)

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

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

}

      

 

实验心得:

开始的GPB0的设置我照抄网上下的一个实验手册,它的硬件连接和我一样,本以为没什么问题的,结果它设置的没看明白,程序运行蜂鸣器不响,结果查了DATASHEET才知道GPBCON设置错了,0xfffffd最后两位01才是输出,开始设成00输入了。它GPBCON设了两次,即

GPB0CON&=0xfffffc 这是设成输入的

GPB0CON&=0x0000001;这才是输出

搞不懂为什么这么做?还有关于上拉电阻的我大致搞清楚了,其实就是用一个电阻把电源引到输出引脚,可以加大输出电流,增强负载能力,我这个实验直接负载就够了,所以我没使能上拉电阻,一样可以响。

你可能感兴趣的:(蜂鸣器控制实验)