Notice
Recent Posts
Recent Comments
Link
꽁부왕
AVR Studio4_LED FND제어 본문
DDRx와 PORTx
#include <avr/io.h>
int main(){
DDRF=0xF0;
PORTF=0xF0;
}
※ AVR은 c언어를 기본으로 함. 문법도 동일.
DDRx는 전압을 조절할 PIN번호를 선택하는 코드.
PORTx는 선택된 PIN의 전압을 5V로 할지 0V로 할지 결정하는 코드.
DDR"F"인 이유는 내가 사용하는 보드의 schematic을 보면 알 수 있는데,
이 보드의 LED의 output은 PF4~7에 연결되어 있기 때문이다.
AVR은 주로 16진법을 이용하여 제어한다.
DDRF=0xF0;
PORTF=0xF0;
PF중 4~7의 전압을 조절할 것이다. 4~7의 전압을 5V로 한다. 는 의미이다.
FND 제어
#include <avr/io.h>
#include<avr/delay.h>
#define F_CPU 16000000UL //frequency설정
unsigned char FND_SEG[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66,
0x6D, 0x7C, 0x07, 0x7F, 0x67}; //SEG 0~9를 배열로
int main(){
DDRE=0x0C;
DDRA=0xFF;
while(1){
PORTE=0x04; //PE2=1일 때, 4개의 FND중 어떤 FND를 조절할지 결정하겠다는 의미.
PORTA=0x01;
PORTE=0x08; //PE3=1일 때, 위에서 선택한 1개의 FND의 0~7까지의 on/off를 조절.
PORTA=FND_SEG[1];
_delay_ms(1); //delay함수를 사용할 경우, 헤더파일을 추가
PORTE=0x04;
PORTA=0x02;
PORTE=0x08;
PORTA=FND_SEG[2];
_delay_ms(1);
PORTE=0x04;
PORTA=0x04;
PORTE=0x08;
PORTA=FND_SEG[3];
_delay_ms(1);
PORTE=0x04;
PORTA=0x08;
PORTE=0x08;
PORTA=FND_SEG[4];
_delay_ms(1);
}
}
출력 결과
1234
'AVR' 카테고리의 다른 글
AVR Studio4_New Project생성 (0) | 2020.01.23 |
---|