当前位置: 首页 > article >正文

单片机学习2——流水灯的实现

 

#include<reg52.h>
 
sbit LED = P1^0;
unsigned char i;

void main()
{
	while(1)
	{
	 	LED = 0;
		for(i=0;i<100;i++);
		LED = 1;
		for(i=0;i<100;i++);
	}
}

RST是复位按钮,单击一下之后,程序就会跑到最开始的位置运行。

右侧的按钮是RUN按钮,单击下,程序就会全速跑起来。

这两个按钮是最常用的按钮。

学会设置断点。进入到debug模式之后,这段程序主要是查看C程序的运行时间。就是看sec项。

肉眼几乎看不到灯的闪烁,因为时间太短了。

更改程序二:

#include<reg52.h>
 
sbit LED = P1^0;
unsigned int i;

void main()
{
	while(1)
	{
	 	LED = 0;
		for(i=0;i<10000;i++);
		LED = 1;
		for(i=0;i<10000;i++);
	}
}

闪烁的比较快。

更改程序三:

#include<reg52.h>
 
sbit LED = P1^0;
unsigned int i;

void main()
{
	while(1)
	{
	 	LED = 0;
		for(i=0;i<30000;i++);
		LED = 1;
		for(i=0;i<30000;i++);
	}
}

这样,就可以看到放光LED闪烁得比较正常了。

补充:

使用for语句的嵌套,可以讲时间变的更长。

#include<reg52.h>
 
sbit LED = P1^0;
unsigned int i;

void main()
{
	while(1)
	{
	 	LED = 0;
		for(j=0;j<200;j++)
		{
		   for(i=0;i<30000;i++);
		}
		LED = 1;
		for(i=0;i<30000;i++);
	}
}

8个发光二极管,分别对应单片机I/O口的P1.0到P1.7,8个单片机IO口组成一个字节,在编写程序的时候,直接使用P1来操作。

C语言的8位二进制数代表8个I/O口。

P1=0xFE,它是二进制11111110的简短表示形式。

#include<reg52.h>
 
sbit LED = P1^0;
unsigned int i;

void main()
{
	while(1)
	{
	 	P1 = 0xFE;	 //led1 11111110
		for(i=0;i<30000;i++);
		P1 = 0xFD;   //led2 11111101
		for(i=0;i<30000;i++);
		P1 = 0xFB;   //led3 11111011
		for(i=0;i<30000;i++);
		P1 = 0xF7;	 //led4 11110111
		for(i=0;i<30000;i++);
		P1 = 0xEF;	 //led5 11101111
		for(i=0;i<30000;i++);
		P1 = 0xDF;	 //led6 11011111
		for(i=0;i<30000;i++);
		P1 = 0xBF;	 //led7 10111111
		for(i=0;i<30000;i++);
		P1 = 0x7F;	 //led8 01111111
		for(i=0;i<30000;i++);
	}
}

在使用位移的方法,对代码进行处理。

#include<reg52.h>

unsigned int i=0;
unsigned char j=0;

void main()
{
	while(1)
	{
	 	P1=~(1<<j++);
		if(8==j)
		{
			j=0
		}
		for(i=0;i<30000;i++);
	}
}

流水灯反方向流动:

#include<reg52.h>

unsigned int i=0;
unsigned char j=0;

void main()
{
	while(1)
	{
	 	P1=~(0x7F>>j++);
		if(8==j)
		{
			j=0
		}
		for(i=0;i<30000;i++);
	}
}

全部点亮到全部熄灭:

#include<reg52.h>

unsigned int i=0;

void main()
{
		P1=0x00;
		for(i=0;i<30000;i++);
		P1=0xFF;
}


http://www.kler.cn/a/146070.html

相关文章:

  • vue+高德API搭建前端3D交通页面
  • 什么是SSL及SSL的工作流程
  • Zookeeper(16)Zookeeper的状态模型是什么?
  • windows蓝牙驱动开发-蓝牙设备栈
  • Ubuntu 22.04 TLS 忘记root密码,重启修改的解决办法
  • 安全测评主要标准
  • css给盒子写四个角
  • 路由器DHCP分配IP地址规则
  • opencv入门1.1:从视频或摄像头读取图像
  • 什么是单元测试?
  • 最火web大屏可视化编辑器
  • HTML新特性【缩放图像、图像切片、平移、旋转、缩放、变形、裁切路径、时钟、运动的小球】(二)-全面详解(学习总结---从入门到深化)
  • ubuntu20.04安装tensorRT流程梳理
  • CVPR 2023 精选论文学习笔记:Prefix Conditioning Unifies Language and Label Supervision
  • 业务流程图是什么,怎么画?
  • vue3+ts mitt的使用
  • 【海德教育】唐山每年成人高考的考试时间在什么时候?
  • mysql 变量和配置详解
  • MyBatis的解析和运行原理
  • element-ui DatePicker 日期选择器-控制选择精确到时分秒-禁止选择今天之前-或者今天之后日期### 前言
  • 电脑投屏到电视的软件,Mac,Linux,Win均可使用
  • 企业文档文件管理软件推荐:提升管理效率与数据安全性
  • 【腾讯云云上实验室】用向量数据库在金融信用数据库分析中的实战运用
  • 【element优化经验】el-dialog修改title样式
  • SpringCache使用详解
  • Web 自动化神器 TestCafe(三)—用例编写篇