8051 신호등 설계 소스 질문입니다.
글쓴이: hyoyeob / 작성시간: 목, 2018/05/17 - 12:53오후
안녕하세요. 8051을 통해 신호등을 만들려고 설계중입니다. 빨간불 이후 노란불, 초록불 순으로 들어오고 인터럽트 키를 통해 스피커음이 발생하며, 각 신호때마다 led창 8x8에 그에 맞는 색을 출력합니다.
빨간불일때 빨간 8x8 led 노란불일때 노란 8x8 led 이런 식으로요.
스피커와 led구현에서 막히는데 책 예제보며 부랴부랴 따라 하는 거라 조금 힘듭니다. 소스좀 봐주시고 수정 부탁드리겠습니다!
아래는 소스입니다.
PPI_A EQU 0C014H
PPI_B EQU 0C015H
PPI_C EQU 0C016H
PPI_CR EQU 0C017H
RED_FONT EQU 30H
GREN_FONT EQU 31H
ORG 2000H
SJMP START
ORG 2003H
SJMP SERVICE
;
;
DISP_LED:
PUSH PSW
MOV PSW,#00001000B ; BANK 1
DSP_LOOP:
MOV A,RED_FONT
MOV DPTR,#PPI_A
MOVX @DPTR,A
MOV A,GREN_FONT
INC DPTR
MOVX @DPTR,A
MOV A,#00
INC DPTR ; 8255 Cport
MOVX @DPTR,A
MOV A,RED_FONT
RL A
MOV RED_FONT,A
MOV A,GREN_FONT
RL A
MOV GREN_FONT,A
MOV A,#0FFH
MOVX @DPTR,A ; LED Off
POP PSW
RET
;
;
;
START: MOV SP,#50H
MOV PSW,#0H
SETB IP.0
SETB EA
SETB IE.0
SETB TCON.0
MOV DPTR,#PPI_CR
MOV A,#80H
MOVX @DPTR,A
DEC DPL ; DPTR <= Cport
MOV A,#0FFH
MOVX @DPTR,A
LOOP: MOV A,#11101110B
MOV P1,A
MOV RED_FONT,#00000001B
MOV GREEN_FONT,#0
ACALL DEL1
MOV A,#11011101B
MOV P1,A
ACALL DEL2
MOV A,#10111011B
MOV P1,A
MOV RED_FONT,#0
MOV GREEN_FONT,#00000001B
ACALL DEL1
SJMP LOOP
SERVICE: MOV A,#000000000B
MOV P1,A
RETI
DEL1: MOV 30H,#8
DEL11: ACALL TIMER
CALL DISP_LED
DJNZ 30H,DEL11
RET
DEL2: MOV 30H,#6
DEL21: ACALL TIMER
DJNZ 30H,DEL21
RET
TIMER: PUSH 0
PUSH B
MOV R0,#90
L1: MOV B,#0
L2: NOP
NOP
NOP
NOP
NOP
DJNZ B,L2
DJNZ R0,L1
POP B
POP 0
RET
END
Forums:


댓글 달기