Skip to content

마이컴 제작

간단한 마이컴을 제작하기 위해서 필요한 구성요소들에 대한 설명을 한다.

어셈블리 언어

마이컴을 실제적으로 구동하기 위한 기계어 위의 언어로써, 사람이 알아볼수 있고 프로그램을 작성할수 있은 프로그래밍 언어이다.

ASM을 기본으로 마이컴을 동작하도록 한다.


LOAD 10      ; R0 = 5

LOOP:
LED_ON      ; LED 켜기
DELAY 1000   ; 대기

LED_OFF     ; LED 끄기
DELAY 1000   ; 대기

DEC         ; R0 = R0 - 1

JNZ LOOP    ; R0 != 0이면 LOOP로 이동

JZ END_ON   ; R0 == 0이면 END_ON으로 이동

END_ON:
LED_ON      ; LED 켠 상태 유지
JMP END_ON  ; 무한 반복

CPU 구성

CPU 내부의 구성은 다음과 같다. 주요 CPU블록 기능중 현재 필요한 기능은 아래와 같다.

  • PC
  • ROM
  • Decoder
  • GPIO
  • Delay Counter
  • R0

명령어

프로그램을 구동하기 위한 ASM 프래그램 명령어 SET를 구성한다.

0x1 LOAD n <br>
0x2 INC <br>
0x3 DEC<br>
0x4 JMP addr<br>
0x5 JZ addr<br>
0x6 JNZ addr<br>
0x7 LED_ON<br>
0x8 LED_OFF<br>
0x9 DELAY n<br>

컴파일러

직접 지정한 어셉블리 언어로 작성된 프로그램을 명령어 코드로 변환된 기계어 언어로 변환해주는 프로그램


python asmtohex.py led.asm 

프로그램 다운로드

시리얼을 통해서 기계어 hex 파일로 변환된 프로그램을 다운로드 한다.

python hexsend.py led.hex