用汇编程序实现3个数码管循环闪亮(显示为8),相当于3个LED流水灯,用89c51怎么写?
网上的这种程序比较多,也不是很难,自己学学可以编的。
下面是1~8数字循环显示
;仿照例7.7
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
;CLR P2.5
;CLR P2.7
MOV A,#03H ;控制字
MOV DPTR,#6100H;8155的命令状态口地址
MOVX @DPTR,A
DISPLY:MOV R0,#8
MOV R3,#0FEH
MOV A,R3 ;字位
LD:MOV DPTR,#6102H;B口地址
MOVX @DPTR,A ;B口
MOV DPTR,#DTAB
MOV A,R0
MOVC A,@A+DPTR ;查表
MOV DPTR,#6101H
MOVX @DPTR,A ;A口
ACALL DELAY ;延时
MOV A,R3
RL A
MOV R3,A ; 下一位
DJNZ R0,LD ;下一位循环
SJMP DISPLY ;显示了一遍循环
RET
DTAB:DB 6FH,7FH,07H,7DH,6DH
DB 66H,4FH,5BH,06H,3FH ;数字9~0
DELAY: MOV R7,#250
DELAY1: MOV R6,#250
DELAY2:MOV R5,#4
DELAY3: DJNZ R5,DELAY3
DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET ;延时大约2u*4*255*255=0.5s
END
还要用一个端口控制跑马灯的,要同步进行的
;仿照例7.7
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV A,#03H ;控制字
MOV DPTR,#6100H
MOVX @DPTR,A
DISPLY:MOV R0,#3
MOV R3,#0FEH
MOV A,R3 ;字位
LD: MOV P1,A ;控制LED灯
MOV DPTR,#6102H
MOVX @DPTR,A ;B口
MOV DPTR,#DTAB
MOV A,#01H
MOVC A,@A+DPTR ;查表
MOV DPTR,#6101H
MOVX @DPTR,A ;A口
ACALL DELAY ;延时
MOV A,R3
RL A
MOV R3,A ; 下一位
DJNZ R0,LD ;下一位循环
SJMP DISPLY ;显示了一遍循环
RET
DTAB:DB 6FH,7FH,07H,7DH,6DH
DB 66H,4FH,5BH,06H,3FH ;数字9~0
DELAY: MOV R7,#250
DELAY1: MOV R6,#250
DELAY2:MOV R5,#4
DELAY3: DJNZ R5,DELAY3
DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET ;延时大约2u*4*255*255=0.5s
END
2023-06-12 广告