分为2个例子
一个是单片机按键短按,实现led灯的上下移动
一个是单片机按键长按led灯亮,松开,led灯灭
附件里有仿真图,源码,以及hex文件
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define LEDR P0
- #define LEDG P2
- sbit PB1=P1^4;
- sbit PB2=P1^5;
- sbit PB3=P1^6;
- sbit PB4=P1^7;
- char tamp,tp;
- void delay (int);
- void debouncer(void);
- main() {
- PB1=1;
- PB2=1;
- PB3=1;
- PB4=1;
- LEDR=0x00;
- LEDG=0xff;
- tamp=0xfd;
- tp=0xfd;
- while(1) {
- if(PB1==0) {
- debouncer();
- tamp=_cror_(tamp,1); //变量右移函数
- delay(20);
- while(PB1==0);
- debouncer();
- LEDR=tamp;
- }
- if(PB2==0) {
- debouncer();
- tamp=_crol_(tamp,1);//变量左移函数
- delay(20);
- while(PB2==0);
- debouncer();
- LEDR=tamp;
- }
- if(PB3==0) {
- debouncer();
- tp=_cror_(tp,1);
- delay(20);
- while(PB3==0);
- debouncer();
- LEDG=tp;
- }
- if(PB4==0) {
- debouncer();
- tp=_crol_(tp,1);
- delay(20);
- while(PB4==0);
- debouncer();
- LEDG=tp;
- }
- }
- }
- void debouncer(void)
- {
- int i;
- for(i=0; i<2400; i++);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
51单片机实现按键长按和短按.zip
(30.87 KB, 下载次数: 80)
|