목차
1. 실험 목적
2. 실험 도구
⑴ JST-MEGA128-DEV5 키트
⑵ 기기와 호환 되는 PC
3. 실험 과정
4. 실험 소스 코드 분석
⑴ Exp01.1.asm [LED를 점등하는 예제]
⑵ Exp01.1a.asm [LED를 점등하는 예제]
⑶ Exp01.2.asm [텍스트형 LCD 모듈에 메시지를 출력하는 예제]
⑷ Exp01.2a.asm [텍스트형 LCD 모듈에 메시지를 출력하는 예제]
5. 실험 예상
⑴ Exp01.1.asm
⑵ Exp01.1a.asm
⑶ Exp01.2.asm
⑷ Exp01.2a.asm
2. 실험 도구
⑴ JST-MEGA128-DEV5 키트
⑵ 기기와 호환 되는 PC
3. 실험 과정
4. 실험 소스 코드 분석
⑴ Exp01.1.asm [LED를 점등하는 예제]
⑵ Exp01.1a.asm [LED를 점등하는 예제]
⑶ Exp01.2.asm [텍스트형 LCD 모듈에 메시지를 출력하는 예제]
⑷ Exp01.2a.asm [텍스트형 LCD 모듈에 메시지를 출력하는 예제]
5. 실험 예상
⑴ Exp01.1.asm
⑵ Exp01.1a.asm
⑶ Exp01.2.asm
⑷ Exp01.2a.asm
본문내용
a.asm : Basic Assembly Program (2) []
;[] []
;[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
;
;Designed and programmed by Duck-Yong Yoon in 2005.
;
;------------------------------------------------
;Include Header File
;------------------------------------------------
.include "MEGA128.INC"; include ATmega128 definition file
.include "OK128DEF.INC"; include OK-128 I/O definition file
// "OK128DEF.INC" 헤더 파일을 추가
;====================================================================
;Main Program
;====================================================================
.cseg
.org0x0000
LDIAH,high(RAMEND); initialize SP
LDIAL,low(RAMEND)
OUTSPH,AH
OUTSPL,AL
CALLINIT_OK128; initialize ATmega128 CPU & OK-128 kit
CALLD50MS; wait for system stabilization
CALLINIT_LCD; initialize text LCD
;------------------------------------------------
;Display LCD
;------------------------------------------------
CALLLCD_HOME1; display logo
CALLLCD_STRING
.db" OK-128 V2.2 ",0,0
LOOP:CALLLCD_HOME2; display message 1
CALLLCD_STRING
.db" ATmega128-16AI ",0,0
CALLD1SEC
CALLLCD_HOME2; display message 2
CALLLCD_STRING
.db" 2005/03/01 ",0,0
CALLD1SEC
JMPLOOP
;====================================================================
;Include User Subroutine File
;====================================================================
.include "OK128SUB.INC"; include OK-128 subroutine file
//서브루틴 파일을 추가 하여 1.2a와는 다르게 간략화가 되었다.
이 예제 파일은 1.2와 디스플레이 정보는 같지만 그 외의 부분들은 OK128DEF.INC 파일로 정의하여 놓고 사용자 프로그램에서 이를 인클루드 하였다.
또 하나의 추가 부분은 서브루틴들이다. LCD 모듈을 동작시키려면 먼저 이 LCD 모듈을 초기화하는 과정이 필요하며, 여기에 명령이나 데이터를 출력하는 루틴 또는 문자열을 출력하는 루틴들은 상당히 복잡하므로 서브루틴으로 만들어 두고 사용하는 것이 일반적이다.
그 밖에도 LCD 모듈의 구동에는 몇 가지의 시간지연 루틴들이 필요하다. 그리하여 기본 서브루틴들을 인클루드 파일 OK128SUB.INC 파일을 만들어 놓으면 편리하게 생략할 수가 있다.
5. 실험 예상
⑴ Exp01.1.asm
;------------------------------------------------
;Blink LED1/3 and LED2/4
;------------------------------------------------
LDIR16,0xFF; initialize PORTB = output
OUTDDRB,R16
LOOP:LDIR16,0b01010000; LED1,3 on
OUTPORTB,R16
CALLD500MS
LDIR16,0b10100000; LED2,4 on
OUTPORTB,R16
CALLD500MS
JMPLOOP
의 명령어를 보아 LED 1, 3 과 LED 2, 4 이 0.5초 간격으로 on/off를 하며 깜빡일 것이다.
⑵ Exp01.1a.asm
“Blink LED1/3 and LED2/4“의 소스 내용이 동일하므로 위와 마찬가지로 작동할 것이다.
물론 동작 시간 또한 동일하게 나타날 것이다.
⑶ Exp01.2.asm
;------------------------------------------------
;Display LCD
;------------------------------------------------
CALLLCD_HOME1; display logo
CALLLCD_STRING
.db" OK-128 V2.2 ",0,0
LOOP:CALLLCD_HOME2; display message 1
CALLLCD_STRING
.db" ATmega128-16AI ",0,0
CALLD1SEC
CALLLCD_HOME2; display message 2
CALLLCD_STRING
.db" 2005/03/01 ",0,0
CALLD1SEC
JMPLOOP
메인 소스를 보면 text 디스플레이 첫 줄에 .db 뒤에 있는 string을 디스플레이 하고 2째 줄에는 1초 동안 ATmega128-16AI를 표시한다. 그리고 나서 또다시 1초 동안 2005/03/01을 표시하는 것을 반복할 것이다.
⑷ Exp01.2a.asm
이 소스코드 또한 Display LCD 의 명령어가 동일함으로서 위의 예제 파일과 동일하게 작동할 것이다.
이로서 01.*a.asm 파일은 OK128DEF.inc와 OK128SUB.inc 헤더 파일을 추가하여 명령어를 간단하게 나타내되 작동은 동일하게 나타냄을 알 수가 있을 것이다.
5. 설계도
exp1.1에서 사용하는 LED 부분은 ATmega128에서 사용된다.
1.2 에서 사용하는 텍스트 LCD 의 설계도.
;[] []
;[][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][]
;
;Designed and programmed by Duck-Yong Yoon in 2005.
;
;------------------------------------------------
;Include Header File
;------------------------------------------------
.include "MEGA128.INC"; include ATmega128 definition file
.include "OK128DEF.INC"; include OK-128 I/O definition file
// "OK128DEF.INC" 헤더 파일을 추가
;====================================================================
;Main Program
;====================================================================
.cseg
.org0x0000
LDIAH,high(RAMEND); initialize SP
LDIAL,low(RAMEND)
OUTSPH,AH
OUTSPL,AL
CALLINIT_OK128; initialize ATmega128 CPU & OK-128 kit
CALLD50MS; wait for system stabilization
CALLINIT_LCD; initialize text LCD
;------------------------------------------------
;Display LCD
;------------------------------------------------
CALLLCD_HOME1; display logo
CALLLCD_STRING
.db" OK-128 V2.2 ",0,0
LOOP:CALLLCD_HOME2; display message 1
CALLLCD_STRING
.db" ATmega128-16AI ",0,0
CALLD1SEC
CALLLCD_HOME2; display message 2
CALLLCD_STRING
.db" 2005/03/01 ",0,0
CALLD1SEC
JMPLOOP
;====================================================================
;Include User Subroutine File
;====================================================================
.include "OK128SUB.INC"; include OK-128 subroutine file
//서브루틴 파일을 추가 하여 1.2a와는 다르게 간략화가 되었다.
이 예제 파일은 1.2와 디스플레이 정보는 같지만 그 외의 부분들은 OK128DEF.INC 파일로 정의하여 놓고 사용자 프로그램에서 이를 인클루드 하였다.
또 하나의 추가 부분은 서브루틴들이다. LCD 모듈을 동작시키려면 먼저 이 LCD 모듈을 초기화하는 과정이 필요하며, 여기에 명령이나 데이터를 출력하는 루틴 또는 문자열을 출력하는 루틴들은 상당히 복잡하므로 서브루틴으로 만들어 두고 사용하는 것이 일반적이다.
그 밖에도 LCD 모듈의 구동에는 몇 가지의 시간지연 루틴들이 필요하다. 그리하여 기본 서브루틴들을 인클루드 파일 OK128SUB.INC 파일을 만들어 놓으면 편리하게 생략할 수가 있다.
5. 실험 예상
⑴ Exp01.1.asm
;------------------------------------------------
;Blink LED1/3 and LED2/4
;------------------------------------------------
LDIR16,0xFF; initialize PORTB = output
OUTDDRB,R16
LOOP:LDIR16,0b01010000; LED1,3 on
OUTPORTB,R16
CALLD500MS
LDIR16,0b10100000; LED2,4 on
OUTPORTB,R16
CALLD500MS
JMPLOOP
의 명령어를 보아 LED 1, 3 과 LED 2, 4 이 0.5초 간격으로 on/off를 하며 깜빡일 것이다.
⑵ Exp01.1a.asm
“Blink LED1/3 and LED2/4“의 소스 내용이 동일하므로 위와 마찬가지로 작동할 것이다.
물론 동작 시간 또한 동일하게 나타날 것이다.
⑶ Exp01.2.asm
;------------------------------------------------
;Display LCD
;------------------------------------------------
CALLLCD_HOME1; display logo
CALLLCD_STRING
.db" OK-128 V2.2 ",0,0
LOOP:CALLLCD_HOME2; display message 1
CALLLCD_STRING
.db" ATmega128-16AI ",0,0
CALLD1SEC
CALLLCD_HOME2; display message 2
CALLLCD_STRING
.db" 2005/03/01 ",0,0
CALLD1SEC
JMPLOOP
메인 소스를 보면 text 디스플레이 첫 줄에 .db 뒤에 있는 string을 디스플레이 하고 2째 줄에는 1초 동안 ATmega128-16AI를 표시한다. 그리고 나서 또다시 1초 동안 2005/03/01을 표시하는 것을 반복할 것이다.
⑷ Exp01.2a.asm
이 소스코드 또한 Display LCD 의 명령어가 동일함으로서 위의 예제 파일과 동일하게 작동할 것이다.
이로서 01.*a.asm 파일은 OK128DEF.inc와 OK128SUB.inc 헤더 파일을 추가하여 명령어를 간단하게 나타내되 작동은 동일하게 나타냄을 알 수가 있을 것이다.
5. 설계도
exp1.1에서 사용하는 LED 부분은 ATmega128에서 사용된다.
1.2 에서 사용하는 텍스트 LCD 의 설계도.
키워드
추천자료
컴퓨터의 내부장치와 구조
컴퓨터를 통한 수학 학습과 수학적 오류의 진단·처방 문장제 학습에의 적용
컴퓨터 활용능력 요약
빌게이츠 기업가 사례보고서
병렬처리 컴퓨터
제 2.3.4세대 컴퓨터
컴퓨터의 이해 문제풀이 레포트
20세기에 영향을 끼친 인물 - 빌게이츠
MS사의 독점 (마이크로 소프트)
[레지스트리의 의미][레지스트리의 구조][레지스트리의 백업][레지스트리의 복구][레지스트리...
컴퓨터 공학과의 진보적 입장
전공 컴퓨터와 기초 - 7~80만우너 조립컴퓨터 구성, 인터넷 사기
[Bill-Gates부터Steven-Ballmer까지]Microsoft의 성장과 Leadership의 변화
마이크로소프트 (MS : Microsoft) - 마이크로소프트 기업분석, 마이크로-소프트 창업, MS 운...