8051单片机16个显示灯实现顺序点亮和循环点亮!

8051实现16个LED灯顺序点亮和循环点亮帮忙写一下汇编程序

双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+2*255)*195+2*195=100.036ms@12M   

temp:       mov   r6,#255     ;1+2*255   

            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

参考资料:http://blog.liuwentao.net/read.php?131

温馨提示:答案为网友推荐,仅供参考