接连啃C语言老本过了前两关,第三关还是led灯,灯灯等灯瞪灯等灯 灯灯等灯瞪灯等灯……
这一关就引入了一个新概念:移位函数。举例来说就是把一个八位二进制数1111 1110 末尾的0 不断移动,造成灯挨个点亮的效果,像流水一样,形象称之为流水灯。俺目前只跟着郭天祥老师学了循环左移关键字:crol(move,1) ,括号内容自定义。
下面展示程序:
include<reg52.h>
include<intrins.h>
void main ()
{
P2=0xfe;
while(1)
{
long a=5000;
P2=_crol _(P2,1); //_crol _的“l”后面有一个空格,去掉
while(a--);
}
}
include<reg52.h>
include<intrins.h>
void main ()
{
long move=0xfe;
while(1)
{
long a=5000;
move = crol(move,1);
P2 = move;
while(a--);
}
}
//
头文件 头文件 头文件!!!#include<intrins.h> 导入crol函数的头文件
move后面的数字决定一次移动几位,移动一位就是挨个点亮,两个就是跳跃点亮
老师说P2直接赋值不好。所以第二个程序使用了变量move存储电压分布
移位函数+延时函数
移位函数:
头文件 #include<intrins.h>
_crol _ 字符循环左移 赋值P1=0xfe 即1111 1110 P1 = crol( P1 , 1 ) 则0从1位循环左移,灯从1-7循环亮起
_cror _ 字符循环右移
_irol _ 整数循环左移
_iror _ 整数循环右移
_lrol _ 长整数循环左移
_lror _ 长整数循环右移
上面所有函数名称的最后一个字母后面都有一个空格,去掉