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 |