NAH POINTnya langsung aja. Mikrokontroller dari 2 bahasa mikro berarti kecil dan controller berarti pengontrol. jika digabungkan menjadi pengontrol kecil. jadi MIKROKONTROLLER adalah suatu device elektronika yang kecil bentuknya dan bisa digunakan untuk mengontrol apapun sesuai keinginan pembuat. pengontror tak lepas dari apakah ON / OFF atau Semi Otomatis atau Otomatis. semuanya bisa dilakukan dengan mikrokontoller.
A. I/O
mau belajar mikrokontroller jenis apapun jangan, pusing-pusing, intunya harus mengerti apa itu I/O atau input/output. Seperti bahasan sebelumnya, sebenarnya mikro itu adalah proses digitalnya. jadi input yang berupa analog dari alam, dengan ADC diubah dan dijadikan input masuk ke pengolah dan oleh pengolah akan menghasilkan output ( DAC ) analog kembali. Pada mikrokontoller ini hannya ada input dan output saja karena mikrokontroller sebagai prosessing / pengolah / pemroses. dan nanti jangan bingung karens sebuah mikrokontroller hannya mengolah bilangan digital saja atau 1 dan 0.
Ni langsung aja tak contohkan,
Saya pakenya ATmega 16/32/8535 ato yang lebih besar dan lebih kecil intinya sama.
Pin dari ATmega ini terdiri dari 4 port I/O yaitu PORT A, PORT B, PORT C dan PORT D. mungkin ada yang lebih sedikit missal saja 6 pada ATmega 8 atau 5 pada ATmega 128 intinya sama. Ke empat PORT tersebut terdiri dari 2 masing-masing 8 bit input dan output.
Secara umum setiap PORT memiliki 3 buah register bit yaitu:
1. 1. DDRx.n
2. 2. PORTx.n
3. 3. PINx.n
Dengan x adalah nama portnya dan n adalah bitnya.
Contoh untuk PORT A., secara umum untuk port yang lainnya sama.
PORT ini digunakan untuk mengisi nilai bit, misalkan low atau high, 1 atau 0.
PIN ini digunakan intuk pemanggilan input saja. Jadi apabila di suatu program ingin mengambil nilai input pakai PIN.
DDR ini digunakan untuk menentukan data direction ( data direction register ) apakah sebuah PORT ingin dijadikan input atau output.
Sebuah DDR jika memiliki nilai bit satu ( 1 ) berarti dia sebagai OUTPUT dan jika memiliki nilai nol ( 0 ) maka dia sebagai INPUT.
Contoh register I/O:
Gambar diatas contoh pengesetan register input output untuk PORT A,B,C dan D
DDRA=0x00;
PORTA=0x00;
Dilihat dulu mana resister yang menjadikan input atau output yaitu dilihat DDRx.n-nya. Jika diubah semua kebiner maka:
DDRA=0b00000000; // nilai DDR = 0 jadi PORTA = input
PORTA=0b00000000; //nilai PORT = 0 jadi PORTA mempunyai nilai logic 0
Jadi kesimpulan dari PORTA adalah INPUT LOW / INPUT FLOATING
Untuk PORT B.
DDRB=0xFF;
PORTB=0x00;
Jika diubah semua kebiner maka:
DDRB=011111111; // nilai DDR = 1 jadi PORTB = Output
PORTB=0b00000000; //nilai PORT = 0 jadi PORTB mempunyai nilai logic 0
Jadi kesimpulan dari PORTB adalah OUTPUT LOW
Bagaimana jika
PORTB=0xF0; dan DDRB=0x0F;
Jangan bingung karena sebuah PORT terdiri dari 8bit bidirectional I/O jadi bisa untuk input dan output.
DDRB=0xOF; dalam bentuk biner DDRB=0x00001111;
DDRB 0-3 bernilai 1 = Output
DDRB 4-7 bernilai 0 = Input
PORTB=0xF0; dalam bentuk biner PORTB=0x11110000;
PORTB 0-3 bernilai 0 = Low
PORTB 4-7 bernilai 1 = High
Kesimpulannya:
DDRB 0-3 bernilai 1 = Output , PORTB 0-3 bernilai 0 = Low
Jadi PORTB 0-3 adalah OUTPUT LOW
DDRB 4-7 bernilai 0 = Input , PORTB 4-7 bernilai 1 = High
Jadi PORTB 4-7 adalah INPUT HIGH / INPUT PULL UP