51单片机如何在一个工程中同时加入循环左移和循环右移,

51单片机如何在一个工程中同时加入循环左移和循环右移,,第1张

这个问题很简单,因为循环左移和循环右移并不相互排斥,可以单独存在,不仅仅在一个工程中,在用一个文件或者同一个程序段中都是可以的。比如。
#include<reg51h>
#include<intrinsh>
void delay(int a)
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<110;j++);
}
main()
{
unsigned char led1=0xfe,led2=0x7f;
while(1)
{
P0=_crol_(led1);
P1=_cror_(led2);
delay(100);
}
}

这种LED屏显示汉字,虽然所显示的汉字静止的,但显示时却是动态扫描的。而要移动显示,看你是怎么汉字取模的。按行取模可以向上移动,按列取模才可以向左移动。以按列取模为例,每个字字模表中第1,2字节送LED屏第一列显示,依次显其余15列。假如显示05秒(时间可以调),再取字模的第3,4字节,还送LED屏第一列显示,依此显示其余14列,再显示第2个字的第一列。就这样,不断取下一组点阵数据。效果就是汉字向左移动了。

汇编忘记了
c的话 dat<<1
不是每秒循环左移,1代表左移1位,超出部分忽略
--------------
常用的场合:
u8 a;
for( u8 i=0,j=0x01; i<8; i++,j<<=1 )
{
if( a&j )
{
//a的第i位为1
}
}
-----------------
运算的时候也常用到 左移一位 只要不超出范围 相当于×2


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12864695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存