MCS51流水灯
硬件连接:
程序1:
ORG 10
START:
MOV P0,#0FFH
CLR P0.0
LCALL Dealy
SETB P0.0
LCALL Dealy
CLR P0.1
LCALL Dealy
SETB P0.1
LCALL Dealy
CLR P0.2
LCALL Dealy
SETB P0.2
LCALL Dealy
CLR P0.3
LCALL Dealy
SETB P0.3
LCALL Dealy
CLR P0.4
LCALL Dealy
SETB P0.4
LCALL Dealy
CLR P0.5
LCALL Dealy
SETB P0.5
LCALL Dealy
CLR P0.6
LCALL Dealy
SETB P0.6
LCALL Dealy
CLR P0.7
LCALL Dealy
SETB P0.7
LCALL Dealy
AJMP START
Dealy:
MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
END
程序2:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV R0,#0FFH ;-1→R0
MOV R2,#16 ;共16个数据
MOV DPTR,#TAB ;将数据表起始数据放入数据指针DPTR中
LOOP:
INC R0 ;R0+1
MOV A,R0
MOVC A,@A+DPTR ;以累加器A作为数据表中的数组下标,将数据表中数据提取出来,并存入累加器A
SHOW:
MOV P0,A
LCALL DELAY
LCALL DELAY
LCALL DELAY
DJNZ R2,LOOP
AJMP MAIN
DELAY: ;延时子程序
MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1
RET
TAB:
;DB 0FEH,0FCH,0F8H,0F0H,0E0H,0CH,80H,00H,01H,03H,07H,0FH,1FH,3FH,7FH,0FFH
DB 11111110B
DB 11111100B
DB 11111000B
DB 11110000B
DB 11100000B
DB 11000000B
DB 10000000B
DB 00000000B
DB 00000001B
DB 00000011B
DB 00000111B
DB 00001111B
DB 00011111B
DB 00111111B
DB 01111111B
DB 11111111B
END
仿真效果: