c语言8位流水灯两个开关控制左移右移,程序怎么写哟,各位大神帮帮忙
关键语句在于两个for中的“a=_crol_(a,1);”和“a=_cror_(a,1);”,可以发现用的是两个不同的函数_crol_()和_cror_(),一个左移,一个右移
51单片机C语言如何实现8个流水灯左移三次,后右移三次;如此循环
51单片机C语言实现循环8个流水灯左移三次,后右移三次。
例程:
#includereg51.h //51单片机头文件
#include intrins.h //包含有左右循环移位子函数的库
#define uint unsigned int //宏定义
#define uchar unsigned char //宏定义
sbit beep=P2^3;
void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{ //delay(500);大约延时500ms.
uint x,y;
for(x=z;x0;x–)
for(y=110;y0;y–);
}
void main() //主函数
{
uchar a,i,j;
while(1) //大循环
{
a=0xfe; //赋初值
for(j=0;j3;j++) for(i=0;i8;i++) //左移三次
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_crol_(a,1); //将a变量循环左移一位
}
a=0x7f;
for(j=0;j3;j++) for(i=0;i8;i++) //右移三次
{
P1=a; //点亮小灯
beep=0; //开启蜂鸣器
delay(50); //延时50毫秒
beep=1; //关闭蜂鸣器
delay(50); //再延时50毫秒
a=_cror_(a,1); //将a变量循环右移一位
}
}
}
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
单片机C语言流水灯移位指令
//没有编译过,大概思路就这样
#define P_LED P1; //定义到你自己的端口
void main(void)
{
unsigned char circledata=0x01,i=0;
while(1)
{
for(i=0;i4;i++) //显示范围 P_LED.0:P_LED3
{
P_LED=circledatai;
Delay_ms(1000);//根据自己的晶振写延时1S的函数
}
circledata=0xfe;
for(i=3;i=0;i–) //显示范围 P_LED.3:P_LED.0
{
P_LED=circledatai;
Delay_ms(1000);//根据自己的晶振写延时1S的函数
}
}
return;
}
一个用C语言做51单片机做流水灯控制向左移动一位,右边补0的一段程序作业.求指教!
//右边补0,直接移位就可以temp,=1; 如果流水灯只有一个亮,下面的程序就是对的,移位之后补1.
#include “reg51.h”
void delay(unsigned char m);
main()
{
unsigned char temp;
temp=0xfe; //temp=1111 1110,使得P1口的某个引脚为低电平(亮)
while(1)
{
P1=temp; //P1口的数据来自temp,而temp的数据是不断变化的
temp=temp1 | 0x01;//temp向左移动一位,右边补0
if(temp==0xff)
temp=0xfe; //( 这里就是要填补的空!!!!!!!!!)
delay(20);
}
}
void delay(unsigned char m) //延时子程序
{
unsigned char i,j,k; //定义字符型变量,范围为0至255
for (i=0;im;i++)
{
for (j=0;j100;j++)
{
for (k=0;k100;k++);
}
}
C语言流水灯程序用左移符号怎么写
用 1111 1111B 表示八盏灯,1表示灭,0表示亮,左移第一次是 1111 1110B, 左移第二次是1111 1100B, 左移第三次是 1111 1000B, … 左称第八次是 0000 0000B, 然后再赋成 1111 1111B,重新开始左移。