05_51单片机led流水线的实现

1:step创建一个新的项目并将程序烧录进入51单片机



以下是51单片机流水线代码的具体实现

c 复制代码
#include <REGX52.H>

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main(){
	 while(1){
	      P1 = 0xFE; // 1111 1110
	      Delay500ms();
        P1 = 0xED; // 1111 1101
		    Delay500ms();
		 	  P1 = 0xFB; // 1111 1011
	      Delay500ms();
        P1 = 0xE7; // 1111 0111
		    Delay500ms();
		 	  P1 = 0xEF; // 1110 1111
	      Delay500ms();
        P1 = 0xDF; // 1101 1111
		    Delay500ms();
		    P1 = 0xBF; // 1011 1111
	      Delay500ms();
        P1 = 0x7F; // 0111 1111
		    Delay500ms();
	 }

}

重启单片机即可实现流水灯

流水线代码改进

在单片机C语言中,数据类型用于定义变量的类型和大小,以及变量在内存中的存储方式。常见的数据类型包括:

  1. 整型(Integer):整型数据类型用于表示整数,包括有符号整型和无符号整型。常见的整型数据类型有:
    • char:1字节,有符号或无符号字符型;
    • short:2字节,有符号或无符号短整型;
    • int:通常为2或4字节,有符号或无符号整型;
    • long:通常为4或8字节,有符号或无符号长整型。
  2. 浮点型(Floating Point):浮点型数据类型用于表示带小数的数值。常见的浮点型数据类型有:
    • float:4字节,单精度浮点型;
    • double:通常为8字节,双精度浮点型。
  3. 枚举类型(Enumeration):枚举类型用于定义一组具名的整数常量。每个枚举常量都有一个唯一的整数值,可用于表示一组相关的状态或选项。
  4. 数组类型(Array):数组类型用于存储一系列具有相同类型的元素。可以通过索引访问数组中的单个元素。
  5. 结构体类型(Structure):结构体类型用于定义一组不同类型的数据,将它们组合在一起形成一个自定义的数据类型。
  6. 指针类型(Pointer):指针类型用于存储内存地址,可用于间接访问其他变量或数据。
  7. 枚举类型(Union):联合类型用于在相同的内存位置存储不同类型的数据,但只能同时存储一个成员。

除了以上常见的数据类型,单片机C语言还支持位字段(Bit fields)、空类型(void)等特殊的数据类型。在编程时,选择合适的数据类型可以提高程序的效率和可读性。

流水灯改进后的代码如下所示,是以可变参数的形式传递

c 复制代码
#include <REGX52.H>

void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
  while(xms){
			i = 2;
	    j = 199;
			do
			{
				while (--j);
			} while (--i);
	    xms -= 1;
	}

}

void main(){
	    while(1){
	      P1 = 0xFE; // 1111 1110
	      Delay1ms(500);
        P1 = 0xED; // 1111 1101
		    Delay1ms(500);
		 	  P1 = 0xFB; // 1111 1011
	      Delay1ms(500);
        P1 = 0xE7; // 1111 0111
		    Delay1ms(500);
		 	  P1 = 0xEF; // 1110 1111
	      Delay1ms(500);
        P1 = 0xDF; // 1101 1111
		    Delay1ms(500);
		    P1 = 0xBF; // 1011 1111
	      Delay1ms(500);
        P1 = 0x7F; // 0111 1111
		    Delay1ms(500);
	 }

}

实现效果和04是一样的

相关推荐
fly_sunnn13 小时前
STM32-GPIO
stm32·单片机·嵌入式硬件
宵时待雨17 小时前
STM32基础1:嵌入式历史与生态
stm32·单片机·嵌入式硬件
不会代码的小猴18 小时前
启动文件
stm32·嵌入式硬件
深圳老胡18 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
甜甜的大香瓜18 小时前
【MT32F006】MT32F006之Timer定时
单片机
甜甜的大香瓜18 小时前
【MT32F006】MT32F006之读写内部EEPROM
单片机
2401_8628808218 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件
hahaha601618 小时前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
沐欣工作室_lvyiyi19 小时前
超市智能货架系统设计与实现(论文+源码)
c语言·单片机·课程设计·电子信息工程毕业设计·黑龙江工商学院·广州工商学院·成都工业学院
老孟说禅19 小时前
硬件测试 - 测试用例设计:测试需求分析、测试点提取、测试用例编写方法
单片机·嵌入式硬件·智能硬件