按键控制渐快的流水灯,最慢为1s的间隔,最快为100ms的间隔,每按一次加快100ms
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg51.h> //定义特殊功能寄存器的头文件
- #include<intrins.h>
- #define NOP _nop_()
- #ifndef _Dly_nms_h__
- #define _Dly_nms_h__ //K1位变量定义
- typedef unsigned char Uchar; //数据类型重命名
- unsigned int a=0;
- void Dly_nms(unsigned int time) //延时函数
- {unsigned char i;
- for(;time>0;time--)
- {for(i=0;i<247;i++)
- {NOP;}
- }
- }
- #endif
- void INT0sev() interrupt 0 //外中断0的函数
- { while(K1==0); //等待按键释放
- if(a<900)
- a=a+100;
- IE0=0; //清中断标志
- }
- void main() //主函数
- {
- unsigned char C,b=0;
- C=0xFE;
- EA=1;EX0=1;IT0=1; //外中断0初始化
- for(;;) //循环函数
- {
- P1=C; //数据输出
- C=_crol_(C,1); //循环左移
- Dly_nms(1000-a); //调用延时函数
- }
- }
复制代码
所有资料51hei提供下载:
按键控制渐快的流水灯,最慢为1s的间隔,最快为100ms的间隔,每按一次加快100ms.zip
(62.38 KB, 下载次数: 36)
|