欢迎来到天天文库
浏览记录
ID:37908113
大小:30.50 KB
页数:4页
时间:2019-06-02
《ARM按键控制蜂鸣器方法汇总程序代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、定时器法:#include"config.h"#defineBeepcon1<<0#defineKEY1<<8uint8N=1;void__irqIRQ_Time0(void){IOSET=Beepcon;if(N!=0){IOCLR=Beepcon;}T0IR=0x01;//清除中断标志VICVectAddr=0x00;//通知VIC中断处理结束}voidTime0Init(void){T0PR=99;//设置定时器0分频为100分频,得110592HzT0MCR=0x03;//匹配通道0匹配中断并复位T0TCT0MR0=11059/N;//比较
2、值(1S定时值)T0TCR=0x03;//启动并复位T0TCT0TCR=0x01;/*设置定时器0中断IRQ*/VICIntSelect=0x00;//所有中断通道设置为IRQ中断VICVectCntl0=0x24;//定时器0中断通道分配最高优先级(向量控制器0)VICVectAddr0=(uint32)IRQ_Time0;//设置中断服务程序地址向量VICIntEnable=0x00000010;//使能定时器0中断}intmain(void){PINSEL0=0x00000000;//设置管脚连接GPIOIODIR=Beepcon;//设置P
3、0.0~P0.7为输出,其他为输入Time0Init();//初始化定时器0及使能中断while(1)//等待定时器0中断或定时器1匹配输出{if((IOPIN&KEY)==0){if(N<11)N++;elseN=1;}}return(0);}查询法:#include"config.h"#defineBeepcon1<<0#defineKEY1<<8uint8N=1;voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--)for(i=0;i<5000;i++);}intmain(void){PINSEL0=
4、0x00000000;IODIR=Beepcon;while(1){if((IOPIN&KEY)==0){if(N<11)N++;elseN=1;}if(N!=0){IOCLR=Beepcon;DelayNS(1000*N);IOSET=Beepcon;DelayNS(1000*N);}}return(0);}不按不响法:#include"config.h"#defineBeepcon1<<0#defineKEY1<<8uint8N=1;voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--)for(i=0;
5、i<5000;i++);}intmain(void){PINSEL0=0x00000000;IODIR=Beepcon;while(1){if((IOPIN&KEY)==0){if(N<11)N++;elseN=1;}if(N!=0){IOCLR=Beepcon;DelayNS(1000*N);IOSET=Beepcon;DelayNS(1000*N);}}return(0);}中断法:#include"config.h"#defineBeepcon1<<0#defineKEY1<<16uint8N=1;voidDelayNS(uint32dly)
6、{uint32i;for(;dly>0;dly--)for(i=0;i<5000;i++);}voidEINT0_ISR(void){if(N!=1){IOCLR=Beepcon;DelayNS(100*N);IOSET=Beepcon;DelayNS(100*N);}else{IOCLR=Beepcon;DelayNS(100);IOSET=Beepcon;DelayNS(100);}T0IR=0x01;VICVectAddr0=0x00;}intmain(void){PINSEL0=0x00000000;IODIR=Beepcon;PINSEL
7、1=0x00000001;EXTMODE=0x00000001;EXTPOLAR=0x000000e;VICIntSelect=~1<<14;VICVectCntl0=0x00101110;VICVectAddr0=(uint32)EINT0_ISR;VICIntEnable=1<<14;while(1){if((IOPIN&KEY)==0){if(N>11)N=1;elseN++;}}return(0);}
此文档下载收益归作者所有