裸机调试-led,蜂鸣器,按键
2012-08-04 14:41
148 查看
最近学得比较迷茫,就调试了一下6410的裸机程序,值得注意的是OK6410的裸机程序中蜂鸣器那一段的子程序BeepOn()和BeepOff()刚好写反了,下面给出一段我自己写的led灯走马灯和蜂鸣器的综合程序,其结果是亮一个灯蜂鸣器叫一次,以下是源程序:
更加深入的大家可以尝试写一个走马灯,不同的灯亮蜂鸣器会按照不同的频率鸣叫。
接下来是一个自己写的按键程序,这个程序是将上面那个程序加以改进,用按键控制走马灯和蜂鸣器,以下是源程序:
#define LEDCON (*(volatile unsigned *)0x7f008820) #define LEDDAT (*(volatile unsigned *)0x7f008824) #define BEEPCON (*(volatile unsigned *)(0x7F0080A0)) #define BEEPDAT (*(volatile unsigned *)(0x7F0080A4)) #define BEEPPUD (*(volatile unsigned *)(0x7F0080A8)) void MsDelay(int time) { volatile unsigned i,j; for(i=0;i<2000000;i++) for(j=0;j<time;j++); } void beepOff() { BEEPDAT=BEEPDAT & 0x7FFF; } void beepOn() { BEEPDAT=BEEPDAT | 0x8000; } void GPIO_Init(void) { LEDCON=0x1111; BEEPCON=BEEPCON&0x3fffffff; BEEPCON=BEEPCON|0X7FFFFFFF; beepOff(); } void Test() { while(1) { volatile unsigned int sum; LEDDAT=0x0e; beepOn(); MsDelay(10); beepOff(); MsDelay(40); for(sum=1;sum<=3;sum++) { LEDDAT=LEDDAT<<1; beepOn(); MsDelay(10); beepOff(); MsDelay(40); } } } void main() { GPIO_Init(); Test(); }
更加深入的大家可以尝试写一个走马灯,不同的灯亮蜂鸣器会按照不同的频率鸣叫。
接下来是一个自己写的按键程序,这个程序是将上面那个程序加以改进,用按键控制走马灯和蜂鸣器,以下是源程序:
#define LEDCON (*(volatile unsigned *)0x7f008820) #define LEDDAT (*(volatile unsigned *)0x7f008824) #define BEEPCON (*(volatile unsigned *)(0x7F0080A0)) #define BEEPDAT (*(volatile unsigned *)(0x7F0080A4)) #define BEEPPUD (*(volatile unsigned *)(0x7F0080A8)) #define KEYCON (*(volatile unsigned *)(0x7F008830)) #define KEYDAT (*(volatile unsigned *)(0x7F008834)) #define KEYPUD (*(volatile unsigned *)(0x7F008838)) void MsDelay(int time) { volatile unsigned i,j; for(i=0;i<2000000;i++) for(j=0;j<time;j++); } void beepOff() { BEEPDAT=BEEPDAT & 0x7FFF; } void beepOn() { BEEPDAT=BEEPDAT | 0x8000; } void GPIO_Init(void) { LEDCON=0X1111; BEEPCON=BEEPCON&0x3fffffff; BEEPCON=BEEPCON|0X7FFFFFFF; beepOff(); KEYCON=0; KEYPUD=0; } int keyscan() { if((KEYDAT&0X3F)==0X3F) return 0; else return 1; } void Test() { volatile unsigned int sum=1,keystatus; LEDDAT=0x0f; beepOff(); while(1) { keystatus=keyscan(); if(keystatus) { beepOn(); MsDelay(5); beepOff(); LEDDAT=0x0f<<sum; sum++; if(sum==5) sum=1; } } } void main() { GPIO_Init(); Test(); }
相关文章推荐
- Mini 2440 LED、按键和蜂鸣器裸机测试程序(C语言)
- 【嵌入式】——arm裸机开发 step by step 之 按键控制 LED 和 蜂鸣器
- mini2440裸机试炼之--按键控制蜂鸣器和LED
- ARM裸机程序开发——按键控制LED灯
- 6410裸板程序,led、蜂鸣器、按键…
- 6410裸板程序,led、蜂鸣器、按键…
- Eclipse开发调试ARM裸机程序(三)C语言LED_LINUX使用DNW
- 4412驱动-fifth_fasyn 控制led 蜂鸣器 按键
- (3)51单片机入门案列-一个按键实现点亮LED和开启蜂鸣器
- ARM裸机——FS2410按键控制LED(中断方式)
- 关于mini2440的一个裸机程序——LED与按键中断
- 4412裸机程序之按键控制LED
- 按键点亮LED伴随蜂鸣器
- 从ARM裸机看驱动之按键中断方式控制LED(二)
- MICRO2440裸跑之按键点亮LED 、按键、蜂鸣器
- 基于mini2440的按键中断控制LED(裸机代码)
- Mini2440 裸机实验之LED程序、按键、中断
- 4412裸机程序按键控制led灯
- 关于mini2440的一个裸机程序——LED与按键中断
- ARM裸机——FS2410按键控制LED灯(查询方式)