You are on page 1of 3

TUGAS SISTEM MIKROPROCESSOR

(Disusun oleh ITMI HIDAYAT.K NIM 11/322043/PTK/7422) TUJUAN Membuat program menggunakan bahasa C untuk penggunaan ADC pada mikrokontroller Atmega8535 dengan pengeluaran data ADC setiap 1 detik. PENDAHULUAN Sebelum membuat program terlebih dahulu, dihitung nilai timer yang akan digunakan sehingga bisa didapatkan waktu tunda selama 1 detik. Karena yang akan digunakan timer 0 (timer 8) dengan prescaler = 1. Maka untuk menghitung banyaknya pengulangan : Jika Frekwensi Crystal Microcontroller = 10Mhz timer yang di inginkan 1 detik = 1.000ms = 1000.000s Siklus mesin, periode tiap clock = Sehingga untuk timer 8 bit, periode interupsi Overflow clock = 0,1s x 256 = 25,6 s Untuk membuat timer selama 1 detik,di perlukan pengulangan sebanyak :

Resolusi ADC dengan konversi 8 bit :


Listing program pembacaan ADC :
#include <mega8535.h> #include <delay.h> #define ADC_VREF_TYPE 0x20 unsigned int data=0 ; unsigned char data_adc; // membaca data 8 bit dari A/D conversion unsigned char get_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Tunda dibutuhkan stabilisasi tegangan input adc delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Menunggu selesainya konversi A/D while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; }

// Fungsi Utama// void main(void) {

PORTB=0xFF; DDRB=0xFF; TCCR0=0x01; //Setting Skala clock=1(clock tim=clock osc) TCNT0=0x00; //setting nilai awal timer dari 00h OCR0=0x00; //Ouput Compare register tidak digunakan // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x01; //pengaktifan interupt timer overflow // ADC initialization // ADC Clock frequency: 625.000 kHz // ADC Voltage Reference: AREF pin // ADC High Speed Mode: Off // ADC Auto Trigger Source: ADC Stopped // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x84; SFIOR&=0xEF; // Global enable interrupts #asm("sei") //pengatifan seluruh interupsi while(1); //pengulangan terus menerus } //Servis rutin interupsi overflow timer 0 interrupt [TIM0_OVF] void timer0_ovf_isr(void) { data++; //jika terjadi interupt overflow data ditambah 1 if (data > 39062) { data_adc=get_adc(0); //nilai hasil pembacaan adc PORTB =~data_adc; //nilai data_adc di NOT-kan karena keluran bersifat aktif low data = 0; }; }

PENGUJIAN PROGRAM Rangkaian pengujian program ADC

Hasil Pengujian Output ADC = 100011b= 35d

Tegangan masukan ADC CH 0 = 700mV

V referensi ADC = 5 V

ANALISA : Secara teoritis , Resolusi ADC = 19,5 mV maka dengan Tegangan input ADC =700mv. Keluaran ADC =

KESIMPULAN Dari percobaan di atas bisa disimpulkan bahwa program ADC sudah bekerja sesuai dengan yang di harapkan.

You might also like