导航:首页 > 操作系统 > 单片机crol函数程序代码

单片机crol函数程序代码

发布时间:2023-01-02 11:10:05

1. 单片机控制8个led灯交替点亮的程序

#include "reg51.h"
main()
{
unsigned int i,j;
while(1)
{
P1=0xfe; //点亮第一个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfd; //点亮第二个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xfb; //点亮第三个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xf7; //点亮第四个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xef; //点亮第五个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xdf; //点亮第六个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0xbf; //点亮第七个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
P1=0x7f; //点亮第八个LED
for(i=200;i>0;i--)
for(j=500;j>0;j--);
}
}
或:
#include "reg51.h"
void delay(unsigned int t)
{
unsigned inti,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char w,i;
while(1)
{
w=0xfe;
for (i=0;i<8;i++)
{
P1=w; //循环点亮LED
w<<=1; //点亮灯的位置移动,最低位补0
w=w|0x01; //将最低位置1
delay(500); //延时
}
}
}
或:
#include "reg51.h"
//程序中使用_crol_函数,所以要包含头文件"intrins.h"
#include "intrins.h"
void delay(unsigned int t)
{
unsigned int i,j;
for(i=t;i>0;i--)
for(j=110;j>0;j--);
}
main()
{
unsigned char temp;
temp=0xfe;
while(1)
{
P1=temp;
delay(500); //延时
temp=_crol_(temp,1); //点亮LED的位置循环左移一位
}
}

2. 51单片机简单问题,麻烦看下代码,测试仪只亮了第一个LED灯没有执行_crol_

// 学习单片机编程,可以先看一些仿真实例作为参考,看懂了再学着编程。

#include<reg51.h>

#define uchar unsigned char

uchar temp;

int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f

unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

unsigned char ledx[8];

bit s0,s1;

void delay(uchar z)

{

uchar i,j;

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

for(j=0;j<z;j++);

}

void scan() //要是按键了,扫描键盘编码值

{

P1=0xF0;

delay(1);

temp=P1;

switch(temp)

{

case 0xe0: key1=0;

break;

case 0xd0: key1=1;

break;

case 0xb0: key1=2;

break;

case 0x70: key1=3;

break;

}

P1=0x0f;

delay(1);

temp=P1;

switch(temp)

{

case 0x0E: key=key1+0;

break;

case 0x0D: key=key1+4;

break;

case 0x0B: key=key1+8;

break;

case 0x07: key=key1+12;

break;

default : key=-1;

}

if((key1+1)&&(key+1)) disbuf=key;

}

void ejjc() //判断是否按键

{

P1=0xF0;

if(P1!=0xF0) { scan();s0=1;}

else { s0=0; s1=1;}

}

void main()

{

uchar i;

while(1)

{

ejjc();

if(s0==1 && s1==1)

{

s0=0;s1=0;

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

{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }

}

P0=0xff;

P2=LED7Code[ledx[0]];

P0=0xfe;

delay(5);

P0=0xff;

P2=LED7Code[ledx[1]];

P0=0xfd;

delay(5);

P0=0xff;

P2=LED7Code[ledx[2]];

P0=0xfb;

delay(5);

P0=0xff;

P2=LED7Code[ledx[3]];

P0=0xf7;

delay(5);

P0=0xff;

P2=LED7Code[ledx[4]];

P0=0xef;

delay(5);

P0=0xff;

P2=LED7Code[ledx[5]];

P0=0xdf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[6]];

P0=0xbf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[7]];

P0=0x7f;

delay(5);

}

}

3. 51单片机。用C语言的_crol_()函数实现LED灯循环左移。为什么我的程序只亮一盏灯啊。。。没有循环啊

你的led灯是共阳的,从你给的条件可以判断。p1=0xfe,即最低位为‘0’
,故点亮的是p1.0引脚所对应的led灯,也就是你所谓的c0。所以你的程序没有问题啊。

4. 利用C51自带的库函数_crol_,以间隔500ms实现10个LED灯亮灭循环的C语言程序

先发一个8 个灯的。
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num;
void delay(uint);
void main()
{

temp=0xfe;
while(1)
{
for(num=0;num<8;num++)
{
P1=temp;
delay(100);
temp=_crol_(temp,1);
P1=0xff;
delay(100);
}

}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

/****************************************************************************
再发一个10个灯的,不过函数是IROL
*******************************************************************************/
_crol_不好实现,我用_irol_实现的。
//P2低两位,P1全部8位分别接LED,共十只LED
#include <reg51.h>
#include <intrins.h>

void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

main()
{
unsigned int j;
unsigned char i;
while(1)
{
j=0xfffe;
for(i=0;i<10;i++)
{
P2=j/256;
P1=j%256;
delay(500);
j=_irol_(j,1); //整数循环左移
}
}
}

5. 菜鸟提问单片机_crol_函数

不对吧,你说的P1=0xfe,二进制应该是1111 1110,第一个灯亮,高四位是1111,低四位是1110,左移一位,变为1111 1101第二个亮!那个十六进制f转换位二进制是1111 e对应的是1110

6. 51单片机 C语言 _crol_编程问题

51单片机的端口是准双向口,每本书上都会这么说,但初学者都很难搞懂这一点。

51端口是弱上拉结构,要读取端口的状态,需要先把对应的端口置1,

物理上,P0端口对应两个寄存器,一个是输入寄存器,你说的ins就是端口的输入状态,由外部电路控制,程序没法控制,只能读。一个是输出寄存器,存着你上次写出的数据。

7. 51单片机如何用C程序中的_crol_和_cror_实现流水灯来回显示

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
//主程序
void main()
{
uchar i;
P2=0x01;
while(1)
{
for(i=0;i<7;i++)
{
P2=_crol_(P2,1); //P2 的值向左循环移动
DelayMS(150);
}
for(i=0;i<7;i++)
{
P2=_cror_(P2,1); //P2 的值向右循环移动
DelayMS(150);
}
}
}

8. 单片机问题,求教高手下面一段程序原理,希望能逐句给出解释,非常感谢

#include<reg51.h>//头文件
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void DelayMS(uint ms)//延时函数
{
uchar t;
while(ms--) for(t=0;t<120;t++);
}

void main(void)//主函数
{
uchar i;
P1=0xfe;//将P1口的八个管脚拉电平11111110,即P1.0为低,其他为高,点亮流水灯。
for(i=0;i<8;i++)
{
DelayMS(200);
P1=_crol_(P1,1);//将P1口的赋值循环左移,该语句执行一次,开始时由
11111110变成11111101,再执行一次,变成11111011,以此类推。可以看见流水灯动起来了。
}
P1=0xff;//全部变为高电平
P0=0x7f;//P0口电平拉为01111111
for(i=0;i<8;i++)
{
DelayMS(200);
P0=_cror_(P0,1);//循环右移,和循环左移原理相似
}
// DelayMS(200); //延时
}

有什么不懂得可以问,望采纳!!!!

9. 单片机c语言中_cror_ 这个函数是怎么用的

1、首先要写入单片机的头函数,定义单片机P1口的8个管脚,让他们分别代表流水灯的8个led。

10. 菜鸟提问单片机c语言函数_crol_

这么说吧,举个例子,假如原来b=0xBA;即二进制的(10111010),
p1=_crol_(b,1);其执行过程是这样的,
1,首先把b循环左移,结果是01110101,即b=0x75;
2,把循环后的结果送给P1口,所以,P1口的值是0x75

阅读全文

与单片机crol函数程序代码相关的资料

热点内容
基于单片机的浇花系统设计ppt 浏览:683
卷积码编译码及纠错性能验证实验 浏览:352
请在删除驱动器之前暂停加密什么意思 浏览:785
光催化pdf 浏览:98
java字符串包含某字符 浏览:526
ssm身份认证源码 浏览:466
预排序遍历树算法 浏览:671
加密装置如何打开ping功能 浏览:478
python下载372 浏览:901
u盘子文件夹隐藏 浏览:296
本地误删svn文件夹 浏览:685
海康威视python通道名 浏览:241
如何用app覆盖全部曲库 浏览:602
变异布林源码 浏览:686
表格加密设置打印区域 浏览:437
卡耐基pdf下载 浏览:924
现在最流行的单片机 浏览:89
机顶盒刷机源码 浏览:986
编码pdf下载 浏览:947
隔壁同学app怎么 浏览:301