完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
【C语言】51单片机 流水灯
基础知识 举例说明: A=1 1 0 0 1 1 0 0 B=1 1 1 1 0 0 0 0 A&B=1 1 0 0 0 0 0 0 A|B=1 1 1 1 1 1 0 0 ~A=0 0 1 1 0 0 1 1 A^B=0 0 1 1 1 1 0 0 循环左移_crol_和循环右移_cror_: 单片机有一个库文件已经写好了移位函数,储存在#include《intrins.h》库文件里。 变量=crol(变量名,移动位数) P0= 0xfe; // 1111 1110 P0=crol(P0,1); 此时,P0=0xfd;//1111 1101 七道题目的实现效果 完整代码 #include 《reg51.h》 //51单片机头文件 #include 《intrins.h》 //包含循环移位指令的头文件 #define uchar unsigned char //宏定义 unsigned char 为 uchar #define uint unsigned int //宏定义 unsigned int 为 uint ***it k1 = P3 ^ 2; ***it k2 = P3 ^ 3; ***it k3 = P3 ^ 4; ***it k4 = P3 ^ 5; void delay_us(uint us) //延时子程序 { uint a; //声明变量a取值为0-65535 for(a=0;a《us;a++); } void start_1() //第一题 { uchar a,b; b=0xfe; //1111 1110 for(a=0;a《7;a++) //从右到左 { P0 = b; delay_us(50000); b=_crol_(b,1); } for(a=0;a《7;a++) //从左到右 { P0 = b; delay_us(50000); b=_cror_(b,1); } } void start_2() //第二题 { uchar a,b; b=0xfe; //1111 1110 for(a=0;a《7;a++) //从右到左 { P0 = 0xe7 & b; //1110 0111 & b delay_us(50000); b=_crol_(b,1); } for(a=0;a《7;a++) //从左到右 { P0 = 0xe7 & b; //1110 0111 & b delay_us(50000); b=_cror_(b,1); } } void start_3() //第三题 { uchar a,b,c; b=0x7f; //0111 1111 c=0xfe; //1111 1110 for(a=0;a《3;a++) //从两边到中间 { P0 = b & c; delay_us(50000); b=_cror_(b,1); c=_crol_(c,1); } for(a=0;a《3;a++) //从中间到两边 { P0 = b & c; delay_us(50000); b=_crol_(b,1); c=_cror_(c,1); } } void start_4() //第四题 { uchar a; for(a=0;a《8;a++) //从左到右依次亮起 { P0 = 0x7f 》》 a; //0111 1111 》》 a delay_us(50000); } for(a=0;a《8;a++) //从右到左依次灭掉 { P0 = ~(0xff《《a); //1111 1111 《《 a 按位取反 delay_us(50000); } } void start_5() //第五题 { uchar a,b,c,d; c=0xff; //1111 1111 for(i=0;i《9;i++) { b=0xfe; //1111 1110 for(a=0;a《8;a++) { P0= b & c; delay_us(50000); b=_cror_(b,1); } c=c《《1; } } void start_6() //第六题 { uchar a,b,c,d,e; b=0xfe; //1111 1110 for(d=0;d《9;d++) { if(e》0) { b=_cror_(b,1); } a=0xfe; //1111 1110 for(e=0;e《d+1;e++) { P0= c; delay_us(50000); a=_cror_(a,1); c= a & b; } } } void start_7() //第七题 { uint a=0; uint b=500; uchar c=0x00; //0000 0000 uchar d=0xff; //1111 1111 while(b) { P0= c; delay_us(b--); P0= d; delay_us(a++); } while(a) { P0= c; delay_us(b++); P0= d; delay_us(a--); } } void main() { if(k1==0) { start_1(); start_2(); start_3(); start_4(); start_5(); start_6(); start_7(); } } |
|
|
|
只有小组成员才能发言,加入小组>>
2549 浏览 0 评论
1147浏览 2评论
746浏览 1评论
499浏览 0评论
265浏览 0评论
428浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:33 , Processed in 1.568080 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号