회원가입 ID/PW 찾기
AA

아래 소스를 atmega8로 변경좀 해주세요

.include "m8def.inc"로 변경해도 안됩니다. 다른 부분도 변경해야 하나요?

그리고 외부 크리스탈 사용하려면 따로설정해야 하나요?

설정해야 한다면 그것도 일러 주십시요

내부 크리스탈은 1MHz라는데 그래서 외부 16MHz를 달아서 사용하려고 하는데 크리스탈만 달면 되는지...

avr이제 막 입문한 초보입니다.

선배님들 바쁘시지만 부탁좀 드릴게요 꼭 어셈블리어로 하고 싶습니다.

부탁 드리는김에 하나 더 부탁드릴게요~!

아래 소스중 주석이 없는곳에 주석도 부탁드릴게요

염치불구하고 부탁드립니다.


출처:http://cafe.naver.com/allcyber/1025

;==============================================================

.include "4433def.inc"

 

.def    bi         = R16

.def    bj          = R17

.def    GV_bi   = R18

.def    GT_t0    = R19

.equ    C_LEDBit = 1

 

;======================================

.cseg

.ORG    0x000

            RJMP    START

;interrupt vector table.

.ORG    0x006                                       ; Timer/Counter0 인터럽트의 물리 번지를 나타낸다.

        RJMP    TIMER0_OVF            ; Timer/Counter0 인터럽트가 걸렸을 때 분기하는 번지.

 

START:

        ;우선 system 값들을 초기화 한다.

        ldi        bi,low(RAMEND)                       ;램의 마지막 번지를 스텍포인터로 지정

        out       SPL, bi

        sbi       DDRB,C_LEDBit             ;B Port bit 1의 방향을 출력으로 설정한다.

        ;Timer 0 초기화

        ldi       bi,0x05                                    ;타이머 분주비 설정 -> clk*8 => (1/8M)*1024=128us

        out      TCCR0,bi

            ldi       bi,(256-100)                 ;counter value 128us*100=12.8ms

        out      TCNT0,bi

            ldi       bi,0x02                                    ;Timer 0 interrupt를 구동시킨다.

        out      TIMSK,bi

        sei                                            ;모든 인터럽트를 enable 시킨다.

        ;일반변수 초기화

        ldi       GT_t0, 0                                  ;타이머 인터럽트가 걸린 횟수를 세는 변수를 0으로 클리어한다.

MAIN:

        cpi      GT_t0, 20                     ; 타이머 인터럽트가 20번 걸렸는지 검사. 256ms

        brne     MAIN

        ldi       GT_t0, 0                                  ; 타이머 인터럽트 횟수를 처음부터 셀수있도록

            ;실제 점멸 데이터를 만들어 LED port에 출력한다.

        inc       bi

        mov      bj, bi

        ror       bj

        brcc     MJMP_1

        sbi        PORTB,C_LEDBit

        rjmp      MJMP_2

MJMP_1:

        cbi        PORTB,C_LEDBit

MJMP_2:

        rjmp     MAIN                          ;MAIN loop를 돈다.

 

;======================================

TIMER0_OVF:                                        ;타이머 0 인터럽트가 걸리면 이곳으로 분기한다.

        ldi      GV_bi,(256-100)                        ;타이머 값을 리로드한다. 타이머 0는 켑쳐모드가 없다.

        out     TCNT0,GV_bi

        inc     GT_t0                            ; 타이머 인터럽트가 걸린 횟수를 센다.

        Reti                                          ;인터럽트를 빠져나간다.

;======================================

 
댓글 0

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

search
번호 분류 제목 글쓴이 조회 수 날짜
3 머신러닝, AI & 알고리즘 HOT오목 게임 알고리즘3 새로운하늘 3470 2010.03.29
2 머신러닝, AI & 알고리즘 HOT지하철 최단거리 알고리즘은?2 지워나 2870 2008.06.20
1 머신러닝, AI & 알고리즘 HOT순차 프로그램에 대한 간단한 알고리즘과 재귀 알고리즘의 속도 테스트 - by 아크마7 아크마 3083 2007.08.08
  • 현명해 지기는 아주 쉽다. 그저 머릿속에 떠오르는 말 중에 바보같다 생각되는 말을 하지 않으면 된다.
    - 샙 레븐슨
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.