void delay10ms()//延时函数(利用for循环){ for(a=100;a>0;a--)for(b=225;b>0;b--);} void main()//主函数main { k=0xfe;//给变量赋初值(十六进制)相当于二进制数11111110 while(1)//死循环 { de

很简单,如果单片机时钟是12MHz,采用16位定时器中断,最长定时周期恰好是65ms ,只要初装值设为0000H,在中断程序中直接依次点灯就OK。

//延时 void DelayMS(uint x){ uchar i;while(x--){ for(i=0;i<120;i++);} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0

因为你只是单个LED,所以使用静态显示就好了(9个I/O口),定时30ms若不精确,可以使用简单的延时函数,若需要精确,要使用定时器T0或者T1。8个LED就是简单的I/O口高低电平了(8个I/O口)。整个功能很简单,若需要详细

timer0_init(); TR0=1; //打开定时器 while(1) { for(i=0;i<8;i++) { P2= ~(1<

要让8个灯每秒依次点亮,可以使用计时器和计数器来实现。以下是一个可能的实现步骤:创建一个1秒的计时器(例如,使用定时器标记为T1)和一个计数器(例如,使用计数器标记为C1)。在计时器T1的触发条件下,将计数器C1的

定时器八盏led灯依次点亮

unsigned int i, j;for(i = 0; i < time; i++) for (j = 0; j < 500; j++);} main(){ unsigned char i, j;while(1) { j = 0xfe; for(i = 0; i < 4; i++) { P0 = j; j =

LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0 SETB ET0 SETB EA MOV R2,#5 MOV A,#0F8H MOV P0,A SJMP T0ISR:CLR TR

8;j++){ P1 = 255;//全灭,P1外接LED,低电平发光.delay_ms(500);//稍等片刻.for(i = 0;i < 8;i++){ P1 <<= 1;delay_ms(900 - 100 j);//延 渐短 } } } } //---

} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);

*/ /* 程序详细功能介绍: *做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上, *输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→

1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

include //调用头文件 include //调用包含有位左移_crol_的头文件 unsigned char a,b,k,j;//定义四个无符号字符型变量 void delay10ms()//延时函数(利用for循环){ for(a=100;a>0;a--

急求!!!单片机程序,要求8个LED灯依次亮,相隔0.25秒,找来的程序可以使用但是不知道具体意思

while(1){recy=0xfe;for(k=1;k<=8;k++){ P1=recy;Delay(50000);recy=recy<<1;} }

} } //主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);

while(1){ P3=0xfe;//第一个灯亮 delay();//延时 P3=0xfd;//第二个灯亮 delay();P3=0xfb;//第三个灯亮 delay();P3=0xf7;//第四个灯亮 delay();P3=0xef;//第五个灯亮 delay();P3=0xdf;//第六

1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

是这样大哥,通电片p0,p1,口流水从左到右自动循环点亮,当按下一次p27独立一个按键,高电平变低电平,led从右到左依次逐个熄灭,按下熄灭一个,然后全灭,停10秒自动从启动循环点亮。要求汇编程序,中断,计数,延时,循

while(1){ j=0x01;//假如高电平灯亮 for(i=0;i<8;i++){ P0=j;delay(1000);//逐个循环点亮 j<<=1;} j=0xfe;for(i=0;i<8;i++){ P0=j;delay(1000); // 逐个循环熄灭 j<<=1;} } }

led7=0;delay(50000);//大约延时450ms led8=0;delay(100000);//大约延时900ms //从右到左依次点亮 led8=1;delay(50000);//大约延时450ms led7=1;delay(50000);//大约延时450ms led6=1;delay(50000);//大约

设计一个具有8个LED灯,要求从右向左依次点亮一秒后熄灭,循环往复的单片机程序。跪求

ORG 0000HLJMP MAINORG 0030HMAIN; MOV R2,#3LOOP: MOV A,#0FEH MOV R3,#8LOOP1: MOV P0,A LCALL DELAY CLR C RLC A DJNZ R3,LOOP1 MOV P0,#00H LCALL DELAY MOV P0,

1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。

unsigned LED,i;LED = 0xfe;EA = 0;while(1){ for(i=0;i<7;i++){delay(100);LED = (LED<<1)|0x01;P3 = LED;} for(i=0;i<7;i++){delay(100);LED = (LED>>1)|0x80;P3 = LED;} } } 汇

while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);

单片机用汇编做一个控制8个LED灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程

电路很简单八个led灯接在p1口.运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去 单片机是不是很有趣?下面是c语言程序源码

因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时

可以实现,首先随便连接一个I/O口,P1/P2/P0均可,然后赋予一初值,然后使用本征函数_cror_(循环变量,循环次数)循环右移,或者循环左移实现。左移只需改掉本征函数,同时亮灭可以先给全1,然后给全0,中间加延时,自

int i=10000; //这个值调整亮灯灭等快慢,越小越快越大越慢 while(i--)return;} //从上到下亮灯 void LED_a(void){ LED_IO1 = 0;delay();LED_IO2 = 0;delay();LED_IO3 = 0;delay();LED_IO4 = 0

MAIN:MOV P1,#01111111B ;P1口低电平 对应灯亮 点亮P1.7对应的LED LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况 MOV P1,#10111111B LCALL DLY_500MS ;延时500ms 可以清晰看到每个LED的亮灭情况

uchar i,j;j=0x01;//假如高电平灯亮 while(1){ j=0x01;//假如高电平灯亮 for(i=0;i<8;i++){ P0=j;delay(1000);//逐个循环点亮 j<<=1;} j=0xfe;for(i=0;i<8;i++){ P0=j;delay(1000); //

设计8个LED灯从上到下依次点亮,然后从下到上依次点亮,

如何以零成本制作LED灯
用单片机的编程也可以啊。。间隔时间用延迟程序做。需要程序吗?
#include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uint s; while(1) { P0=0xfe; DelayMS(150); for(s=8;s>1;s--) { P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150); } P0=0x00; DelayMS(150); p0=0xff; DelayMS(150); 扩展资料: 常用单片机汇编指令: 1 .MOV A,Rn 寄存器内容送入累加器 2 .MOV A,direct 直接地址单元中的数据送入累加器 3 .MOV A,@Ri (i=0,1)间接RAM 中的数据送入累加器 4 .MOV A,#data 立即数送入累加器 5 .MOV Rn,A 累加器内容送入寄存器 6 .MOV Rn,direct 直接地址单元中的数据送入寄存器 7 .MOV Rn,#data 立即数送入寄存器 8 .MOV direct,A 累加器内容送入直接地址单元 9 .MOV direct,Rn 寄存器内容送入直接地址单元 10. MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元 11 .MOV direct,@Ri (i=0,1)间接RAM 中的数据送入直接地址单元 12 MOV direct,#data 立即数送入直接地址单元 13 .MOV @Ri,A (i=0,1)累加器内容送间接RAM 单元 14 .MOV @Ri,direct (i=0,1)直接地址单元数据送入间接RAM 单元 15 .MOV @Ri,#data (i=0,1)立即数送入间接RAM 单元 16 .MOV DPTR,#data16 16 位立即数送入地址寄存器 17 .MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器 18 .MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器 19 .MOVX A,@Ri (i=0,1)外部RAM(8 位地址)送入累加器 20 .MOVX A,@DPTR 外部RAM(16 位地址)送入累加器 21 .MOVX @Ri,A (i=0,1)累计器送外部RAM(8 位地址) 22 .MOVX @DPTR,A 累计器送外部RAM(16 位地址) 23 .PUSH direct 直接地址单元中的数据压入堆栈 24 .POP direct 弹栈送直接地址单元 25 .XCH A,Rn 寄存器与累加器交换 26 .XCH A,direct 直接地址单元与累加器交换 27 .XCH A,@Ri (i=0,1)间接RAM 与累加器交换 28 .XCHD A,@Ri (i=0,1)间接RAM 的低半字节与累加器交换 参考资料来源:百度百科-单片机汇编指令
#include#define uchar unsigned charvoid delay(uchar a){uchar i;while(a--)for(i=0;i>1)|0x80; delay(200); } } P0=0xff; while(1);}
void main() { P1=0XFF; /*定义初始状态为全灭*/while(1) { delay(2000); P1=0X7e; delay(2000); P1=0Xbd; delay(2000);P1=0Xdb;delay(2000); P1=0Xe7; delay(2000); P1=0Xdb;delay(2000); P1=0Xbd;delay(2000); P1=0X7e; delay(2000); P1=0XFF; /********此循环使得发光二极管按照07,16,25,34,43,52,61,70的顺序循环交替两两点亮*******/} /*end while*/}/*end main*/
解释如下 #include "reg52.h" //调用52内码 void delay(void); //声明延迟 void main() //主函数 { unsigned char i; //定义i为无符号字符型,即8位长度 while(1) // 一直循环下面{}内的内容 { for(i=0;i<8;i++) //8次 { P0 = ~(1<<i); //将1向左边移动i位,并取反,PS:这里与你选用的数码管的类型有关,这里他用的是共阴级的 P2 |= 0xE0; //P2的前3位置位,即P2.5~P2.7都为1 P2 &= 0x9F; //P2的内容与1001 1111进行位的与运算,并赋值给P2 delay(); //调用延迟子程序 } } } //软件延时程序 void delay(void) { unsigned char i,j,k; //定义i,j,k为无符号数 for(i=20;i>0;i--) //空操作20次 for(j=20;j>0;j--)//空操作20次 for(k=248;k>0;k--);//空操作248次 } 个人认为写程序的人有点糊涂,char可以设置到255,不用20,20的加