회원가입 ID/PW 찾기
AA

램프 켜는것부터 배우는데 코드 봐도 잘 모르겠어요

설명좀 부탁드려요ㅠ

 

 

#include <avr/io.h>   

void Delay_us(unsigned char time_us)   

{ register unsigned char i;

for(i = 0; i < time_us; I++) 

{asm volatile(" PUSH RO "); 

asm volatile(" POP RO "); 

asm volatile(" PUSH RO "); 

asm volatile(" POP RO "); 

asm volatile(" PUSH RO "); 

asm volatile(" POP RO "); 

}

}

void Delay_ms(unsigned int time_us)           

{ register unsigned int i;          

for (i = 0; i < time_ms; I++)

{ Delay_us (250);                   

Delay_us (250);                    

Delay_us (250);

Delay_us (250);

}

}

 

int mian(void)

{

int iDelay=250;

char b = 0;

DDRA = 0x00;

DDRB = 0xFF;

PORTA=0xFF; 

 

while(1)       

{

b = PINA;

b&=0x0F;

PORTB=b;

Delay_ms(iDelay);

}

}

댓글 1
  • No Profile
    #include <avr/io.h>   

    //Delay 1usec루틴입니다. 이 코드는 시스템클럭이 16MHz인 경우에 해당합니다.
    //PUSH POP은 각각 2사이클이 소요되고, 모두 12사이클이 소요됩니다.
    //나머지는 이 함수를 Call(프로그램카운터를 스택에 저장)하고 Return(스택에서 PUSH된 PC를 가져옮)하고 for 루프를 소요하는데 소요됩니다.
    //계산상으로는 모두 16사이클이 수행되어야지 1usec Delay가 만들어집니다. 아주 정확한 타이밍을 요하지 않으면 시간지연함수를
    //써도 무방하나, 정확한 타이밍을 요할 경우는 Timer Interrupt를 사용해야합니다.

    void Delay_us(unsigned char time_us)   
    { register unsigned char i;
    for(i = 0; i < time_us; I++) 
    {asm volatile(" PUSH RO "); //2 cycle 
    asm volatile(" POP RO ");  //2 cycle
    asm volatile(" PUSH RO ");  //2 cycle
    asm volatile(" POP RO ");  //2 cycle
    asm volatile(" PUSH RO ");  //2 cycle
    asm volatile(" POP RO ");  //2 cycle
    }
    }

    // 위의함수를 다시 호출한 1msec단위의 Delay함수 
    void Delay_ms(unsigned int time_us)           
    { register unsigned int i;          
    for (i = 0; i < time_ms; I++)
    { Delay_us (250);                   
    Delay_us (250);                    
    Delay_us (250);
    Delay_us (250);
    }
    }
     
    int mian(void)
    {
    int iDelay=250;
    char b = 0;
    DDRA = 0x00; //PORT A 를 전부 입력 포트로 설정
    DDRB = 0xFF; //PORT B 를 전부 출력 포트로 설정

    // SFIOR레지스터내 PUD비트가 Clear되어 있고
    // PORT A가 입력으로 설정되어 있을때 PORTA에 1을 쓰면 내장 풀업저항을 ON시킴
    // 이 프로그램 내에서 SFIOR을 별도로 세팅하지 않았으므로 SFIOR의 전 비트는 0으로 default되어있음
    // 풀업저항을 사용한다는 의미는 입력 포트에 아무것도 연결하지않아도 입력은 1(high)인 상태로 읽혀집니다.
    // 만약 풀업저항을 설정하지 않을 경우는 필히 외부에서 High또는 Low신호를 인가해야합니다.
    // 그 이유는 해당포트가 Open된 상태로 방치하면 Unknown값이되며 때에 따라서는 Middle레벨로 신호가 인가되어
    // Input Port의 N-MOS와 P-MOS가 동시에 ON되는 경우가 발생할 수도 있기 때문입니다. 이때 MCU내부적으로
    // Vcc와 GND사이에 N-MOS와 PMOS의 Drain과 Source사이에 도통하는 경로가 생겨 전류가 급격히 많이 흐르는 현상이
    // 발생되어 소비전력이증가하거나, 심할 경우 해당 포트가 파괴되는 경우가 있습니다. 그래서 포트를 입력으로
    // 설정할 경우는 각별한 주의가요구됩니다.(필히 입력포트는 내부풀업을 설정하거나, High 또는 Low신호를 인가하여야만 됩니다. 절대로 Open된 상태로 방치하지 마십시요)
    PORTA=0xFF; 
     
    while(1)    //무한루프   
    {
    b = PINA; //PORTA 읽은값을  변수 b에 저장
    b&=0x0F; //위에서 읽은 b 값의 상위 니블을 0으로 마스크하고 하위니블값만 변수 b에 다시 저장
    PORTB=b;    // 위에서 계산된 하위니블 4bit를 PORTB로 출력
    Delay_ms(iDelay); // 250msec delay
    }
    }

    //위프로그램은 회로도가 없어서 모르겠지만 아마도 PORTA에 연결된 스위치를 절환하면 PORTB에 연결된
    //LED를 PORTA의 입력상태에 맞게 점등하는 프로그램으로 추정됩니다.

    그럼 도움이 되길 바랍니다.

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

