您的位置首页百科知识

C语言中实现循环移位操作的方法

C语言中实现循环移位操作的方法

的有关信息介绍如下:

C语言中实现循环移位操作的方法

许多嵌入式系统软硬件开发或者是C语言学习者,是否在刚开始入门时会遇到流水灯或者是跑马灯等类似的小实验呢?作为初学者,是否会觉得毫无头绪,略感郁闷?下面,小编教大家如何实现,请看下文。

作为计算机系统开发的主流编程语言之一,C语言以其简洁紧凑、灵活方便、运算符丰富、数据类型丰富等诸多优点,而作为了高校理工科教育基础课程。

首先简单分析流水灯工作原理:

只需要控制每个时间间隔内只有一盏灯亮即可,其余灯均处于灭状态。学习过汇编语言的,是否联想起寄存器循环移位操作符。如下所示即为LED灯电路原理图,分为共阴极与共阳极接法:

我们知道,在ASM(汇编语言)中,有循环左移、循环右移指令,但是在ANSI C标准中并没有循环移位操作运算符,所以接下来将介绍如何在C语言中实现循环移位操作运算。

功能: 循环移位 1111 1110 b(二进制),点亮LED灯实现流水灯效果。

思路: 循环左移时,将移出的位填在右端

示例: 实现循环左移1位

uint8 a,b;

uint8 counter = 0;

while(1)

{

a = status>>7;

b = status<<1;

status = a|b;

P1OUT = status; //MSP430G2553单片机输出引脚,外接共阳极的LED 0 - 7

for(i=0;i<40000;i++)

{

;//delay function

}

counter ++ ;

if(counter == 7)

{

status = 0xfe;

}

}

如下所示,为简易的LED阵列,只需要按顺序点亮LED即可实现流水灯控制,需要注意的是,要控制好灯亮持续时间。