【单片机】初次实验:Keil51的使用

发布时间 2023-11-05 19:04:29作者: 萌狼蓝天

哔哩哔哩/CSDN/博客园:萌狼蓝天

延时器

delay(int count){
	int i,j;
	for(i=0;i<count;i++){
		for(j=0;j<1000;j++);
	}
}

瞧一瞧

题目要求:P0口接八个发光二极管,先让后面四个灯亮,再让前面四个灯亮,循坏

# include <REGX51.H>

delay(int count){
	int i,j;
	for(i=0;i<count;i++){
		for(j=0;j<1000;j++);
	}
}
void main(){
	while(1){
		P0 = 0x0f;
		delay(1000);
		P0 = 0xf0;
		delay(1000);
	}
}

完整演示

题目要求:P1口接八个灯,从右往左依次亮

创建项目

image-20231025193141196

image-20231025193210961

image-20231025193222072

image-20231025193238980

image-20231025193258315

编写代码

# include <REGX51.H>
# include <intrins.h>
unsigned char pem;
delay(int count){
	int i,j;
	for(i=0;i<count;i++){
		for(j=0;j<1000;j++);
	}
}
void main()
{   pem = 0x01;
	while(1){		
		P1=pem;
		pem = _crol_(pem,1);
		delay(1000);
	}
}

ctrl + s 保存

编译调试

image-20231025200730738

image-20231025200749864

image-20231025200817744

image-20231025200835128

退出调试模式

再点一次debug

image-20231025200937467

做一做

让灯从右往左依次亮

调试可知,

亮1个灯:0x01

亮2个灯:0x02

亮3个灯:0x07

亮4个灯:0x0F

亮5个灯:0x1F

……

# include <REGX51.H>
# include <intrins.h>
unsigned char pem;
unsigned char sum;
void delay(int count){
	int i,j;
	for(i=0;i<count;i++){
		for(j=0;j<1000;j++);
	}
}
void main()
{   
	pem = 0x01;
	sum = 0x01;
	while(1){		
		P1=sum;//P1初始值是0x01
		pem = _crol_(pem,1);//左移一位。这是负责计算每个位置亮灯时的值(只亮这个位置,其他位置不亮灯的时候的值)
		sum+=pem;//统计值
		delay(1000);//延时
		if (sum == 0xFF) {
				P1 = 0xFF;//手动亮灯
				delay(1000);//延时,让效果显示
				//重置状态
				pem = 0x01;
				sum = 0x01;
		}
	}
}