search
번호 분류 제목 글쓴이 조회 수 날짜
992 마이크로프로세서 HOT컴퓨터 특수문자는 어떻게 읽나요?14 아크마 4182 2012.01.29
991 마이크로프로세서 마이크로 마우스를 만들려고 하는데요1 후드티 351 2012.01.25
990 마이크로프로세서 HOTlcd시계 커는 소스입니다.. 해석좀 부탁 드려요 ~1 멜쉬 464 2012.01.17
989 마이크로프로세서 완전 초보에 문의 내용입니다.1 마목 303 2012.01.07
988 마이크로프로세서 HOTAVR과 ARM이 다른건 알지만..1 엘케인 548 2012.01.06
987 마이크로프로세서 HOTstm32 질문 김성진 1403 2011.12.27
986 마이크로프로세서 질문 있어요!2 띵띵꽁꽁 346 2011.12.18
985 마이크로프로세서 HOT프로테우스 7 새로운 부품(심볼)만드는 방법에 대한 질문입니다. 본능적으로 1506 2011.12.15
984 펌웨어 & 코딩언어 HOT-(C언어(함수호출)로 만든 크리스*마스*트리*프로그램)-1 리종순2 1471 2011.12.14
983 마이크로프로세서 HOTiar 초보자가 보고 따라할수 있는 메뉴얼 부탁 드립니다.1 멜쉬 753 2011.12.13
982 마이크로프로세서 HOTlabview로 제어하기1 본드3 1062 2011.12.13
981 마이크로프로세서 HOT적외선 센서를 이용한 모터 구동 질문드립니다.!!1 밥볍 1077 2011.12.08
980 마이크로프로세서 HOT초짜가 질문 하나 던져봅니다.1 띵띵꽁꽁 625 2011.12.08
979 마이크로프로세서 HOT적외선 센서를 이용한 모터구동 질문입니다.!! 고수님들 부탁드려요~ ㅜ 밥볍 855 2011.12.07
978 마이크로프로세서 HOTATtiny 개발킷 관련 나기 695 2011.12.07
977 마이크로프로세서 HOTkeil 어셈블리어로 시계제작중인데 질문좀!! 행복하길 621 2011.12.05
976 마이크로프로세서 HOT프로그램 빌드시에 에러하나가 자꾸 뜹니다 ㅜ도와주세요1 유동막걸리 869 2011.12.03
975 마이크로프로세서 HOT8051을 이용한 7segment시계1 skfajk 747 2011.12.02
974 마이크로프로세서 HOT잔상(pov)회로를 만들계획인데요1 림메 626 2011.12.01
973 마이크로프로세서 HOT안녕하세요 8051 어셈블리어 디지털 시계 소스좀 짜주세요ㅠ 조경민 1663 2011.11.30
Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 58 Next
  • 남의 생활과 비교하지 말고 네 자신의 생활을 즐겨라.
    - 콩도르세
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.