LED DIY | 아트메가 주석처리가 어렵습니다 ㅠㅠ
페이지 정보
작성자 취업가즈왑 작성일18-06-03 17:18 조회2,810회 댓글3건본문
#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>
unsigned char A[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7C, 0x07, 0x7F, 0x67}; //fnd에 나타낼 숫자들
volatile int a = 0,b,c,d;
ISR(INT4_vect);
void Fnd_Random();
void Buzzer();
int main(void)
{
DDRA = 0xff; //a포트 모두 출력으로 설정
DDRB = 0x10; //b포트를 00010000 으로 설정 ,1은 출력 0은 입력
DDRC = 0xff; //c포트 모두 출력으로 설정
DDRG = 0x0f; // g포트를 00001111로 설정
DDRE = 0xef; //e포트를 1110 1111로 설정
EICRB = 0x02; //인터럽트 제어 레지스터 0000 0010 설정, 하강엣지 인터럽트 설정
EIMSK = 0x10;// 인터럽트 4 허용 비트 0001 0000
sei(); //클로벌 인터럽트 인에이블, 인터럽트 사용 허가
while (1)
{
Fnd_Random(); // fnd_random 함수를 무한 반복
}
}
ISR(INT4_vect) //인터럽트 서비스 루틴 , int4_vect 는 외부인터럽트
{
_delay_ms(1);
a++;
if(a==5)
{
a = 0;
}
}
void Fnd_Random()
{
if(a == 0)
{
b=rand()%8;
}
if(a == 1)
{
PORTG = 0x08; PORTC = A[b]; _delay_ms(5);
c=rand()%8;
}
if(a == 2)
{
PORTG = 0x08; PORTC = A[b]; _delay_ms(5);
PORTG = 0x04; PORTC = A[c]; _delay_ms(5);
d=rand()%8;
}
if(a == 3)
{
PORTG = 0x08; PORTC = A[b]; _delay_ms(5);
PORTG = 0x04; PORTC = A[c]; _delay_ms(5);
PORTG = 0x02; PORTC = A[d]; _delay_ms(5);
Buzzer();
}
if(a == 4)
{
PORTG = 0x00;
}
}
void Buzzer()
{
if(b==9)
{
if(c==9)
{
if(d==9)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==8)
{
if(c==8)
{
if(d==8)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==7)
{
if(c==7)
{
if(d==7)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==6)
{
if(c==6)
{
if(d==6)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==5)
{
if(c==5)
{
if(d==5)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==4)
{
if(c==4)
{
if(d==4)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==3)
{
if(c==3)
{
if(d==3)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==2)
{
if(c==2)
{
if(d==2)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==1)
{
if(c==1)
{
if(d==1)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}if(b==0)
{
if(c==0)
{
if(d==0)
{
TCCR0 = 0b01111110;
OCR0 = 190;
}
}
TCCR0 = 0;
OCR0 = 0;
}else
{
DDRG = 0x00;
PORTG = 0x00;
PORTA=0xff;
_delay_ms(1000);
a++;
}
PORTA=0x00;
}
댓글 : 3
조회수 : 2,810
master님의 댓글
master 작성일
jackpot 게임 룰 부터 공부하셔야 하지 않을까요?
저도 jackpot 룰을 몰라서...
취업가즈왑님의 댓글
취업가즈왑
7세그먼트를 3개만 사용하여 각자리에 0~9까지의 랜덤숫자를 돌린다음 스위치1을 눌렀을때 왼쪽부터 하나씩 멈추고 3개의 7세그먼트가 모두 멈추었을때 777이면 소리가 나게 하고싶었습니다. 만약 777이아닌 다른수가 뜨면 스위치를 눌렀을때 리셋이 되는..
프로그램은 부저 스위치 fnd만을 사용하여 만들고싶었습니다..ㅠㅠ
master님의 댓글
master
질문 제목은 주석을 달아달라는 것처럼 보이는데요
본인이 작성 한 것이라면 주석처리가 쉽지 않나요?
//
뭐가 안되서 질문을 작성한 것이라면
뭐가되고 뭐가 안되는지 적어보세요