회원가입 ID/PW 찾기
AA

안녕하세요. C언어는 익숙해서 로보블럭에서 at89s51 보드를 구매한 후에
Keil에서 컴파일후 hex를 만들어서 ISP-Pgm 이라는 보드올때 제공된 다운로드 툴을 사용해서
다운로드를 해서 LED를 포트 제어를 해봤습니다.

그런데 asm 코드를 추가 해서 해볼려고 하고 있습니다.
asm 코드는 전혀 모르는 상황이라 아래의 샘플 코드를 사용해서
작업을 수행해 봤습니다.
작업은 Keil에서 컴파일후 hex 제작했구요 ISP_Pgm으로 다운로드를 해봤습니다.

여기서 질문입니다.
1. at89s51에서 테스트시에 사용한 아래의 어셈코드가 이상은 없는건지 알고 싶어요.

[샘플 asm코드]
;INPUT FILE NAME:
ORG 8000h
JMP START
;
ORG 8100h
START:
CLR C
MOV A, #11110000B
MOV R4, #8
LOOP:
RLC A
MOV P1, A
MOV R5, #10
CALL DELAY
DJNZ R4, LOOP

DELAY:
MOV R6, #40
DEL: MOV R7, 249
S1: DJNZ R6,DEL
DJNZ R5,DELAY
RET
END

gsi
댓글 2
  • No Profile
    ;INPUT FILE NAME:
    ORG 8000h                        8000번지부터 시작입니다.라는 첫 위치를 알려 줌.
    JMP START                       START라벨이 있는 곳으로 점프합니다.
    ;
    ORG 8100h                 
    START:                                        여기로 점프 한 후에
    CLR C                                          C[캐리]를 0으로 만듭니다.
    MOV A, #11110000B                      A 레지스터에 1111 0000 이라는 데이터를 넣습니다.  
    MOV R4, #8                                 R4에 8이라는 값을 넣습니다.  이 값은 카운터로 쓰입니다.
    LOOP:                                         LOOP: 라벨입니다.
    RLC A                                          A를 왼쪽으로 로테이토[회전] 시킵니다.
    MOV P1, A                                   A값을 P1포트로 전송합니다.
    MOV R5, #10                                R5값에 10을 넣습니다.  딜레이에 쓰이는 DJNZ의 카운터를 위해서
    CALL DELAY                                DELLY 을 콜 합니다. 한마디로 거기로 점프합니다.
                                                       단 RET를 만나면 CALL밑으로 다시 점프합니다.
    DJNZ R4, LOOP                           R4가 0이 될때까지 LOOP로 점프하는 것을 반복합니다.
    -------------------------------------------------------------

    DELAY:                                       이 사이가 시간을 지연시키기 위해서 만든 곳이에요.
    MOV R6, #40                               LED점등이 너무 빠르면 눈으로 확인 못하니까 시간 벌어주기용.
    DEL: MOV R7, 249
    S1: DJNZ R6,DEL
    DJNZ R5,DELAY

    ---------------------------------------------                           

    RET                                                CALL 과 같이 쓰이는 명령으로 CALL밑으로 보내줍니다.
    END                                                END는 끝을 알려주는 명령이에요.




    간단하게 다시 설명을 하면

    DJNZ이란 명령은 FOR와 비슷합니다.

    님이 C언어를 아시니까 FOR문 알잖아요?

    FOR문에 보면 FOR( I=0 ;I< 10; I++)이런 식인데

    저기에서 I<10 의 역할을 해주는 것이 MOV R4, #10 입니다.

    즉 A = 1111 0000 을 넣고
    그것을 왼쪽으로 한칸 이동하면 [RLC A]


    1     1110  0000 이 되겠죠. 이때 앞의 1은 캐리에 담겨 있게 됩니다.
    그리고 다시 한번 RLC A라고 하면
    1     1100  0001 이 됩니다.

    이런 식으로 왼쪽으로 8번을 도는 프로그램입니다.

    저도 초보인지라 설명이 될려나 ㅎㅎ;

  • 카일님께
    No Profile
    글쓴이 gsi 10.04.04 17:37 댓글 좋아요 0 싫어요 0

    답변 고마워요..
    어셈공부도 좀더 해야 겠네요 ^^
    처음 하드웨어를 접하다 보니 주소번지나 레지스트 같은게 참 익숙하지 않군요.
    위의 코드가 왜 안되나 봤더니 8000H라는 시작 번지가 800H로 수정을 하니 되는군요.
    C의 코드 어셈코드를 참조하니 답이 나왔어요 ^^

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
512 마이크로프로세서 HOT8051 기판없이 시뮬레이션 가능한 프로그램 있을까요?5 팁티바 1396 2010.04.10
511 마이크로프로세서 HOTir리모콘 컴파일러 질문드립니다. 야래 1146 2010.04.09
510 마이크로프로세서 HOTAVR 교재좀 부탁드려요8 빛의속도 1867 2010.04.09
509 펌웨어 & 코딩언어 HOTc언어 배우려는 초보입니다.9 빛의속도 1027 2010.04.09
508 마이크로프로세서 HOT센서를 제어할 수 있는 회로도를 어디서 구할 수 있나요?3 우기우기 1266 2010.04.07
507 마이크로프로세서 HOTir리모콘 컴파일러 질문드립니다. 야래 933 2010.04.07
506 마이크로프로세서 HOTATmega48을 이용해서 모터를 제어하는데..1 바람2 945 2010.04.07
505 마이크로프로세서 HOTspi 속도문의 눈티 1646 2010.04.07
504 마이크로프로세서 HOTATMEGA128을 이용한 BUCK-BOOST 컨버터 제어 질문입니다.(AD TO PWM DUTY) 전기사랑 2714 2010.04.07
503 마이크로프로세서 HOT모터제어 (고슈님들 도와주세요)4 꼬막소녀 1239 2010.04.06
502 마이크로프로세서 HOT두더지소스 만들기3 한자 1595 2010.04.06
501 마이크로프로세서 HOT통신케이블관련질문요..2 암소 720 2010.04.06
500 마이크로프로세서 HOTAtmega로 무선으로 데이터 송수신을 공부하고자하는데요.. 권용찬 1535 2010.04.04
499 마이크로프로세서 HOT8051 set 1bit제어 하려고 합니다.4 개똥껄레 1141 2010.04.04
498 마이크로프로세서 HOT초보입니다.1 키키오오 1292 2010.04.04
497 마이크로프로세서 HOT전원부회로3 키키오오 1463 2010.04.04
마이크로프로세서 HOTat89s51 메인보드(개발용)에 asm 다운로드후 동작이 안되요.2 gsi 1437 2010.04.03
495 마이크로프로세서 HOTAVR128 or ARM7,9으로 TFT- LCD제어할려고하는데 궁금한게 있습니다.2 marin_blues 1754 2010.04.03
494 마이크로프로세서 HOTavr보드 직접 만들어야 할까요?4 암소 1141 2010.04.01
493 마이크로프로세서 HOT8051 에 마이크로 C/os 포팅하려는데요1 나는타조 1214 2010.04.01
Prev 1 ... 28 29 30 31 32 33 34 35 36 37 ... 58 Next
  • 숫자야말로 모든것의 원리이다.
    - 피타고라스
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.