51单片机基础实验--花样流水灯
C语言程序2如下:
/* 该实验是流水灯(8个发光二极管循环点亮),功能是8个发光二极管循环以1S间隔点亮*/
#include<reg52.h>//包含reg.52文件
#include<intrins.h>//包含左右循环移位子函数库文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uint z);//声明延时函数
uint a;//定义循环用变量
void main()//main函数
{
???????? a=0xfe;//给a赋初值
???????? while(1)//while循环
???????? {
?????????????????? P1=a;????????????????
?????????????????? delay(1000);//1S延时子程序
?????????????????? a=_crol_(a,1);
???????? }
}
void delay(uint z)//1ms延时子程序,通过z值改变延时
{
???????? uint x,y;
???????? for(x=z;x>0;x--)
?????????????????? for(y=110;y>0;y--);
}
C语言程序3如下:
/* 该实验是流水灯(8个发光二极管循环点亮),功能是流水灯(8个发光二极管循环以1S间隔点亮) */
#include<reg52.h>//包含reg.52文件
#include<intrins.h>//包含左右循环移位子函数库文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uint z);//声明延时函数
uint a;//定义循环用变量
void main()//main函数
{
???????? a=0x7f;//给a赋初值
???????? while(1)//while循环
???????? {
?????????????????? P1=a;????????????????
?????????????????? delay(1000);//1S延时子程序
?????????????????? a=_cror_(a,1);
???????? }
}
void delay(uint z)//1ms延时子程序,通过z值改变延时时间
{
???????? uint x,y;
???????? for(x=z;x>0;x--)
?????????????????? for(y=110;y>0;y--);
}
本实验实现了单片机控制八个发光二极管并使其以1S时间间隔循环点亮,汇编语言中学习了循环左移函数以及DJNZ指令的应用方法。这个DJNZ在以后的编程中会京城用到的,所以大家一定要掌握好。C语言中,我们学习了表格的定义和使用,我们可以把很多数据放进表格,然后调用,是很方便的!另外还学习了IF判断语句,这也是经常用到的!还使用了带参数调用的延时子函数,这样会方便我们的延时!
