void setup() {
// put your setup code here, to run once:
//설정값 넣기 - 전원이 들어오는 순간, 모든 설정값이 초기화 되어서 전원을 넣은 후 초기 옵션값을 설정해야 한다.
DDRB = 0xff; // 포트B 쓴다
max_send_add_data(0x09,0x00); //디코드 하지 않겠다. 01, 0F 등등 있긴한데 00만 사용.
max_send_add_data(0x0a,0x01); //주사율 설정. 3/32로 설정표 보고 원하는대로 조정 가능.
max_send_add_data(0x0b,0x07); //몇비트 스캔하는지 정함. 일반적으로 8비트 다 써서 07
max_send_add_data(0x0c,0x01); //동작 안할때 - 기본동작모드
max_send_add_data(0x0f,0x00); //디스플레이 테스트 모드는 모든 LED 키는게 목적 - 기본동작모드
}
void loop() { //계속 루프함.
// put your main code here, to run repeatedly:
max_send_add_data(1,7);
}
void max_send_add_data(char add, char data){
PORTB = 0x0;
max_send(add);
max_send(data);
PORTB = 0x1 << 2; // 1 에서 시프트를 통해 100이 되어 4가 도출.
//ㄴ 아래 사항을 4번 반복
}
void max_send(char data){ //레지스터 입력 프로세스 (중요)
for(int i = 0; i < 8; i++){ //0~7까지 8비트
int send_data = (data >> (7-i)) & i;
// ㄴ data 를 (7-i)만큼 우측 시프트 한 것을 and 연산자를 하여 같을때 1 도출 = 출력
//
PORTB = send_data;
PORTB != 1<<i; //특정 비트를 1로 연산한다.
PORTB = PORTB & ~(1<<i); // PORTB &= ~(1<<i) 특정비트를 0으로 연산한다.
//ㄴ 이를 통해 한줄씩 켜짐 ?
}
}
카테고리 없음
마이크로프로세서_LED
반응형
반응형