8051 신호등 설계 소스 질문입니다.

hyoyeob의 이미지

안녕하세요. 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 
 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.