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