程序如下:
#include <reg52h>
sbit led1 = P2^0;
sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3;
sbit led5 = P2^4;
sbit led6 = P2^5;
sbit led7 = P2^6;
sbit led8 = P2^7;
void main()
{
int i,j;
//点亮第一个灯
led1 = 1;
led2 = 0;
led3 = 0;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
//延时1秒
for(i = 0;i < 110; ++i)
{
for(j = 0; j < 1000; ++j)
{
;//什么也不做
}
}
//点亮第二个灯
led1 = 0;
led2 = 1;
led3 = 0;
led4 = 0;
led5 = 0;
led6 = 0;
led7 = 0;
led8 = 0;
//点亮剩余的灯
//省略……
while(1);
}
扩展资料:
流水灯几点说明:
void:因为该延时函数不需要返回值,所以写为void
delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。
(): 不需要传入参数,所以括号中为空
至此我们可以把流水灯程序写为以下形式:
(1)如何用8086/8088组成一个微机原理的最小系统?
(2)怎样用这个系统完成一个简单的流水灯控制。
(要求要有8086/8088程序的下载方法)
因为在总线周期的前半部分,cpu总是送出地址信号和BHE(总线高允许)信号,为了通知地址已经准备好了,可以被所存,cpu会送出高电平允许所存信号ALE。此时地址信号和BHE信号被所存。
由于有了锁存器对地址信号和BHE信号的所存,CPU在总线周期的后半部分,地址和数据都在地址总线和数据总线上,确保了CPU对锁存器和I/O接口的读/写 *** 作。
以上是书上的观点,个人整理了一下,用自己的话来说就是:
因为数据时8位的,地址是16位的,程序首先输出地址时,先输出高8位,然后进行所存,再输出低8位,这样就能完成16位的地址输出了。
希望能够帮到你啊~~~
C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!\x0d\(一)\x0d\#include //51系列单片机定义文件\x0d\#define uchar unsigned char //定义无符号字符\x0d\#define uint unsigned int //定义无符号整数\x0d\void delay(uint); //声明延时函数\x0d\void main()\x0d\{\x0d\ uint i;\x0d\ uchar temp;\x0d\ while(1)\x0d\ {\x0d\ temp=0x01;\x0d\ for(i=0;i>=1;\x0d\ }\x0d\ temp=0xFE;\x0d\ for(i=0;i>=1;\x0d\ }\x0d\ }\x0d\}\x0d\void delay(uint a) //延时函数,毫秒级别\x0d\{\x0d\ uint i;\x0d\ while(--a!=0) //执行空 *** 作循环,其中a为形参,由调用该函数的函数语句提供值\x0d\ {\x0d\ for(i=0;i\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\ sbit p2=P2^0;\x0d\void main()\x0d\{\x0d\ TMOD=0x01;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ ;\x0d\ }\x0d\}\x0d\\x0d\timer0() interrupt 1\x0d\{\x0d\ TH0=0x00;\x0d\ TL0=0x06;\x0d\ p2=!p2;\x0d\}\x0d\\x0d\(三)\x0d\定时流水灯//\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ if(leda==9)leda=0; \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{\x0d\ static uchar t;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==10)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\} \x0d\\x0d\(四)\x0d\变速流水灯//\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\uchar speed=100;\x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ if(leda==9)\x0d\ {\x0d\ leda=0;\x0d\ speed-=10;\x0d\ if(speed==0)speed=100;\x0d\ } \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{\x0d\ static uchar t;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==speed)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\} \x0d\\x0d\(五)\x0d\//每2两圈改变一次亮度\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\uchar speeda=30;\x0d\uint k=0;\x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ uchar speed[10]={5,80,70,60,50,40,30,20,10,5};\x0d\ uint i;\x0d\ uint k;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ if(leda==9)\x0d\ {\x0d\ leda=0;\x0d\ k++;\x0d\ if(k==2){\x0d\ k=0;\x0d\ speeda=speed[i];\x0d\ i++;\x0d\ if(i==9)i=0;\x0d\ }\x0d\ } \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{\x0d\ static uchar t;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==speeda)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\} \x0d\\x0d\(六)\x0d\//在上面基础上调灯的亮度(调占空比)\x0d\#include\x0d\#define uint unsigned int\x0d\#define uchar unsigned char\x0d\#define ulong unsigned long\x0d\bit ldelay=0;\x0d\uchar speeda=30;\x0d\uint k=0;\x0d\uchar scale; \x0d\void main()\x0d\{\x0d\ uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\ uchar leda;\x0d\ uchar speed[10]={5,80,70,60,50,40,30,20,10,5};\x0d\ uint i;\x0d\ uint k;\x0d\ TMOD=0x00;\x0d\ TR0=1;\x0d\ ET0=1;\x0d\ EA=1;\x0d\ while(1)\x0d\ {\x0d\ if(ldelay==1)\x0d\ {\x0d\ ldelay=0;\x0d\ P2=led[leda];\x0d\ leda++;\x0d\ scale++;\x0d\ if(scale==10)scale=0;\x0d\ if(leda==9)\x0d\ {\x0d\ leda=0;\x0d\ k++;\x0d\ if(k==2){\x0d\ k=0;\x0d\ speeda=speed[i];\x0d\ i++;\x0d\ if(i==9)i=0;\x0d\ }\x0d\ } \x0d\ }\x0d\ }\x0d\}\x0d\timer2() interrupt 1\x0d\{ \x0d\ static uchar t;\x0d\ TH0=0x1c;\x0d\ TL0=0xbf;\x0d\ TF0=0;\x0d\ t++;\x0d\ if(t==speeda)\x0d\ {\x0d\ t=0;\x0d\ ldelay=1;\x0d\ }\x0d\ if(scale==10)P2=0;\x0d\ if(scale==0)P2=1;\x0d\}
以上就是关于51单片机流水灯程序全部的内容,包括:51单片机流水灯程序、8086最小系统bhe接在哪、如何用c语言编写流水灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)