
AT8951单片机,关于一个简单的这流水灯程序,用汇编语言的
AT8951单片机,关于一个简单的这流水灯程序,用汇编语言的。要求是这样的:在P1口接八个灯,运行后让八个灯从左到右依次点亮,然后再从右到左依次点亮,这样循环下去。延时时...
AT8951单片机,关于一个简单的这流水灯程序,用汇编语言的。
要求是这样的:
在P1口接八个灯,运行后让八个灯从左到右依次点亮,然后再从右到左依次点亮,这样循环下去。延时时间一秒左右或是随便都行。 展开
要求是这样的:
在P1口接八个灯,运行后让八个灯从左到右依次点亮,然后再从右到左依次点亮,这样循环下去。延时时间一秒左右或是随便都行。 展开
3个回答
展开全部
延时根据单片机调整.
ORG 00H
MOV P2,#80H
START:MOV A,#0FFH ;赋初值
CLR C
MOV R2,#8
LOOP:RRC A ; 带进位右移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP
MOV R2,#7
LOOP1:RLC A ; 带进位左移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP1
JMP START
DELAY:MOV R3,#20 ; 延时0.2秒
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END
ORG 00H
MOV P2,#80H
START:MOV A,#0FFH ;赋初值
CLR C
MOV R2,#8
LOOP:RRC A ; 带进位右移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP
MOV R2,#7
LOOP1:RLC A ; 带进位左移
MOV P1,A
CALL DELAY
DJNZ R2,LOOP1
JMP START
DELAY:MOV R3,#20 ; 延时0.2秒
D1: MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
END

2021-01-14 广告
可以写对它写程序,让它听从你的安排,你让它实现什么功能它就能实现,比如电子钟、电子琴、打印机、手机、电梯控制,智能家具如:空调、冰箱、洗衣机等,如果这些家电没有它,什么都不能工作。单片机内部很复杂,你研究的越深你就会越爱上它,它可以帮你实现...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
ORG 0030H
MAIN: MOV P1,#01H
ACALL DELAY
MOV P1,#02H
ACALL DELAY
MOV P1,#04H
ACALL DELAY
MOV P1,#08H
ACALL DELAY
MOV P1,#10H
ACALL DELAY
MOV P1,#20H
ACALL DELAY
MOV P1,#40H
ACALL DELAY
MOV P1,#80H
ACALL DELAY
MOV P1,#80H
ACALL DELAY
MOV P1,#40H
ACALL DELAY
MOV P1,#20H
ACALL DELAY
MOV P1,#10H
ACALL DELAY
MOV P1,#08H
ACALL DELAY
MOV P1,#04H
ACALL DELAY
MOV P1,#02H
ACALL DELAY
MOV P1,#01H
ACALL DELAY
AJMP MAIN
DELAY: MOV R0,#250
D1: MOV R1,#250
DJNZ R1,$
DJNZ R0,D1
RET
END
这是当时学51的时候用的流水灯的程序,延时时间是乱定的,如果要精确地延时1s需要根据机器周期计算,修改delay函数中的数值就好了
这个程序时赋值的,最简单易懂也最麻烦的,按照这个你可以试试左移右移指令的程序,会简单的多
希望能有帮助
MAIN: MOV P1,#01H
ACALL DELAY
MOV P1,#02H
ACALL DELAY
MOV P1,#04H
ACALL DELAY
MOV P1,#08H
ACALL DELAY
MOV P1,#10H
ACALL DELAY
MOV P1,#20H
ACALL DELAY
MOV P1,#40H
ACALL DELAY
MOV P1,#80H
ACALL DELAY
MOV P1,#80H
ACALL DELAY
MOV P1,#40H
ACALL DELAY
MOV P1,#20H
ACALL DELAY
MOV P1,#10H
ACALL DELAY
MOV P1,#08H
ACALL DELAY
MOV P1,#04H
ACALL DELAY
MOV P1,#02H
ACALL DELAY
MOV P1,#01H
ACALL DELAY
AJMP MAIN
DELAY: MOV R0,#250
D1: MOV R1,#250
DJNZ R1,$
DJNZ R0,D1
RET
END
这是当时学51的时候用的流水灯的程序,延时时间是乱定的,如果要精确地延时1s需要根据机器周期计算,修改delay函数中的数值就好了
这个程序时赋值的,最简单易懂也最麻烦的,按照这个你可以试试左移右移指令的程序,会简单的多
希望能有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
zhzht_2008 你这不是帮人,是害人。:D
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询