stcc单片机流水灯程序.docx
- 文档编号:4290949
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:11
- 大小:217.48KB
stcc单片机流水灯程序.docx
《stcc单片机流水灯程序.docx》由会员分享,可在线阅读,更多相关《stcc单片机流水灯程序.docx(11页珍藏版)》请在冰豆网上搜索。
stcc单片机流水灯程序
stcc单片机流水灯程序
部门:
xxx
时间:
xxx
制作人:
xxx
整理范文,仅供参考,可下载自行修改
51单片机流水灯程序
程序一<用C语言编地最基础地程序)
#include
#include
sbitD0=P1^0。
//位定义,把P1口地第一个管脚定义为D0
sbitD1=P1^1。
//位定义,把P1口地第二个管脚定义为D1
sbitD2=P1^2。
//位定义,把P1口地第3个管脚定义为D2
sbitD3=P1^3。
//位定义,把P1口地第4个管脚定义为D3
sbitD4=P1^4。
//位定义,把P1口地第5个管脚定义为D4
sbitD5=P1^5。
//位定义,把P1口地第6个管脚定义为D5
sbitD6=P1^6。
//位定义,把P1口地第7个管脚定义为D6
sbitD7=P1^7。
//位定义,把P1口地第8个管脚定义为D7
voidmain(>
{
while(1>//建立大地死循环.
{
unsignedinti,j。
D0=0,D7=1。
//亮灯1,关灯8
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
//两个FOR组成地延时
D0=1,D1=0。
//亮灯2,关灯1
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
D1=1,D2=0。
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
D2=1,D3=0。
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
D3=1,D4=0。
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
D4=1,D5=0。
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
D5=1,D6=0。
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
D6=1,D7=0。
for(i=50。
i>0。
i-->
for(j=200。
j>0。
j-->。
}
}
程序二<用swichcase语句编地)
#include
sbitd1=P1^0。
//
sbitd2=P1^1。
sbitd3=P1^2。
sbitd4=P1^3。
sbitd5=P1^4。
sbitd6=P1^5。
sbitd7=P1^6。
sbitd8=P1^7。
voidmain(>
{
unsignedinti=1,a,b。
while(1>//大循环
{
for(i=1。
i<15。
i++>
{
for(a=0。
a<80。
a++>//延时.
for(b=0。
b<200。
b++>。
switch(i>
{
case1:
d2=1,d1=0,d8=1。
break。
case2:
d1=1,d2=0。
break。
case3:
d2=1,d3=0。
break。
case4:
d3=1,d4=0。
break。
case5:
d4=1,d5=0。
break。
case6:
d5=1,d6=0。
break。
case7:
d6=1,d7=0。
break。
case8:
d7=1,d8=0。
break。
case9:
d8=1,d7=0。
break。
case10:
d7=1,d6=0。
break。
case11:
d6=1,d5=0。
break。
case12:
d5=1,d4=0。
break。
case13:
d4=1,d3=0。
break。
case14:
d3=1,d2=0。
break。
}
}。
}
}
程序三<最简洁地):
#include
#include
voiddelay(unsignedintz>//建立延时子函数.
{
unsignedinti,j。
for(i=0。
i i++> for(j=0。 j<200。 j++>。 } voidmain(> { unsignedchard。 d=0xfe。 while(1>// { for(。 d>0x7f。 > { P1=d。 delay(100>。 //调用延时子函数延时. d=_crol_(d,1>。 //循环左移. } for(。 d<0xfe。 > { P1=d。 delay(100>。 d=_cror_(d,1>。 //循环右移,让灯倒回去. } } } 数码管流水灯: #include #include voiddelay(unsignedinta> { unsignedintb。 b=a。 while(b>0> b--。 } voidmain(> { unsignedinti,j。 unsignedcodeA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,b5E2RGbCAP 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。 //0x3f: 为0,即数码管亮“0”.p1EanqFDPw P2=0。 //打开数码管地第一个, P0=j。 //对数码管进行赋值 while(1> { i=0。 for(j=0。 j<16。 j++> { P2=i。 P0=A[j]。 delay(50000>。 i++。 } } } 数码管程序二: #include voiddelay(unsignedinta> { unsignedintb。 b=a。 while(b>0> b--。 } voidmain(> { inti,j。 unsignedcodeA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,DXDiTa9E3d 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。 P2=0。 P0=j。 while(1> { j=0。 for(i=0。 i<8。 i++> { P2=i。 P0=A[j]。 delay(50000>。 j++。 } for(i=7。 i>=0。 i--> { P2=i。 P0=A[j]。 delay(50000>。 j++。 } } } 中断程序一 #include #include voiddelay(unsignedinta> { unsignedintb。 b=a。 while(b>0> b--。 } voidmain(> { inti,j。 unsignedcodeA[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,RTCrpUDGiT 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。 EA=1。 //打开总中断 EX0=1。 //打开外部中断0. IT0=0。 //选择其为低电平有效有效.当CPU检测到P3.3引脚上出现有效地中断信号时,中断标志IE1(TCON.3>置1,向CPU申请中断.5PCzVD7HxA P2=0。 P0=j。 P1=0xfe。 while(1> { j=0。 for(i=0。 i<8。 i++> { P2=i。 P0=A[j]。 delay(50000>。 j++。 } for(i=7。 i>=0。 i--> { P2=i。 P0=A[j]。 delay(50000>。 j++。 } } } voidexist(>interrupt0//中断子程序,其中“0”为外部中断地序号 { P1=_crol_(P1,1>。 delay(50000>。 } 定时程序。 include unsignedinti=0,j=0,t。 unsignedcodea[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。 jLBHrnAILg voidmain(> { TMOD=0x01。 //对TMOD赋值,以确定T0和T1地工作方式. TH0=(65536-50000>/256。 TL0=(65536-50000>%256。 //定时/计数器地实质是加1计数器<16位),由高8位和低8位两个寄存器组成.对高8位和低8位赋值.xHAQX74J0X EA=1。 //开总中断 ET0=1。 //则对IE赋值,开放中断 TR0=1。 //使TR0或TR1置位,启动定时/计数器定时. while(1> { if(t==20> { t=0。 if(j==8> j=0。 if(i==16> i=0。 P2=j。 P0=a[i]。 i++。 j++。 } } } voidtime(>interrupt1//定时子程序,其中“1”为定时/计数器序号 { TH0=(65536-50000>/256。 TL0=(65536-50000>%256。 t++。 }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stcc 单片机 流水 程序