#include <reg51h>
void delay(unsigned int n)
{
while(n--);
}
void main()
{
char i;
//可以编好想要怎么流水的灯位的状态
unsigned char led[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
while(1)
{
for(i=0;i<8;i++)
{
P1=led[i]; //LED接在P1口
delay(10000);
}
for(i=0;i<8;i++)
{
P1=led[8-i];
delay(10000);
}
}
}
如下:
MOV DPTR, #ST1
MOVX A, @DPTR
MOV B, A
INC DPTR
MOVX A, @DPTR
CJNE A,B, QQQ
QQQ:
JNC >
|P1口接8个发光二极管共阳
#include <AT89X51H>
unsigned char i;
unsigned char temp;
unsigned char a,b;
void delay(void)
{
unsigned char m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
void main(void)
{
while(1)
{
temp=0xfe;
P1=temp;
delay();
for(i=1;i<8;i++)
{
a=temp<<i;
b=temp>>(8-i);
P1=a|b;
delay();
}
for(i=1;i<8;i++)
{
a=temp>>i;
b=temp<<(8-i);
P1=a|b;
delay();
}
}
}
扩展资料:
Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。
参考资料来源:百度百科-51单片机
首先你这程序有问题,这四行不属于任何的子程序,编译都出错。
DisplayData[1] = smgduan[temp / 10000];
DisplayData[2] = smgduan[temp % 10000 / 1000];
DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80;
DisplayData[4] = smgduan[temp % 100 / 10];DisplayData[5] = smgduan[temp % 10];
把这四行改正后,编译后仿真运行程序,3个按键是起作用的。你感觉不起作用,是因为那3个按键,就是改变 flag 分别为0,1,2。可是,主程序中根据 flag 值不同,执行的却是同一个动作,都是 moto=1; (稍稍有一点区别,只是你感觉不出来)所以,按什么键都是这个动作,按不按都 一样,当然那就会觉得按键不起作用。那3个按键控制的动作要有区别呀,或者动作区别要大,才能看出来按键起作用啦。最简单,直接的方法是,按住按键不松手,看数码管是不是全灭啦,如果全灭了,说明按键就是起作用的。
sfr
P0M1
=
0X93;
sfr
P0M0
=
0X94;
sfr
P1M1
=
0X91;
sfr
P1M0
=
0X92;
sfr
P2M1
=
0X95;
sfr
P2M0
=
0X96;
这一段是对通用IO的设置寄存器定义为好记的变量名。具体是什么寄存器你就得结合手册查一下,估计是设置IO口方向、内部上来电阻之类的,或者是配置给某些内部器件如PCA计数器、定时器、计数器等。
至于下面的应该是电磁波或者超声测距之类的算法!!
看起来不是很复杂。
你要是抄板子的话就得想办法知道原来用的什么MCU!再找到它的手册!
有兴趣的话可以研究一下!
linfeighaot@sinacom
以上就是关于51单片机程序编写全部的内容,包括:51单片机程序编写、关于51单片机程序、51单片机设计跑马灯的程序用(c语言)编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)