单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY;跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,#11011111BACALLDELAYMOVP1,#10111111BACALLDELAYMOVP1,#01111111BACALLDELAYAJMPMAINDELAY:MOVR7,#10;延时1s子程序开始DEL1:MOVR6,#200DEL2:MOVR5,#250DJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RETEND
1、流水灯是若干个灯泡依次点亮,视觉上感觉到灯光在流动就叫做流水灯。2、它是由无数个LED灯组成的,而LED就是发光二极管的简称,它有个特性:就是它只允许电流单一方向流过。如果让LED灯亮起来,他需要连接一个高电平和一个低电平,当它遇到低电平时它会亮起来而遇到高电平它就会熄灭。由于他只能单方向流过电流,所以也就会一亮一暗。
r7在赋了42H后就不能在延时程序里再用了。因为在延时程序里用的话,当从延时程序里跳出后,R7的值就不是42H了。
把这三句(DJNZ R7, LOOP; DELAY:MOV R7,#10H; DJNZ R7,DELAY0;)里的r7改成R4 试试。
双IO口流水灯(汇编)
org 0000h
ajmp start
start: mov dptr,#table ;数据表地址送入dptr
mov 30h,#16 ;30单元作为循环计数器
lop: mov a,#0 ;acc清零
movc a,@a+dptr ;查数据表中的值并送入a
mov p2,a ;查表结果(dw的前字节)送入P2口
inc dptr ;数据指针加1
mov a,#0 ;acc清零
movc a,@a+dptr ;查数据表中下个值送入a
mov P0,a ;查表结果(dw的后字节)送入P0口
inc dptr ;数据指针加1
lcall delay100ms ;延时100ms
djnz 30h,lop ;未到16次继续查表取值
ajmp start ;到了则重新循环
delay100ms: mov r5,#195 ;1+(1+2255)195+2195=100036ms@12M
temp: mov r6,#255 ;1+2255
djnz r6,$
djnz r5,temp
ret
table: dw 0xfffe, 0xfffd, 0xfffb, 0xfff7 ;状态表
dw 0xffef, 0xffdf, 0xffbf, 0xff7f
dw 0x7fff, 0xbfff, 0xdfff, 0xefff
dw 0xf7ff, 0xfbff, 0xfdff, 0xfeff
end
以上就是关于流水灯单片机程序代码全部的内容,包括:流水灯单片机程序代码、51单片机的流水灯程序—、8051单片机16个显示灯实现顺序点亮和循环点亮!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)