合泰单片机按键控制流水灯 写流水灯 怎么一直重复右移,不跳出for,执行下个for啊?

51流水灯程序为什么左移可以,右移时就出错了呢(右移到第二个就不在右移了)?请大虾指点!万分感谢。_百度知道
51流水灯程序为什么左移可以,右移时就出错了呢(右移到第二个就不在右移了)?请大虾指点!万分感谢。
#include&reg52.h&
#include&intrins.h&
void deaylns(unsigned int i)
while(i--)
for(j=0;j&125;j++)//1ms延时基准程序
void main()
我有更好的答案
//我这个试试#include&reg52.h&#include&intrins.h&void deaylns(unsigned int i){
while(i--)
for(j=0;j&125;j++)//1ms延时基准程序
void main()
{ deaylns(250);
P1=_crol_(P1,1);//p0口左移
deaylns(250);
if(P1==0x7f)
deaylns(250);
P1=_cror_(P1,1);//P1口右移
deaylns(250);
采纳率:100%
看你的程序,你右移后就退出循环了。bool bLeft= while(P0) {
P0=_crol_(P0,1);//p0口左移
deaylns(250);
if(P0==0x7f)
P0=_cror_(P0,1);//P1口右移
deaylns(250);
哥,您看看您的程序,if(P0 == 0x7f)满足也就是说左移循环完成了之后,你就让它右移一位,接下来,延时函数过后戒指break跳出了while循环,而且这个流水灯来回循环也不是这样写的,就算你不用break跳出,等下一次while循环来的时候又是先左移一位,然后又满足if判断,又右移,然后就这么一直左移,,右移...
你的目的是想 从右到左一次点亮在从左到右一次点亮对吧,循环体里面的函数有问题if(P0==0x7f)这条判断语句只执行一次所以到了第二个就执行不下去了。
其他2条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。关于单片机流水灯左移右移的问题?_百度知道
关于单片机流水灯左移右移的问题?
有一个单片机流水灯的程序
#include&reg52.h&
unsigned char a,b;
void delay(void)
unsigned char m,n,k;
for(m=20;m&0;m--)
for(n=20;n&0;n--)
for(k=250;k&0;k--);
void main(void)
我有更好的答案
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=250;k&0;k--);这两句,m--一直减,减一次,里面就执行一次,这里是20次。流水灯的左右移,第一用&intrins.h&的文件包,第二要要会定义赋值变量,第三延时,这是关键。
采纳率:38%
是说这几句吧:a=led&&i;b=led&&(8-i);P1=a|b;这样写可以防止产生错误吧,就像读数据是要用异或一样的其实不这样也可以就写a=led《i;P1=a;不发生特殊情况时和上面一样的
本回答被网友采纳
没什么为什么
就是保证每次只有一个灯亮
fe&&(8-i)保证了第i位及前为0,且第i位后面的位为1 而fe&&i保证了i位及后为0 i位前为1
51单片机内有左移右移命令,何苦自己再写???
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
流水灯的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。想学习合泰单片机,要买什么书_百度知道
想学习合泰单片机,要买什么书
要买什么书(汇编的)从哪个型号开始学起好,比如46r046?要用什么开发工具,还有买什么仿真器(便宜的),谢谢在线等
有学习过51跟 pic
我有更好的答案
学习过51跟PIC,再使用合泰不难,我看到书店有合泰电路的书,合泰有仿真器
仿真器要多少钱,
以前我借用过一个,记着好像不超过1k
采纳率:66%
合泰单片机初级班学习内容:第一节:基础知识1、单片机的基本结构:单片机的概念、储存器、单片机外部引脚的分类及功能2、数制与数制转换:二进制数、十六进制数、数制转换的方法3、基本逻辑电路:与门、或门、非门、异或门4、单片机中的常用术语:什么是位?、什么叫字节?5、单片机的基本电路:电源电路、振荡电路、复位电路第二节:指令系统1、编写程序的格式及常用伪指令:汇编语言的格式、常用伪指令2、合泰单片机指令系统:指令周期、状态寄存器、指令集3、合泰单片机指令详细分析:数据传送指令、算术运算指令、逻辑运算指令、控制转移指令、位运算指令、读表指令、其它指令第三节:编译系统1、HT-IDE3000软件仿真系统:HT-IDE3000的安装方法、HT-IDE3000的界面介绍、HT-IDE3000项目创建、掩膜设置、程序编辑、程序软硬件仿真、程序调试、程序除错、变量查看第四节:芯片烧录1、ISP烧写器的使用:ISP烧写器驱动程序的安装方法、用ISP烧写器烧写芯片2、编写程序的原则:主程序框架化、子程序模块化点亮一个指示灯:程序书写练习、输入/输出口设置、仿真、编译、烧写芯片第五节:LED闪烁、流水灯实验1、指示灯的闪烁实验:变量定义的方法、定时器的设定和使用方法、程序的基本结构2、流水灯实验:I/O口定义的方法、Z和C标志在程序中的用法第六节:按键检测、蜂鸣器控制实验1、用按键控制指示灯的亮灭实验:使用A/D口检测按键的方法、使用I/O口检测按键的方法2、蜂鸣器控制实验:蜂鸣器的驱动方法和编程技巧第七节:数码管显示实验1、数码管的动态显示的原理和编程方法2、建立表格及查表的方法,使用74HC164驱动数码管的方法第八节:定时开关实验&1、利用时间控制子程序来实现0~99秒定时控制的方法2、利用时间控制子程序来实现0~99分钟定时控制的方法第九节:EEPROM读写实验1、24C02的技术参数和控制方法2、读、写24C02的方法第十节:红外遥控开关实验1、5104的技术参数和发码方式2、5104的解码方法第十一节:程序综合应用实验&1、&程序综合应用的方法2、程序的管理架构第十二节:单片机学习和项目开发经验总结1、&学好单片机的成功经验2、&项目开发的流程3、快速查看单片机重要参数的经验合泰单片机中级班学习内容:& 在初级班的基础上加学:电水壶(1628驱动数码管显示)、电热水器(74HC164驱动数码管显示)、抽油烟机(1621驱动液晶屏显示)等实用小家电开发项目。&该单片机学习套件不但可以做初级班的所有实验,还可以做电水壶、消毒柜、电热水器、抽油烟机等小家电项目实验。&配套ISP烧写器+FLASH芯片,无需反复拔插IC及连接线,所有实验,轻松搞定!
我现在正在用合泰HTM100D+D2005A仿真器呢!非常好用呢 不过要将近1000元呢!还过是公司出的钱。
ht的烧写器好贵啊
HT46R064吧?仿真器为:M1001D + D2005A QQ:
其他2条回答
为您推荐:
其他类似问题
您可能关注的内容
单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。 上传我的文档
 下载
 收藏
粉丝量:85
该文档贡献者很忙,什么也没留下。
 下载此文档
51单片机流水灯毕业设计论文
下载积分:9600
内容提示:51单片机流水灯毕业设计论文
文档格式:PDF|
浏览次数:1177|
上传日期: 01:39:07|
文档星级:
全文阅读已结束,如果下载本文需要使用
 9600 积分
下载此文档
该用户还上传了这些文档
51单片机流水灯毕业设计论文
关注微信公众号单片机C语言如何实现8个LED流水灯来回流动?_百度知道
单片机C语言如何实现8个LED流水灯来回流动?
现在只能从左到右循环流动,怎么才能从左到右再从右到左流动呢?
#include &reg51.h&
#include &intrins.h&
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
uchar p1e;
void delay(uint a);
void main()
我有更好的答案
可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。具体实现方法可以参考如下程序:#include&&reg51.h&#include&&intrins.h&#define&uint&unsigned&int#define&uchar&unsigned&charvoid&delay(uint&a);void&main(){&&&&P1=0&&&&while(1)&&&&{&&&&&&&&//&向左循环点亮LED&&&&&&&&&for(i=0;&i&7;&i++)&&&&&&&&{&&&&&&&&&&&&P1=_crol_(P1,1);&&//&左移一位,点亮下一位LED&&&&&&&&&&&&delay(55);&&&&&&&}&&&&&&&//&向右循环点亮LED&&&&&&&for(i=0;&i&7;&i++)&&&&&&&{&&&&&&&&&&&&P1=_cror_(P1,1);&//&右移一位,,点亮上一位LED&&&&&&&&&&&&delay(55);&&&&&&&}&&&&}}//&延时函数,延时a毫秒void&delay(uint&a){&&&&uint&x,y;&&&&for(x=a;x&0;x--)&&&&&&&&for(y=110;y&0;y--);}
采纳率:73%
for(i=0; i&7; i++)
{ p1e=_crol_(p1e,1); delay(55); P1=p1e; beep=0; delay(55); beep=1; delay(55);
} for(i=0; i&7; i++)
{ p1e=_cror_(p1e,1); delay(55); P1=p1e; beep=0; delay(55); beep=1; delay(55);
本回答被提问者采纳
p1e=_cror_(p1e,1);
这个只是向右移吧...我是说向左移动到第8个LED后再从第8个向左移,实现来回流动
1,赋值2,右移动3,再赋值4,左移动你程序都写出了只是把程序COPy 粘帖到下面 把 p1e=_crol_(p1e,1); 改成p1e=_cror_(p1e,1); 就好了呀
引用天云一号的回答:可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。具体实现方法可以参考如下程序:#include &reg51.h&#include &intrins.h&#define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){
// 向左循环点亮LED
for(i=0; i&7; i++)
P1=_crol_(P1,1);
// 左移一位,点亮下一位LED
delay(55);
// 向右循环点亮LED
for(i=0; i&7; i++)
P1=_cror_(P1,1); // 右移一位,,点亮上一位LED
delay(55);
}}// 延时函数,延时a毫秒void delay(uint a){
for(x=a;x&0;x--)
for(y=110;y&0;y--);}
#include &reg51.h&#include &intrins.h&#define uint unsigned int#define uchar unsigned charvoid delay(uint a);void main(){P1=0while(1){// 向左循环点亮LEDfor(i=0; i&7; i++){P1=_crol_(P1,1);
// 左移一位,点亮下一位LEDdelay(55);}// 向右循环点亮LEDfor(i=0; i&7; i++){P1=_cror_(P1,1); // 右移一位,,点亮上一位LEDdelay(55);}}}// 延时函数,延时a毫秒void delay(uint a){uint x,y;for(x=a;x&0;x--)for(y=110;y&0;y--);}
1条折叠回答
为您推荐:
其他类似问题
您可能关注的内容
流水灯的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 单片机按键控制流水灯 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信