用左移右移点亮流水灯
答:关键语句在于两个for中的“a=_crol_(a,1);”和“a=_cror_(a,1);”,可以发现用的是两个不同的函数_crol_()和_cror_(),一个左移,一个右移
答:delay02s( ); // 延时0.2s j= j<<1; // 左移1位 } j=0x80; // 设置右移初始值j为0x80 for (i=0;i<8;i++){ P1= ~ j;delay02s( );j= j>>1; // 右移1位 } } }
答:/*单片机,用定时中断实现每隔0.2秒让接在P1口的8个小灯从左往右循环点亮。*/ #include #include #define uchar unsigned char uchar a,b; uchar b=1; uchar a=0xfe; void main() { EA=1;IT1=1;ET0=1; TH0=-5000/256; TL0=-5000%256; TMOD=0x01;...(火星人)2086 ...
答:地址 指令0 LD X01 OR M42 ANI X13 OUT M44 MOVP K0 V9 LD X110 MOVP K0 K2Y015 LD M416 AND M801317 MPS18 MOVP D200V K2Y023 CMPP V K8 M030 AND M231 INCP V34 MPP35 AND M136 MOV K0 V41END写入plc即可111
答:P1口赋值 0XFE 二进制11111110 也就是第一盏亮其他灭 a=_crol_(a,1); 库函数实现循环 P1=a; 把循环后的值重新付给P1口 } } 以上只是单方向的循环 还缺少延时函数 加在赋值后面 双向循环 可以用左移右移指令 赋值 P1口 A=A<<1 循环左移一位 A=A>>1 循环右移一位 ...
答:;左移 LOOP1:MOV R7,#8 MOV A ,#01 RL A MOV P1,A CALL DELAY DJNZ R7,LOOP1 ;全亮 MOV P1,#0FFH CALL DELAY ;右移 LOOP2:MOV R7,#8 MOV A ,#01 RR A MOV P1,A CALL DELAY DJNZ R7,LOOP2 ;不想写了 ...
答:LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序。这样左移的延迟大一点的!
答:MOV A,#0FEH ;A的初始值,即 P0.0的L0 点亮 SETB C LOOP: MOV P0,A LCALL DELAY RLC A ;左移流水灯(带进位的左移),即亮点向P0口的高位移动 DJNZ R2,LOOP MOV R2,#8 ;右移次数 LOOP1: RRC A ;右移流水灯 MOV P0,A LCALL DELAY DJNZ R2,LOOP1 LJMP START DELAY: MOV R5...
答:可以实现,首先随便连接一个I/O口,P1/P2/P0均可,然后赋予一初值,然后使用本征函数_cror_(循环变量,循环次数)循环右移,或者循环左移实现。左移只需改掉本征函数,同时亮灭可以先给全1,然后给全0,中间加延时,自然得到需要的功能。include <reg51.h>//包含头文件 include <INTRINS.H>//...
答:main(){ unsigned char led[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char a = 0;while(1){ for (a = 0 ; a < 8; a++){ Pn(灯的IO) = led[a];} for ( a = 7 ; a <= 0 ; a--){ Pn(灯的IO) = led[a];} } } ...
网友评论:
封洋13983938516:
单片机中流水灯如何控制 -
2515施力
: 让我来告诉你答案!单片机中流水灯控制: 硬件连接很简单,只要将8个LED指示灯接在P1口上另一端通过220欧姆的电阻接+5V电源上,就可以了. 主要靠软件控制,简单的可以使用左移或右移指令,将低电平0逐渐移入寄存器中,即控制LED指示灯逐渐一个一个地点亮或一个一个地熄灭. 复杂点:可以进行花式流水控制. 例如:可以由两边逐渐向内点亮然后再由内逐渐向外一个一个熄灭. 还可以由由内逐渐向两边内点亮然后再由两边渐向内逐一个一个熄灭. 在程序的实现上可以把各种花式流水的P1口亮灭状态字事先定义成数组然后每隔一定的时间 取出送P1口显示. 呵呵俺只提供给你一个号的算法程序就自己动手自立更生吧 满意就选满意回答
封洋13983938516:
请问52单片机中流水灯实现左移,全亮,右移,两边向中间亮要怎么写程序啊,最好有 - crol - 的程序,谢谢啦 -
2515施力
: 你好!你会左移右移的话那就简单啦,直接相当于一个循环左移与一个循环右移相或,具体代码没空写给你啦,自己思考一下吧仅代表个人观点,不喜勿喷,谢谢.
封洋13983938516:
单片机设计流水灯c程序,(p1口输出,8只led,从低位到高位一只led轮序点亮) -
2515施力
: 用左移和右移函数
封洋13983938516:
关于流水灯左移和右移的程序问题 -
2515施力
: LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序. 这样左移的延迟大一点的!
封洋13983938516:
我这个程序为何实现不了,51单片机流水灯,从左移到右,又从右移到左.单个亮,求大神 -
2515施力
: LOOP:MOV P1,ARL AACALL DELAYDJNZ RO,LOOP;【每次执行这个djnz指令,R0都会减一,当r0==0时才会执行 RR A指令,】RR AACALL DELAYSJMP LOOP;【这边跳转到loop时,R0的值是为0的】 可以这样修改: MAIN:MOV A,...
封洋13983938516:
51单片机流水灯右移?我只知道怎么样左移. -
2515施力
: c语言的话,左移用<<,右移用>> 循环移位可以调用函数.
封洋13983938516:
设计一个左移到头接着右移,右移到头再左移的花样流水灯程序,C语言 -
2515施力
: main(){unsignedcharled[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedchara=0;while(1){for(a=0;a<8;a++){Pn(灯的IO)=led[a];}for(a=7;a<=0;a--){Pn(灯的IO)=led[a];}}}
封洋13983938516:
求一个用c语言编译的流水灯程序,要求灯从中间向两边亮 -
2515施力
: #include<reg52.h> #define uchar unsigned char void delay(z); uchar code t[]={0x18,0x24,0x42,0x81};//这是编码表 void main() {int i=0;while(1)//死循环{for(i=0;i<4;i++)P1=t[i];//取码,我用的P1口,你要用其他的端口你就把取出来的码送给你要用的端口delay(5);}} void delay(z) { int a,i; for(a=0;a<z;a++) for(i=0;i<110;i++); }
封洋13983938516:
PLC编程程序:流水灯先左移后右移亮再全亮全灭三次 -
2515施力
: 地址 指令0 LD X01 OR M42 ANI X13 OUT M44 MOVP K0 V9 LD X110 MOVP K0 K2Y015 LD M416 AND M801317 MPS18 MOVP D200V K2Y023 CMPP V K8 M030 AND M231 INCP V34 MPP35 AND M136 MOV K0 V41END写入plc即可111