BASIC4MCU | 질문게시판 | atmega128 cds가렸을시 부저 울리기 질문
페이지 정보
작성자 csh3425 작성일2023-10-23 17:56 조회779회 댓글1건본문
LCD와 FND가 1초씩 카운트되며
스위치를 한번 누르면 가변저항의 저항값을 lcd에 띄워주고
""스위치를 한번 더 누르고 cds를 가렸을시 부저를 울려라"" 라는 문제입니다.
마지막에 cds를 가리고 부저를 울리는 부분에서 부저가 울리지 않습니다. 도와주세요 ㅠ
#include <mega128.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
unsigned char sec;
unsigned char FONT[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x98};
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
sec++;
if(sec>9){sec=0;}
}
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x00
interrupt [ADC_INT] void adc_isr(void)
{
static unsigned char input_index=0;
adc_data[input_index]=ADCW;
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
delay_us(10);
ADCSRA|=0x40;
}
void main(void)
{
char text[16],secc[16];
int ohm;
char a,b,c=0;
unsigned char sw;
PORTA=0x00;
DDRA=0xFF;
PORTB=0x00;
DDRB=0xFF;
PORTD=0xFF;
DDRD=0x00;
ASSR=0x08;
TCCR0=0x05;
TCNT0=0x00;
OCR0=0x00;
TIMSK=0x01;
ETIMSK=0x00;
ACSR=0x00;
SFIOR=0x00;
ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCC;
lcd_init(16);
#asm("sei")
while (1)
{
sw=~PIND;
ohm = adc_data[0]*0.9765625;
a=ohm/100;
b=ohm%10;
sprintf(secc,"%d",sec);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(secc);
PORTB=FONT[sec];
if(sw==0x01){
PORTB=0x00;
c++;
}
if(c==1){
lcd_clear();
sprintf(text,"OHM = %i.%2i [ohm]", a,b);
lcd_gotoxy(0,1);
lcd_puts(text);
lcd_gotoxy(0,5);
lcd_puts("1");
delay_ms(200);
}
else if(c==2){
if((ACSR&0x20)!=0){
PORTA.0=0xFF;
}
else{PORTA.0=0x00;}
}
}
}
댓글 1
조회수 779master님의 댓글
master 작성일
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=104&docId=457151918&page=1#answer1
이 질문을 하신 분인가요?
버퍼만 동작시키는 코드도 올려드렸는데 버퍼는 정상동작 하던가요?
답글을 잘 읽어서 체크 해보세요