728x90

codevision avr 프로젝트 생성

- 마법사 사용 x 

- atmega128 설정

- 프로젝트 설정 - c compiler 에서 클럭 16mhz

- 프로젝트 설정 after build에서 프로그래머, 컴포트, 싱크 프리퀀시(460,800) 확인

 

KUT-128 보드 기준

- KUT-128 보드에선 출력을 0으로 해야 해당 LED의 불이 들어온다.

 

 

LED 시프트 점멸

- led =0xFE LED -> 0번 핀 한개 점멸

- LED 점멸을 위해선 C포트 출력 설정 필요 -> DDRC = 0xff

- 좌측 시프트 1번 연산 후 0x01 or 연산 -> LED가 좌측 점멸하게 된다.

- LED가 다꺼지면 다시 0번핀만 점멸

 

#include <mega128.h>

void Delay(unsigned int);

void main()
{
    unsigned char led = 0xFE;       //LED 출력 초기값
    
    DDRC = 0xFF;                    //Port C 방향(입 or 출) 전체를 출력 설정
    
    while(1)
    {
        PORTC = led;                //led대로 port c 출력
        Delay(5);
        led <<= 1;                  //1번 좌측 시프트
        led |= 0x01;                //or연산으로 LSB에 1 출력
        if(led == 0xFF) led = 0xFE; //초기값 0xfe 이던게 중간 0이 사라지고 전체 1이된 경우 다시 1111 1110으로 초기화 
    }
}

void Delay(unsigned int cnt)
{
    unsigned int i, j;
    
    for(i = 0; i < cnt; i++)
    {
        j = 50000;                  // 한번 포루프 안에서 5만 클럭 반복
        while(--j);                 // cnt 값에 따라 5x 10k x cnt 만큼 지연
    }
}

 

 

 

 

 

 

LED 시프트 반대로

 

#include <mega128.h>

void Delay(unsigned int);

void main()
{
    unsigned char led =0x7F;
    DDRC = 0xFF;                    //Port C 방향(입 or 출) 전체를 출력 설정
        
    while(1)
    {                                                                      
        PORTC = led;
        Delay(10);
        led >>= 1;                                                        
        led |= 0x80;
        if (led == 0xFF) led = 0x7E;
    }
}

void Delay(unsigned int cnt)
{
    unsigned int i, j;
    
    for(i = 0; i < cnt; i++)
    {
        j = 50000;                  // 한번 포루프 안에서 5만 클럭 반복
        while(--j);                 // cnt 값에 따라 5x 10k x cnt 만큼 지연
    }
}

 

 

LED 위아래

#include <mega128.h>

void Delay(unsigned int);

void main()
{
    //위에서 아래로 -> 밑에서 위로

    unsigned char led = 0x7F;
    unsigned char flag = 0;
    unsigned char or_op = 0x80;
    DDRC = 0xFF;
    
    while (1)
    {
        PORTC = led;              
        if (flag == 0) led >>= 1;
        else led <<=1;
        led |= or_op;     
        Delay(10);
        if (led == 0xFE)
        {
            flag = 1;
            or_op = 0x01;
        }else if (led == 0x7F)
        {                  
            flag = 0;
            or_op = 0x80;
        }
    }
}


void Delay(unsigned int cnt)
{
    unsigned int i, j;
    
    for (i = 0; i < cnt; i++)
    {
        j = 50000;
        while(--j);
    }
}

 

 

LED 교차점멸

 

#include <mega128.h>

void Delay(unsigned int);

void main()
{
    unsigned char led_down = 0x7F;
    unsigned char led_up = 0xFE;
    unsigned char led_output;
    unsigned char flag = 0;  
        
    DDRC = 0xFF;
    
    while (1)
    {
        if(flag ==0)
        {
            led_down >>= 1;
            led_up <<= 1;
            led_down |= 0x80;
            led_up |= 0x01;
        }
        else
        {
            led_up >>= 1;
            led_down <<= 1;
            led_up |= 0x80;
            led_down |= 0x01;
        }
        led_output = led_down & led_up; 
        PORTC = led_output;
        Delay(20);
        if ((led_up == 0x7F) && (led_down == 0xFE)) flag = 1;
        else if ((led_up == 0xFE) && (led_down == 0x7F)) flag = 0;
    }

}


void Delay(unsigned int cnt)
{
    unsigned int i, j;
    
    for (i = 0; i < cnt; i++)
    {
        j = 50000;
        while(--j);
    }
}

 

 

 

300x250

'기타 > 전기, CAD' 카테고리의 다른 글

전력공학 - 2. 전선로  (0) 2022.04.23
전력공학 - 1. 개요  (0) 2022.04.23
대충 정리한 KEC  (0) 2022.04.11
전기기기 4 - 동기 발전기  (0) 2022.04.11
전기기기 3 - 직류 전동기  (0) 2022.04.11

+ Recent posts