PIC单片机16F877A跑马灯程序,课设用
展开全部
rg 0000h ;开始
ajmp loop
org 0080h ;到0030h处避开00-30的敏感地址
loop:
mov p0,#0ffh ;关闭所有灯
clr p0.0 ;点亮灯p0.0
lcall delay ;延时一段时间?
clr p0.1 ;点亮灯p0.1
lcall delay
clr p0.2 ;点亮灯p0.2
lcall delay
clr p0.3 ;点亮灯p0.3
lcall delay
clr p0.4 ;点亮灯p0.4
lcall delay
clr p0.5 ;点亮灯p0.5
lcall delay
clr p0.6 ;点亮灯p0.6
lcall delay
clr p0.7 ;点亮灯p0.7
lcall delay
AJMP LOOP ;到最开始loop处重新运行
delay: mov r5,#20 ;延时。
d1: mov r6,#40
d2: mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end
ajmp loop
org 0080h ;到0030h处避开00-30的敏感地址
loop:
mov p0,#0ffh ;关闭所有灯
clr p0.0 ;点亮灯p0.0
lcall delay ;延时一段时间?
clr p0.1 ;点亮灯p0.1
lcall delay
clr p0.2 ;点亮灯p0.2
lcall delay
clr p0.3 ;点亮灯p0.3
lcall delay
clr p0.4 ;点亮灯p0.4
lcall delay
clr p0.5 ;点亮灯p0.5
lcall delay
clr p0.6 ;点亮灯p0.6
lcall delay
clr p0.7 ;点亮灯p0.7
lcall delay
AJMP LOOP ;到最开始loop处重新运行
delay: mov r5,#20 ;延时。
d1: mov r6,#40
d2: mov r7,#248
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end
展开全部
你说的是不是流水灯,以下是流水灯的,
#inclide "pic.h"
void dms(unsigned int ms)
{ int j;
for(;ms>0;ms--)
{ for(j=0;j<272;j++)
{;}
}
}
void main()
{ TRISD=0;
PORTD=0X00;
int i;
while(1)
{
for(i=0;i<7;i++)
{ PORTD=0X00;
PORTD<<I;dms(1000);
if(i==7)
{i=0;
PORTD=0x00;
}
}
}
}
#inclide "pic.h"
void dms(unsigned int ms)
{ int j;
for(;ms>0;ms--)
{ for(j=0;j<272;j++)
{;}
}
}
void main()
{ TRISD=0;
PORTD=0X00;
int i;
while(1)
{
for(i=0;i<7;i++)
{ PORTD=0X00;
PORTD<<I;dms(1000);
if(i==7)
{i=0;
PORTD=0x00;
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我有啊,可一做实物,百度名就是q
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询