c语言键控流水灯左移右移
答://没有编译过,大概思路就这样 define P_LED P1; //定义到你自己的端口 void main(void){ unsigned char circledata=0x01,i=0;while(1){ for(i=0;i<4;i++) //显示范围 P_LED.0:P_LED3 { P_LED=circledata<=0;i--) //显示范围 P_LED.3:P_LED.0 { P_LED...
答:这个我可以给你提供一个思路,你可以定义一个bit 变量,例如:bit flag=0;在外部中断函数去改变这个flag值,取反 flag=~flag;这样你可以在主函数中有个判断,如果flag等于0,就是左移。否则,就是右移。程序不难写的,希望能帮助到你。
答:1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:
答:LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序。这样左移的延迟大一点的!
答:P1口赋值 0XFE 二进制11111110 也就是第一盏亮其他灭 a=_crol_(a,1); 库函数实现循环 P1=a; 把循环后的值重新付给P1口 } } 以上只是单方向的循环 还缺少延时函数 加在赋值后面 双向循环 可以用左移右移指令 赋值 P1口 A=A<<1 循环左移一位 A=A>>1 循环右移一位 ...
答:然后把下面的代码放到循环里:U8 temp0 = 1。U8 temp1 = 0x80。U8 i = 0。if(flag == 1)。{。for(i=0;i<8;i++)。{。P1=temp0<<i。}。}。else。{。for(i=0;i<8;i++)。{。P1=temp1>>i。}。}。}。对控制LED口的寄存器进行位操作,按k1左移,按K2就是右移了。51单片机...
答:哥,您看看您的程序,if(P0 == 0x7f)满足也就是说左移循环完成了之后,你就让它右移一位,接下来,延时函数过后戒指break跳出了while循环,而且这个流水灯来回循环也不是这样写的,就算你不用break跳出,等下一次while循环来的时候又是先左移一位,然后又满足if判断,又右移,然后就这么一直左移,,右移.....
答:51单片机的左移右移,首先在开始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;for(m=20;m>0;m--)for(n=20;n>0;n--)for(k=250;k>0;k--);理解这三句,第一句是指:m=20;m>0然后m--是真就执行:for(n=20;n>0;n--)for(k=...
答:说一下思路吧。主程序做一个标志位A(初始赋值0),一个判断语句(if之类的)判断此标志位A,A为0时,流水灯右移,否则,流水灯左移。中断程序里,让A自加1,然后判断,等于2时,将A赋值为0,其他情况不变。希望能帮到你。
答:200);if(P0==0xFF){cf=cf*(-1); P0=0x7F;} } else { P0>>=1;P0=P0|0x80;Delay(200);if(P0==0xFF){cf=cf*(-1); P0=0xFE;} } WDTRST=0x1E;WDTRST=0xE1;//喂狗指令 } } 每次一个灯亮,先左移,再右移。每200毫秒移位一次。假设晶振是12MHZ。在Proteus上仿真通过。
网友评论:
阎甄13969296850:
单片机C语言流水灯移位指令 -
33323鄂典
: 移位指令为temp=temp<<1左移一位 temp=temp>>1右移一位 但是哥们,你这个用移位反而复杂了,四个灯的直接写就好了嘛 无非是0111间隔1秒0011间隔一秒0001间隔一秒0000 反过来就是熄灭咯
阎甄13969296850:
求大神帮忙,单片机C语言问题,用一个开关控制单一灯的左移右移,开关按下灯右移,正常左移 ,求帮助 -
33323鄂典
: #include unsigned char S1; unsigned int a; void int5() interrupt 0 { if(INT0==0) { S1++; if(S1>1) S1=0; } } main() { char i; EA=1; IT0=1;//外部中断设定为边沿触发 EX0=1;//开外部中断 while(1) { switch(S1)//根据S1按键的次数来确定功能 { {case 0: ...
阎甄13969296850:
求一个用c语言编译的流水灯程序,要求灯从中间向两边亮 -
33323鄂典
: #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++); }
阎甄13969296850:
单片机C语言编程:控制流水灯 -
33323鄂典
: T0 工作模式2 计时器中断,一次200us,1s流水灯左移或右移一次. k3触发外部中断0,级别高于计时器中断,故暂停. #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char sbit k1=P1^0; //左循环按钮 ...
阎甄13969296850:
单片机C语言编程 -
33323鄂典
: /*该程序流水灯有两种模式,顺序左移和顺序右移,独立开关控制*/#include#include#define uchar unsigned char#define uint unsigned int uchar tmp,flag; sbit key1=P3^4; sbit key2=P3^5; void delay(uint z); void led(); void keyscan(); void main() { ...
阎甄13969296850:
学用C语言编程流水灯 -
33323鄂典
: 做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环 #include unsigned char i; ...
阎甄13969296850:
单片机c语言,流水灯,时钟的程序! -
33323鄂典
: 网友您好!流水灯程序如下: #include<reg51.h> sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P3...
阎甄13969296850:
设计一个左移到头接着右移,右移到头再左移的花样流水灯程序,C语言 -
33323鄂典
: 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];}}}
阎甄13969296850:
单片机如何控制流水灯的程序 -
33323鄂典
: 灯的亮灭是通过控制IO口数据来实现的;程序大体如下:#define led0 P1^0#define led1 P1^1#define led2 P1^2#define L 0 //亮#define M 1 //灭 void init() { led0 = M; led1 = M; led2 = M; } main() { init(); while(1) { delay_S(1); led0 = L; delay_S(1); led...
阎甄13969296850:
用C语言编写按键控制流水灯的程序 -
33323鄂典
: 1灭).编译器keil C代码如下: #include<reg51.h> #include<intrins.h> //包含循环左移函数 _cro_l头文件 unsigned char tmp; //中间变量 ////////////////////////////////////////////////////////////////////////////////////////////////// // 延时子程序 //////////////////////////////////////////////////////////////////...