BASIC4MCU | 질문게시판 | ATmega128_V20.h 헤더파일 관련하여...
페이지 정보
작성자 답이없넹 작성일2018-12-05 17:40 조회12,082회 댓글4건본문
댓글 4
조회수 12,082master님의 댓글
master 작성일
전체소스 첨부하시고
회로도가 있으면 더 좋습니다.
답이없넹님의 댓글
답이없넹
학교에서 준 보드를 사용하는거라 회로도는 없고 전체 소스는 첨부하겠습니다.. 일단 소스는 댓글에 첨부해 놓겠습니다..
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include "ATmega128_v20.H"
#include "lcd_num.h"
#define N_CHANNEL 2
static unsigned char key=0; // 정적변수 key=0으로 지정
ISR(TIMER0_OVF_vect) // timer overflow 관련 함수 , timer0 , interrupt service rouitne
{
static int n_enter=0;
TCNT0=100;
if(PINB==0x0e) // 0000 1111 //led켜짐 , key=1이 되면
key=1;
if (key==1)
{
n_enter++;
PORTB|=0x20; // 0000 0010
if(n_enter==500) // 500ms뒤 리셋
{
n_enter=0;
PORTB&=0x0f; // 0000 0000
key=0;
}
}
}
void ADCInit() // ADC 시작함수
{
DDRF &= ~((1<<PF0) | (1<<PF1));
ADCSRA = (1<<ADEN) | (7 << ADPS0);
Delay_ms(10);
}
short ADConversion(unsigned char chan) // along to digital 변환 함수
{
ADMUX = (3 << REFS0) | (char)chan;
ADCSRA |= (1 << ADSC);
while(!(ADCSRA & (1<<ADIF)));
ADCSRA |= (1 << ADIF);
return ADC;
}
main()
{
int adresult[N_CHANNEL];
DDRB=0xf0;
PORTB=0x00;
int i=0,a=0,b=0;
int j=0,k=0;
MCU_initialize();
Delay_ms(30);
LCD_initialize();
ADCInit();
TCCR0=0x00;
TCNT0=100;
TIMSK=(1<<TOIE0);
sei();
TCCR0|=(7<<CS00);
while(1){
if(adresult[0]<500){ // 가변저항
PORTB=0x00;
LCD_string(0x80, "Detecting"); //lcd 보이는 부분 detecting표시
}
else if(adresult[0]>500){ // 500이상이면
PORTB=0x10; // 0000 0001
LCD_string(0x80, "alarming "); //lcd 보이는 부분에 alarming을 표시
PORTG |= _BV(3) // alarm관련 코드;
Delay_ms(50);
PORTG &= ~_BV(3); /
}
if(adresult[1]<600){
PORTB=0x00;
LCD_string(0xc0, "Dark ");
}
else if(adresult[1]>600){
PORTB=0x40;
LCD_string(0xc0, "Light ");
}
adresult[0] = ADConversion(6);
adresult[1] = ADConversion(7);
LCD_command(0x8a);
LCD_4d(adresult[0]);
LCD_command(0xca);
LCD_4d(adresult[1]);
Delay_ms(50);
master님의 댓글
master 작성일
아래가 짤렸나요?
전체소스가 아니군요
답이없넹님의 댓글
답이없넹 작성일
네 끝부분만 잘린거에요
Delay_ms(50);
}
이렇게 입니다.