资讯动态

51 单片机LED流水灯(SDCC + Notepad++ + STC-ISP/普中ISP)

发布时间:2026/10/14 19:01:30 来源:尧图企业网站定制
效果展示无参延时流水灯上节已经测试了led闪烁这节写led流水灯效果若想达到效果可以依次让P2.0到P2.7这八个灯亮每个间隔500ms。已知P2.0亮的寄存器是1111 1110那么P2.1亮的寄存器就是1111 1101。可以将P2.0左移一位得到1111 1100再和0000 0001或运算或运算有1取10xFC 1111 1100 0x01 0000 0001 ----------------- 0xFD 1111 1101 ← 只有第 1 位是 0P2.1 亮完整代码#includemcs51/8051.h// SDCC 没有 INTRINS.h用宏定义实现 _nop_()#define_nop_()__asm NOP __endasmvoidDelay500ms(void)//12.000MHz{unsignedchari,j,k;// 去掉 data让编译器自动分配_nop_();i4;j205;k187;do{do{while(--k);}while(--j);}while(--i);}voidmain(void){while(1){unsignedcharled0xFE;// 1111 1110for(inti0;i8;i){P2led;led(led1)|0x01;// 左移后最低位补 1, 最后变成0111 1111Delay500ms();}}}或者unsignedcharled0xFE;while(1){P2led;Delay500ms();// 把最高位第 7 位移到最低位实现循环led(led1)|(led7);}带参数延时// 一毫秒延时代码voidDelay1ms(void)//12.000MHz{unsignedchardata i,j;i2;j239;do{while(--j);}while(--i);}// xms毫米延时代码voidDelayXms(unsignedintxms){unsignedchari,j;if(xms0)return;// 传入 0 直接返回不做延时do{i2;j239;do{while(--j);}while(--i);}while(--xms);}

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