完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
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); //实现每次灭一个 } } } |
|
|
|
只有小组成员才能发言,加入小组>>
3311 浏览 9 评论
2994 浏览 16 评论
3493 浏览 1 评论
9058 浏览 16 评论
4087 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
598浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:54 , Processed in 1.048673 second(s), Total 48, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号