Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 독서
- 왜
- 의공학
- C언어
- #AVR #ATmega128
- avr
- #C언어 #자습
- sum
- 쉽게풀어쓴C언어Express
- 동적시스템모델링
- 압축파일
- 파이썬
- 제어공학
- fMRI
- 건국대
- 매트랩 #행렬
- 혼자있는시간의힘
- 변신
- 죽은시인의사회
- 라플라스 변환
- 소프트스퀘어드
- mean
- 매트랩
- 평균
- matlab
- 공부하자
Archives
- Today
- Total
꽁부왕
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 |
---|