51单片机的c语言 左移右移怎么用?想用来控制流水灯,请帮忙写个完整的c程序,参考下,端口随意

如题所述

# include "reg51.h" // 包含头文件
#define uchar unsigned char
void delay02s(void) // 延时0.2s子程序
{
unsigned char i,j,k;
for ( i=2;i>0;i-- )
for (j=200;j>0;j-- )
for (k=250;k>0;k-- );
}

void main (void) // 主函数
{
uchar i,j;
while (1) // 死循环
{
j=0x01; // j初始化为0x01,左移初始值
for(i=0;i<8;i++) // for循环语句,完成8个循环
{
P1= ~ j; // 对变量j 中的值按位取反后,从P1口输出
delay02s( ); // 延时0.2s
j= j<<1; // 左移1位
}
j=0x80; // 设置右移初始值j为0x80
for (i=0;i<8;i++)
{
P1= ~ j;
delay02s( );
j= j>>1; // 右移1位
}
}
}追问

P1端口不用宏定义?

可以直接用呀

为什么要取反

温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机的c语言 左移右移怎么用?想用来控制流水灯,请帮忙写个完整的c...
delay02s( ); \/\/ 延时0.2s j= j<<1; \/\/ 左移1位 } j=0x80; \/\/ 设置右移初始值j为0x80 for (i=0;i<8;i++){ P1= ~ j;delay02s( );j= j>>1; \/\/ 右移1位 } } }

很简的51单片机C语言流水灯程序
1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:include<reg51.h> \/\/51单片机头文件#include <intrins.h> \/\/包含有左右循环移位子函数的库#define uint unsigned int \/\/宏定义#define uchar unsigned char \/\/宏定义sbit beep=P2^3;void delay(uint z) \/\/延时函数,z...

怎么控制51系列单片机流水灯先左移再右移?最好有分析
双向循环 可以用左移右移指令 赋值 P1口 A=A<<1 循环左移一位 A=A>>1 循环右移一位

关于单片机流水灯左移右移的问题?
51单片机的左移右移,首先在开始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;for(m=20;m>0;m--)for(n=20;n>0;n--)for(k=250;k>0;k--);理解这三句,第一句是指:m=20;m>0然后m--是真就执行:for(n=20;n>0;n--)for(k=...

51单片机流水灯用C语言编写的设计程序???
h> define uchar unsigned char define uint unsigned int void delay(uint z);main(){ uchar aa;while(1){ aa=0xfe;P1=aa;delay(100);while(1){ aa=_crol_(aa,1);P1=aa;delay(100);} } } void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} ...

一个用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口的数据来自...

请问金沙滩51单片机中,先是左移到头,然后再右移到头的花样流水灯程序该...
\/*单片机,用定时中断实现每隔0.2秒让接在P1口的8个小灯从左往右循环点亮。*\/ #include #include #define uchar unsigned char uchar a,b; uchar b=1; uchar a=0xfe; void main() { EA=1;IT1=1;ET0=1; TH0=-5000\/256; TL0=-5000%256; TMOD=0x01;...(火星人)2086 ...

单片机C语言编程:控制流水灯
T0 工作模式2 计时器中断,一次200us,1s流水灯左移或右移一次。k3触发外部中断0,级别高于计时器中断,故暂停。include <reg52.h>#include <intrins.h> #defineuint unsigned int#defineuchar unsigned charsbit k1=P1^0; \/\/左循环按钮sbit k2=P1^1; \/\/右循环按钮sbit k4=P1^2; \/\/恢复暂停...

求51单片机C语言定时中断流水灯(先左移后右移,一直循环),不要延迟的...
void main(){ TMOD|=0x01; \/\/定时器0工作方式为1 TH0=(65536-50000)\/256; \/\/装初值 TL0=(65536-50000)%256;EA=1; \/\/开总中断 ET0=1; \/\/开定时器中断 TR0=1; \/\/开启定时器 while(1); \/\/等待中断 } void timer0() interrupt 1 { TH0=(65536-50000)\/256;TL0=(...

谁能帮我解释以着这个51单片机的c语言程序,说的详细些,谢谢!
估摸着是点亮流水灯的代码吧,首先delay();是延时这能明白吧!while(1){ temp=0xfe;P1=temp; \/\/先让P1口值为0xfe,估计是先点亮一个LED灯 delay();for(i=1;i<8;i++){ a=temp<>(8-i); \/\/temp右移8-i位 P1=a|b; \/\/P1赋值,实际上就是让P1=(temp循环左移i位),...

相似回答