BASIC4MCU | 질문게시판 | 답변 : 아트메가128 질문있습니다
페이지 정보
작성자 master 작성일2022-12-16 09:18 조회119회 댓글0건본문
int adc0,adc1;
//
interrupt [TIM0_COMP] void timer0_comp_isr(void){ // 1ms
static char c=0;
PORTD&=0x0F;
switch(c){
case 0: PORTC=seg[Num/1000]; PORTD.4=1; break;
case 1: PORTC=seg[Num/100%10]; PORTD.5=1; break;
case 2: PORTC=seg[Num/10%10]; PORTD.6=1; break;
case 3: PORTC=seg[Num%10]; PORTD.7=1; break;
}
if(++c>3)c=0;
//-------------------------------------------
if(ADMUX==0x40){
adc0=ADCW;
if (adc0>540)OCR1A= 5; // 5%
else if(adc0>480)OCR1A= 25; // 25%
else if(adc0>430)OCR1A= 50; // 50%
else if(adc0>400)OCR1A=100; // 100%
}
else{
adc1=ADCW;
if (adc1>1000)OCR1B=100; // 100%
else if(adc1> 850)OCR1B= 75; // 75%
else if(adc1> 700)OCR1B= 50; // 50%
else if(adc1> 500)OCR1B= 0; // 0%
}
ADMUX^=1; // 0x40 <-> 0x41 변경
}
//
void main(void){
DDRB=0x60; // pwm PB5,6 out
DDRC=0xFF; DDRD=0xF0; // segment // digit select
PORTE=0x30;
//
TCCR1A=0x82; TCCR1B=0x1A; ICR1=100; // FAST PWM, 16Mhz/8분주=0.5usec // 0.5usec*100=50usec=20KHz
//
TCCR0=0x0D; OCR0=124; TIMSK=2; // 16000000/128/(1+124)=1000Hz,1ms
//TCCR0=0x0D; OCR0= 85; TIMSK=2; // 11059200/128/(1+85)=1004.651162790698Hz=995.3703703703704us
ADMUX=0x40; ADCSRA=0xE7; // 프리런닝
SREG=0x80;
while(1){}
}
OC1A,OC1B PWM을 사용하는 것으로 변경 했습니다.포트B에 연결된 디지트 셀렉트 신호를 포트D로 이동하고포트D에 연결되어 있던 PWM핀을 포트B로 이동하세요
댓글 0
조회수 119등록된 댓글이 없습니다.