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:
댓글 달기