现象一:(采用移位函数)实现按s1,led顺序点亮,按s2,led顺序熄灭。
我实现的是一个一个顺序点亮,一个一个顺序熄灭
#include
#include
typedef int u16;
typedef char u8;
#define uint unsigned int
#define uchar unsigned char
***it s1 = P4^4; //定义一个独立按键
***it s2 = P1^6; //定义一个独立按键
***it led =P0^7; //定义0.7口的灯
void delay(u16 i){
while(i--);
}
void main(void){
uchar led_data=0xfe;
uchar led_dataa =0x00;
while(1){
if(s1==0)
delay(50000);
if(s1==0){
while(!s1);
delay(50000); //延时
P0=led_data; //P0 1111 1110
led_data=led_data<<1; //实现按一次亮一个,且保持前面的状态
}
if(s2==0)
delay(50000);
if(s2==0){
while(!s2);
delay(50000); //延时0.5s
P0=led_dataa; //P0 0000 0000
led=1; //令0.7灭
led_dataa -=0x80; //变成负数右移
led_dataa=led_dataa>>1; //实现按一次灭一个,且保持前面的状态
}
}
}
现象二:(采用循环移位函数)实现按s1,led顺序点亮,按s2,led顺序熄灭。
我实现的是一次亮一个,一次灭一个。
#include
#include
typedef int u16;
typedef char u8;
#define uint unsigned int
#define uchar unsigned char
***it s1 = P4^4;//定义一个独立按键
***it s2 = P1^6;//定义一个独立按键
***it led =P0^7;
void delay(u16 i){
while(i--);
}
void main(void){
uchar led_data=0xfe;
uchar led_dataa =0x80;
while(1){
if(s1==0)
delay(50000);
if(s1==0){
while(!s1);
delay(50000); //延时0.5s
P0=led_data; //P0 1111 1110
//移位函数,使led_date向左循环移动1位
led_data=_crol_(led_data,1); //实现每次亮一个
}
if(s2==0)
delay(50000);
if(s2==0){
while(!s2);
delay(50000); //延时0.5s
P0=led_dataa; //P0 0000 0000
//移位函数,使led_dataa向右循环移动1位
led_dataa=_cror_(led_dataa,1); //实现每次灭一个
}
}
}
现象一:(采用移位函数)实现按s1,led顺序点亮,按s2,led顺序熄灭。
我实现的是一个一个顺序点亮,一个一个顺序熄灭
#include
#include
typedef int u16;
typedef char u8;
#define uint unsigned int
#define uchar unsigned char
***it s1 = P4^4; //定义一个独立按键
***it s2 = P1^6; //定义一个独立按键
***it led =P0^7; //定义0.7口的灯
void delay(u16 i){
while(i--);
}
void main(void){
uchar led_data=0xfe;
uchar led_dataa =0x00;
while(1){
if(s1==0)
delay(50000);
if(s1==0){
while(!s1);
delay(50000); //延时
P0=led_data; //P0 1111 1110
led_data=led_data<<1; //实现按一次亮一个,且保持前面的状态
}
if(s2==0)
delay(50000);
if(s2==0){
while(!s2);
delay(50000); //延时0.5s
P0=led_dataa; //P0 0000 0000
led=1; //令0.7灭
led_dataa -=0x80; //变成负数右移
led_dataa=led_dataa>>1; //实现按一次灭一个,且保持前面的状态
}
}
}
现象二:(采用循环移位函数)实现按s1,led顺序点亮,按s2,led顺序熄灭。
我实现的是一次亮一个,一次灭一个。
#include
#include
typedef int u16;
typedef char u8;
#define uint unsigned int
#define uchar unsigned char
***it s1 = P4^4;//定义一个独立按键
***it s2 = P1^6;//定义一个独立按键
***it led =P0^7;
void delay(u16 i){
while(i--);
}
void main(void){
uchar led_data=0xfe;
uchar led_dataa =0x80;
while(1){
if(s1==0)
delay(50000);
if(s1==0){
while(!s1);
delay(50000); //延时0.5s
P0=led_data; //P0 1111 1110
//移位函数,使led_date向左循环移动1位
led_data=_crol_(led_data,1); //实现每次亮一个
}
if(s2==0)
delay(50000);
if(s2==0){
while(!s2);
delay(50000); //延时0.5s
P0=led_dataa; //P0 0000 0000
//移位函数,使led_dataa向右循环移动1位
led_dataa=_cror_(led_dataa,1); //实现每次灭一个
}
}
}
举报