谁能帮我解读Keil uVision4程序,编的是 51单片机流水灯程序

delay.h

#include<reg51.h>

void delay_ms(unsigned int factor) //延时n*1ms

{

unsigned int i,j;

for(i=factor;i>0;i--)

for(j=111;j>0;j--); //";"相当于空语句,此处循环执行空语句

}

main.c

#include<delay.h> //包含自己定义的头文件

unsigned char table[30]={0xfe,0xfb,0xef,0xbf,0x3f,0x9f,0xcf,0xe7,0xf3,0xf9,0xfc,0xf8,0x1f,0xf8,

0x1f,0xaa,0x55,0xaa,0x55,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0xff

}; //将欲显示的数据存入数组,用查表的方式实现流水灯

void main()

{

unsigned char i; //声明变量i

for(;;) //反复执行下面的语句

{

for(i=0;i<30;i++)

{

P2=table[i]; //将欲显示的数据送入端口寄存器P2

delay_ms(500); //延时500ms

}

}

}

第1个回答  2010-11-25
呵,看下FOR循环实现功能,就知道大概了。TAB[]数组就是对应P2口的流水灯,如第一个0XFE 即为11111110 对应P2。0口亮,其他口高电平灭。
第2个回答  2010-11-11
是啊 你这上面都有注释 ,该解释的都解释了,还问什么了?
这些如果看不懂的话,你需要好好看看C语言里面循环和数组那两章了
第3个回答  2010-11-23
根据版本的不同而不同
个人版在6000RMB
专业版和企业版比较贵。
具体可以询问这个网址最下面的电话。本回答被提问者和网友采纳
第4个回答  2010-11-11
有什么问题吗?不都有注释的吗

Keil uVision4实例 51单片机控制流水灯效果
Keil uVision4实例 51单片机控制流水灯效果,设计内容:宏定义、自定义函数、位移函数,循环。创建项目:51单片机控制流水灯效果。添加包含51头文件。包含移位标准库函数头文件。使用预处理指令,完成宏定义:用“uchar”替换unsigned char #define uchar unsigned char 设置灯的相关变量: unsigned char LED;...

按键点灯程序,按一下按键灯亮(一直亮),再按一下灭,51单片机。
1、首先打开编程软件Keil uVision4,新建一个工程文件,在菜单栏中Project—— New uVision Project..。2、然后选择单片机型号是 Atmel 公司的 AT89c52,单击OK。3、再单击工具栏上新建按钮,新建一个文档,然后再点击保存,输入保存的路径,输入名字。4、右键单击将这个文件添加到到工程文件夹中。5、打...

谁帮我看下51单片机流水灯怎么不能正常流水闪亮
你程序最后的运行结果是不是所有LED都亮了,如果是这样的话,就是可能你P0口没有加上拉电阻,单片机P0不加上拉电阻的话,是输出不了高电平的。还有,楼主以后问程序问题的同时,最好也把硬件电路图给出,这样大家也才好回答。。。希望可以帮到你。。。

keil软件中有段这样的程序大家帮忙看下!!!
temp 过渡作用。。用来存储P1口的高低电平状态 0xfe=1111 1110 你的P1口是led的话就是 1111 1110 让最后一个LED灯亮 下边那句是是一个左移函数,你的这个程序实现的是左移流水灯效果 (temp,1)控制一次左移一个LED灯

单片机流水灯程序
include <reg51.h> include<intrins.h> define uchar unsigned char uchar j,temp;void delay(unsigned int ms){ uchar t;while(ms--)for(t=0;t<123;t++);} void main(){ P1=0xff;delay(500);temp=0xfe; \/\/有点怪,led接在P2.3~P2.6 for(j=0;j<4;j++){ P1=temp;delay(...

单片机左右来回流水灯程序,两个两个的灯亮?能用keil生成.hex文件。_百...
LOOP:MOV P0,A CALL DELAY RR A JMP LOOP DELAY: ;延时程序 MOV R3,#20 D1:MOV R4,#20 D2:R5,#248 DJNZ R5,DJNZ R4,D2 DJNZ R2,D1 RET 这只是2个灯右移程序,如果达到你想要的效果还有计数8次然后进入计数左移动8次,懂基本原理什么都好办哎!纠结!!!

51单片机编程:先循环一遍流水灯,然后熄灭后蜂鸣器响三下停止?_百度知 ...
A:while(1){;}\/\/跑完一遍程序后执行死循环 B:led1=1;Delay1000ms();led1=0;led2=1;Delay1000ms();led2=0;led3=1;Delay1000ms();led3=0;\/\/流水灯 ring=1;Delay1000ms();ring=0;ring=1;Delay1000ms();ring=0;ring=1;Delay1000ms();ring=0;\/\/蜂鸣 goto A;\/\/跳转...

KeiluVision4开发工具V412破解免费版KeiluVision4开发工具V412破解免...
Keil uVision4破解版是由英蓓特公司推出的一款程序开发工具,该款工具的功能就是把高级语言翻译成单片机能识别的语言,并且在新版本中,引入了灵活的窗口管理系统,使开发人员能够使用多台监视器,提供了一个整洁、高效的环境来开发应用程序。keil uvision相关推荐keil uvision5注册机Keil uVision2破解补丁...

我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了...
if(a==8) \/\/---执行完for之后,a肯定等于8,所以执行下面的,结果就是第一个灯亮 P1=0xfe;3 我给你改正的,程序:功能是先是第一个灯亮,再是第一个灯灭,亮2,然后2灭,亮3...void time1() interrupt 3 { tt++;if(tt==10){ tt = 0; \/\/---这句表示中断10次换一个灯,不可少 ...

单片机 8个LED灯随机闪烁怎么做?
1、首先在电脑中新建项目:Keil uVision4 51单片机LED闪烁编程,如下图所示。2、然后设计单片机端口与LED灯相连,如下图所示,输入代码。3、接着创建延迟函数,如下图所示,输入以下代码。4、然后创建C语言主函数,如下图所示,输入以下代码。5、接着输入对输出取反,最后调用延迟函数,如下图所示就...

相似回答