ARM按键控制蜂鸣器方法汇总 程序代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VICVectAddr = 0x00;//通知VIC中断处理结束
}
void Time0Init(void)
{
T0PR = 99;//设置定时器0分频为100分频,得110592Hz
T0MCR = 0x03;//匹配通道0匹配中断并复位T0TC
T0MR0 = 11059/N;//比较值(1S定时值)
T0TCR = 0x03;//启动并复位T0TC
EXTMODE=0x00000001;
EXTPOLAR=0x000000e;
VICIntSelect=~1<<14;
VICVectCntl0=0x00101110;
VICVectAddr0=(uint32) EINT0_ISR;
VICIntEnable=1<<14;
while(1)
{ if((IOPIN&KEY)==0)
{ uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
int main(void)
{ PINSEL0=0x00000000;
IODIR=Beepcon;
while(1)
{ if((IOPIN&KEY)==0) { if(N<11) N++;else N=1;}
void DelayNS(uint32 dly)
{ uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
void EINT0_ISR(void)
{
if(N!=1)
{ IOCLR=Beepcon;
DelayNS(100*N);
IOSET=Beepcon;
DelayNS(100*N);
{
if((IOPIN&KEY)==0)
{ if(N<11) N++;else N=1;}
}
return(0);
}
查询法:
# include"config.h"
# define Beepcon 1<<0
# define KEY 1<<8
uint8 N=1;
void DelayNS(uint32 dly)
}
else
{ IOCLR=Beepcon;
DelayNS(100);
IOSET=Beepcon;
DelayNS(100);
}
T0IR=0x01;
VICVectAddr0=0x00;
}
int main(void)
{Biblioteka Baidu
PINSEL0=0x00000000;
IODIR=Beepcon;
PINSEL1=0x00000001;
if(N!=0)
{ IOCLR=Beepcon;
DelayNS(1000*N);
IOSET=Beepcon;
DelayNS(1000*N);}
}
return(0);
}
中断法:
# include"config.h"
# define Beepcon 1<<0
# define KEY 1<<16
uint8 N=1;
定时器法:
# include "config.h"
# define Beepcon 1<<0
# define KEY 1<<8
uint8 N=1;
void __irq IRQ_Time0(void)
{
IOSET=Beepcon;
if(N!=0)
{ IOCLR=Beepcon; }
T0IR = 0x01;//清除中断标志
{ if(N>11) N=1; else N++;}
}
return(0);
}
void DelayNS(uint32 dly)
{ uint32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
int main(void)
{ PINSEL0=0x00000000;
IODIR=Beepcon;
while(1)
{ if((IOPIN&KEY)==0) { if(N<11) N++;else N=1;}
if(N!=0)
{ IOCLR=Beepcon;
DelayNS(1000*N);
IOSET=Beepcon;
DelayNS(1000*N);}
}
return(0);
}
不按不响法:
# include"config.h"
# define Beepcon 1<<0
# define KEY 1<<8
uint8 N=1;
VICIntEnable = 0x00000010;//使能定时器0中断
}
int main(void)
{
PINSEL0 = 0x00000000;//设置管脚连接GPIO
IODIR =Beepcon;//设置P0.0~P0.7为输出,其他为输入
Time0Init();//初始化定时器0及使能中断
while(1)//等待定时器0中断或定时器1匹配输出
T0TCR = 0x01;
/*设置定时器0中断IRQ */
VICIntSelect = 0x00;//所有中断通道设置为IRQ中断
VICVectCntl0 = 0x24;//定时器0中断通道分配最高优先级(向量控制器0)
VICVectAddr0 =(uint32) IRQ_Time0;//设置中断服务程序地址向量
相关文档
最新文档