Anda di halaman 1dari 4

Yana dharma nugraha

16/396615/SV/10790
TE-3-A

1. Register yang di gunakan:

ADC yang melakukan setting register-registernya yaitu setting ADMUX, ADCSRA, dan
SFIOR. Hasil setting yang digunakan pada program ADC menjadikan sistem ADC
bekerja secara free running.

 ADMUX = 0b11101101
 ADCSRA=0b00000000
 SFIOR = 0x0f

2. Flowchart
O

start

Inisialisasi port B adalah


Deklarasi library output
ATMEGA 3835
Deklarasi variable read
adc

Inisialisasi register
ADMUX
Inisialisasi register
ADSCRA
Setting register ADMUX Inisialisasi flag
Setting register ADCSRA pada register
SFIOR

Adcdt=read_adc
Apakah nilai Port B = ADCDT
perulangan
untuk ADCSRA
adalah 0x10 ? tidak

Selesai
ya

O
3. Program dan penjelasan

#include <mega8535.h> // header program chip ATmega8535


#include <delay.h> //header program delay
#define ADC_VREF_TYPE 0x60 //Mendefinisikan type ADC
unsigned char read_adc //mendeklarasikan variabel read_adc

(unsigned char adc_input)


{
ADMUX=adc_input| //Setting register ADMUX
(ADC_VREF_TYPE&0xff);
delay_us(10); //tunda 10us
ADCSRA|=0x40; //Setting register ADCSRA
while((ADCSRA&0x10)==0); //perulangan untuk mengecek logika ADCRA
ADCSRA|=0x10; //set ADCSRA 0x10
return ADCH; //pengembalian nilai ADCH
}
unsigned char adcdt; //deklarasi variabel adcdt
void main (void) //fungsi main
{
DDRB=0xff; //set PORTB sebagai output
PORTB=0x00; //PORTB aktif High //Inisialisasi
ADMUX=ADC_VREF_TYPE&0xff; register ADMUX //nisialisasi register
ADCSRA=0xA7; ADCSRA //Inisialisasi flag pada
SFIOR&=0x0f; register SFIOR
while(1)
{
adcdt=read_adc(0); //nilai adcdt mengikuti nilai input
PORTB=adcdt; tegangan //output PORTB sama dengan
} hasil konversi pada adcd
}
//Arduino//

void setup( ){

int i;

for (i=1; i<8; i++){

pinMode(i, OUTPUT);

digitalWrite(i, HIGH);

pinMode(40, input); }

Void loop ( ) {

Int potensio;

Potensio = analogRead(40); LEDMATI ( );

NYALALED(potensio*8/1023 -1); delay(200); }

void LEDMATI( ) {

int i;

for (i=1; i<8; i++)

digitalWrite(i, HIGH); }

void NYALALED(int potensio) ) {

int i;

for (i=1; i<8 ; i++)

digitalWrite(i, LOW); }
PROTEUS

Anda mungkin juga menyukai