先上电路图(图示的是高电平点亮的跑马灯)
这个是程序截图(keil5):我的建议是是先自己打一遍,边打边试着理解程序的意思。
#include <reg51.h>//引入头部文件
void delayms(unsigned int t)//指定延时函数delayms,指定一个无符号的变量t。
{
unsigned int i,j;//指定无符号变量i,j。
for(i=0; i<t; i++)//指定for循环:初始值为0,当i<t的时候,i每次循环加1。
for(j=0; j<120; j++);//指定for循环:初始值为0,当j<120的时候,j每次循环加1。
}
void main()//指定主函数
{
int n;//指定变量n,但是没有给定初始值
unsigned char a[8] = {
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};/*指定一个无符号字符数据类型引导的8个元素数组,给定八个元素分别为0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80*/
while(2)//无限循环
{
for(n=0; n<8; n++)//指定一个for循环,n初始值为0,n<8的时候,每次循环加1
{
P2 = a[n];//P2端口为a[n]数组对应的元素。
delayms(500);//指定循环延时
}
}
}
下面的是没有注释的代码
#include <reg51.h>
void delayms(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0; j<120; j++);
}
void main()
{
int n;
unsigned char a[8] = {
0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
while(2)
{
for(n=0; n<8; n++)
{
P2 = a[n];
delayms(500);
}
}
}
下一个是另外一种编程思路
#include < reg51.h >//调用头部文件
sbit P10=P1^0;//指定引脚P10等效为P1.0
void delay(unsigned char i );//延时函数声明
void main()
{
unsigned char i,w,a;//指定无符号变量
while(1)
{
w=0xFE;//初始值为0xFE
for(i=0;i<8;i++)//指定for循环i初始值为0,最大值为8,每循环加一
{
if(P10==0)P0=w;//循环内容:如果P10等于0的时候,P0=端口的状态等同于w的示值
//显示字送P0口
delay(250);//延时
w <<=1;//每次循环左移1位
w|=1;//每次左移后的w和1进行一个或运算
}
}
}
void delay(unsigned char i)//定义延时函数,并且定义变量i应用于上述的循环
{
unsigned char j,k;//定义无符号字符变量j,k
for(k=0;k<i;k++)//指定for循环
for(j=0;j<255;j++);//指定for循环
}
文章来源:https://www.toymoban.com/news/detail-513486.html
文章来源地址https://www.toymoban.com/news/detail-513486.html
到了这里,关于单片机(3)跑马灯,按钮控制的跑马灯(2种编程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!