扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
再发一个10个灯的,不过函数是IROL / _crol_不好实现,我用_irol_实现的。
目前创新互联已为超过千家的企业提供了网站建设、域名、网页空间、网站托管、服务器托管、企业网站设计、榆中网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
_crol_不好实现,我用_irol_实现的。延时部分自己修改。
可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。
用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。#include reg5h首先写出单片机的头函数。#include intrins.h输入位移函数。unsigned int count=0,led;定义函数。
这个程序很简单的,只要掌握了循环表达方式就可以实现。首先,编写流水灯的循环函数,其次使用for语句进行循环。完成后可以修改画质后同样方法实现闪烁。
故点亮的是p0引脚所对应的led灯,也就是你所谓的c0。所以你的程序没有问题啊。
单片机C语言实现循环8个流水灯左移三次,后右移三次。
在左边还有个sec 寄存器,可以看到执行到当期指令时所花的时间。不过首先你要去project option里面把晶振频率设置成和你单片机一样的。选择变量i,右键,点击add to watch 1。这里是看变量i的变化的。
想用这个函数,只要先在程序的开头加入一条引用声明就可以了。includeINTRINS.H 因为_crol_这个函数是包含在INTRINS.H文件之中的函数。
1、_crol_ (temp,1) 是带进位位左移一位,相当汇编里的RLC A 而1 是不带进位位的左移一位,相当汇编里的RL A。
2、在C语言中要带进位的循环移动有什么用啊,用C语言还要去操作CY干什么啊。
3、是移位操作,在被操作数是无符号数时,每移动一位,最高位就会被置零,所以当移动8次以后,temp就等于零了,然后是temp再次赋值0x7e,依次循环。
4、acc1因该是循环左移,包括:循环中不含标志位C的左移或右移和循环中包含C的左移或右移操作。
首先要写入单片机的头函数,定义单片机P1口的8个管脚,让他们分别代表流水灯的8个led。写一个大约一小时的延时函数,为了清楚的看到流水灯的、效果。
P1=_crol_(P1,1);//将P1口的赋值循环左移,该语句执行一次,开始时由 11111110变成11111101,再执行一次,变成11111011,以此类推。可以看见流水灯动起来了。
C51单片机的循环左移函数是,_crol_(变量名,n),循环右移函数是,_cror_(变量名,n),函数中的“循环”是指变量的8位二进制数依次向左移一位,或向右移一位。
是单片机c语言编程中的语句,变量=_crol_(变量名,移动位数),这是循环左移,还有个循环右移的_cror_.这些可以再keil中的help菜单中找到。
不一样,_crol_是字符循环左移,就是只左移低8位,高位舍掉,且左移出的第7位会移到第0位,是循环的。而只是纯粹地左移。
首先要写入单片机的头函数,定义单片机P1口的8个管脚,让他们分别代表流水灯的8个led。写一个大约一小时的延时函数,为了清楚的看到流水灯的、效果。
crol()是循环左移,在汇编相当于多个 RL A,的组合。
C51系列单片机中_crol_指令是循环左移函数,_cror_是循环右移函数,这是51中特有的指令,别的类型单片机就不能使用了。易于程序的移植和通用性考虑个人比较推荐用 左移, 右移这两个C中的移位符号。
你的led灯是共阳的,从你给的条件可以判断。p1=0xfe,即最低位为‘0’,故点亮的是p0引脚所对应的led灯,也就是你所谓的c0。所以你的程序没有问题啊。
循环左移n: (a(N-n))|(an)循环右移n: (a(N-n))|(an)C语言的位运算功能是其区别于其他大多数高级程序设计语言的特色之一,用它可以方便实现一些特殊功能,灵活掌握是用C程序编写系统程序的基础。
加入一个头文件INTRINS.H使用里面的循环左移、循环右移函数就可以了。这两个函数分别是_crol_()和_cror_()如A=10100000即0xA0。
你的led灯是共阳的,从你给的条件可以判断。p1=0xfe,即最低位为‘0’,故点亮的是p0引脚所对应的led灯,也就是你所谓的c0。所以你的程序没有问题啊。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流