51;LED流水灯控制;按键切换状态
时间:10-02
整理:3721RD
点击:
两年前开始学习单片机,也是从最简单的51开始。现在整理一些以前写的东西,给后来者学习,希望能帮到你们。有需要自己下载。
- #include <reg51.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit K1=P3^0;
- sbit K2=P3^1;
- sbit K3=P3^2;
- sbit K4=P3^3;
- void Delay(unsigned int t) //延时 t*100 ms
- {
- unsigned int i,j;
- for(;t>0;t--)
- for(i=130;i>0;i--)
- for(j=76;j>0;j--);
- }
- /*
- 按键控制:
- K1:循环点亮持续左移
- K2:循环点亮持续右移
- K3:左移流水灯
- K4:右移流水灯
- */
- void K1_LED()
- {
- uint i;
- P2=0xfe;
- for(i=7;i>0;i--)
- {
- Delay(5);
- P2=P2<<1;
- }
- Delay(5);
- }
- void K2_LED()
- {
- uint i;
- P2=0x7f;
- for(i=7;i>0;i--)
- {
- Delay(5);
- P2=P2>>1;
- }
- Delay(5);
- }
- void K3_LED()
- {
- uint i;
- P2=0xfe;
- for(i=7;i>0;i--)
- {
- Delay(5);
- P2=_crol_(P2,1);
- }
- Delay(5);
- }
- void K4_LED()
- {
- uint i;
- P2=0x7f;
- for(i=7;i>0;i--)
- {
- Delay(5);
- P2=_cror_(P2,1);
- }
- Delay(5);
- }
- main()
- {
- while(1)
- {
- if(K1==0)
- K1_LED();
- else if(K2==0)
- K2_LED();
- else if(K3==0)
- K3_LED();
- else if(K4==0)
- K4_LED();
- }
- }