P. 1
BELAJAR SERIAL ATMEGA16 .doc

BELAJAR SERIAL ATMEGA16 .doc

|Views: 7|Likes:
Dipublikasikan oleh Kribo Yuhui
atmega16
atmega16

More info:

Published by: Kribo Yuhui on Sep 17, 2013
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

09/10/2014

pdf

text

original

BELAJAR SERIAL ATMEGA16 DENGAN CODEVISION

Posted by iswanto

Tujuan : Setelah melaksanakan modul ini mahasiswa diharapkan dapat :

• • • • •

Membedakan dasar-dasar port serial pada mikrokontroler Membedakan dasar-dasar tx pada mikrokontroler Membedakan dasar-dasar rx pada mikrokontroler Memanfaatkan bilangan biner dan heksadesimal dalam pemrograman Membuat rangkaian serial sekaligus membuat program

Materi input output atmega dengan codevision, klik disini

1. 8 atau 9 Data bit dan 1 atau 2 Stop bit  Tahap odd atau even parity dan parity check didukung oleh hardware  Pendeteksian data overrun  Pendeteksi framing error  Pemfilteran gangguan ( noise ) meliputi pendeteksian bit false start dan pendeteksian low pass filter digital  Tiga interrupt terdiri dari TX complete. 7. 6. Jenis yang utama adalah :  Operasi full duplex ( register penerima dan pengirim serial dapat berdiri sendiri )  Operasi Asychronous atau synchronous  Master atau slave mendapat clock dengan operasi synchronous  Pembangkit boud rate dengan resolusi tinggi  Dukung frames serial dengan 5. TX data register empty dan RX complete. SERIAL PADA ATMEGA16 Universal synchronous dan asynchronous pemancar dan penerima serial adalah suatu alat komunikasi serial sangat fleksibel.  Mode komunikasi multi-processor .BAB II PORT SERIAL MIKROKONTROLLER 2.

parameter boud rate diasumsikan untuk di simpan pada register r16. Pada contoh tersebit mengasumsikan bahwa operasi asinkron menggunakan metode poling ( tidak ada interrupt enable ) frame format yang tetap. Boud rate diberikan sebagai fungsi parameter. Ketika menulis fungsi pada register UCSRC. bit URSEL (MSB) harus diset dalam kaitan dengan pembagian penempatan I/O oleh UBRRH dan UCSRC. Lebih mengedepankan inisialisasi rutin dapat dibuat seperti itu . Untuk interrupt menjalankan operasi USART . dan flag RXC dapat digunakan untuk mengecek bahwa tidak ada data yang tidak terbaca pada buffer penerima. global interrupt flag ( penanda ) sebaiknya dibersihkan ( dan interrupt global disable ) ketika inisialisasi dilakukan. INISIALISASI USART USART harus diinisialisasi sebelum komunikasi manapun dapat berlansung. Flag TXC dapat digunakan untuk mengecek bahwa pemancar telah melengkapi semua pengiriman. Mode komunikasi double speed asynchronous 2. Tercatat bahwa flag TXC harus dibersihkan sebelum tiap transmisi ( sebelum UDR ditulisi ) jika itu semua digunakan untuk tujuan tersebut. Untuk kode assembly.2. Proses inisialisasi normalnyaterdiri daripengesetan boud rate. untuk meyakinkan bahwa tidak ada transmisi berkelanjutan sepanjang peiode register yang diubah. r17. Sebelum melakukan inisialisasi ulang dengan mengubah boud rate atau frame format. penyetingan frame format dan pengaktifan pengirim atau penerimatergantung pada pemakaian. USART sederhana inisialisasi kode contoh berikut menunjukan fungsi satu assembly dan satu C itu mempunyai kesamaan dalam kemampuan.

Proses ini menggunakan bit yang ada pada register UCSRA. 2. RXC akan bernilai satu jika ada data yang siap dibaca di buffer penerima. MENERIMA DATA MELALUI PORT SERIAL Proses penerimaan data serial diakukan dengan mengecek nilai bit RXC (USART Receive Complete) pada register UCSRA. Bit UDRE merupakan indikator kondisi register UDR.meliputi frame format sebagai parameter. Bagai manapun juga banyak aplikasi menggunakan seting tetap boud dan register control. dan untuk aplikasi jenis ini dapat ditempatkan secara langsung pada keseluruhan routine. . atau dikombinasikan dengan inisialisasi kode untuk modul I/O yang lain. 2.3.4. Jika penerima USART dinonaktifkan maka bit ini akan selalu bernilai nol. dan bernilai nol jika tidak ada data pada buffer penerima. Jika UDRE bernilai 1 maka register UDR telah kosong. disable interrupt dan lain-lain. yaitu bit UDRE (USART Data Register Empty). MENGIRIM DATA MELALUI PORT SERIAL Proses pengiriman data serial dilakukan per byte data dengan menunggu register UDR yang merupakan tempat data serial akan disimpan menjadi kosong sehingga siap ditulis dengan data yang baru.

Rangkaian Led Driver Serial menggunakan Microcontroller ATMEGA16 yang dihubungkan ke port serial dengan menggunakan IC RS232 Rangkaian Serial LED Driver ini akan mendeteksi setiap pengiriman data karakter dari port serial computer.2. Hasil pemasangan komponen rangkaian serial mikrokontroller . VC C 1 1 1 1 1 1 1 1 H EAD ER 5 VC C 1 2 3 4 5 J IS P R ST C 1 22pF 1 SW 2 C 3 100nF 1 X1 2 C 2 22pF P P P R G 5 6 7 ST N D R 1 P0 P1 P2 P3 P4 P5 P6 P7 VC C 1 1 1 1 PD 0 1 PD 1 1 PD 2 1 PD 3 1 PD 4 1 PD 5 1 PD 6 2 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 U 4 P B 0 (XC K /T 0 ) P A 0 (A D C 0 ) P B 1 (T 1 ) P A 1 (A D C 1 ) P B 2 (IN T 2 /A IN 0 ) P A 2 (A D C 2 ) P B 3 (O C 0 /A IN 1 ) P A 3 (A D C 3 ) P B 4 (S S ) P A 4 (A D C 4 ) P B 5 (M O S I) P A 5 (A D C 5 ) P B 6 [M IS O ) P A 6 (A D C 6 ) P B 7 [S C K ) P A 7 (A D C 7 ) R ESET AR EF VC C AG N D G N D AVC C XTA L2 P C 7 (T O S C 2 ) XTA L1 P C 6 (T O S C 1 ) P D 0 (R X D ) PC 5 P D 1 (T X D ) PC 4 P D 2 (IN T 0 ) PC 3 P D 3 (IN T 1 ) PC 2 P D 4 (O C 1 B ) P C 1 (S D A ) P D 5 (O C 1 A ) P C 0 (S C L ) P D 6 (IC P ) P D 7 (O C 2 ) A TM E G A 16 L1 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 D D D D D D D D A A A A A A A A TA TA TA TA TA TA TA TA 0 1 2 3 4 5 6 7 2 2 2 2 2 2 2 2 A A A A A A A A D D D D D D D D D 8 D 9 D 10 D 11 D 12 D 13 D 14 D 15 PD 7 VC C H EAD ER 3 1 2 3 J S e r ia l1 R X1 TX1 8 13 7 14 1 u F 1 6 1V + C 4 3 U 6 R 2 IN R 1 IN T2O U T T1O U T C + T 1 IN R 1O U T T 2 IN R 2O U T C 2+ 11 12 10 9 4 1uF 16V + C 5 C 1V+ M A X232 C 2V- 5 6 1uF 16V C 9 + 1uF 16V + C 8 2 Gambar 5. Rangkaian tersebut. RANGKAIAN SERIAL MIKROKONTROLLER Rangkaian berikut digunakan untuk interfacing Led dengan port serial.1. Berikut adalah rangkaian serial led driver yang akan kita hubungkan pada port serial. sebagai konverter dari serial ke pararel.5.

PEMROGRAMAN MENGIRIM DATA Setelah membuat rangkaian serial mikrokontroller dan menghubungkan ke komputer.1.6. putchar(13). maka sekarang saatnya Anda membuat program yang digunakan untuk mengirim data serial. putsf("Selamat Datang Mas Iswanto"). PORTC = 0x00. MENGIRIM DATA SERIAL PORT //------------------------------------------------------//------------------------------------------------------//DEKLARASI HEADER //------------------------------------------------------<mega16.2. PEMROGRAMAN PORT SERIAL MIKROKONTROLLER 2. unsigned long int UBRR. const long int osilator = 12000000. Program sebagai berikut ini //------------------------------------------------------//Program Bab 5.6. InisialisasiUSART(9600).h> #include <delay. } //-----------------------------------------------------//DEKLARASI SUB BAUDRATE //------------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate) { #include unsigned . //-----------------------------------------------------//PROGRAM UTAMA //------------------------------------------------------void main(void) { DDRC = 0xFF.1. //-----------------------------------------------------//DEKLARASI SUB RUTIN //------------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate).h> //------------------------------------------------------//DEKLARASI VARIABEL //------------------------------------------------------char data_terima = 0x00.h> #include <stdio.

MENGIRIM DAN MENERIMA DATA //------------------------------------------------------//------------------------------------------------------//DEKLARASI HEADER //------------------------------------------------------<mega16. //-----------------------------------------------------//PROGRAM UTAMA //------------------------------------------------------void main(void) { DDRC = 0xFF. UCSRB = 0x18. const long int osilator = 12000000. PORTC = 0x00. //-----------------------------------------------------//DEKLARASI SUB RUTIN //------------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate).h> #include <delay. UBRRH = UBRR>>8. } 2. InisialisasiUSART(9600). while(1) #include unsigned .h> //------------------------------------------------------//DEKLARASI VARIABEL //------------------------------------------------------char data_terima = 0x00. PEMROGRAMAN MENGIRIM DAN MENERIMA DATA Setelah membuat dan menjalankan program mengirim data serial.6. putsf("Selamat Datang Mas Iswanto"). unsigned long int UBRR. UCSRC = 0x86.h> #include <stdio.2. maka sekarang saatnya Anda membuat program kedua yang digunakan untuk program mengirim dan menerima data serial. Program sebagai berikut ini //------------------------------------------------------//Program Bab 5. UBRRL = UBRR. putchar(13).UBRR = (osilator/(16*baud_rate))-1.2.

UBRRH = UBRR>>8. UCSRC = 0x86.. UCSRB = 0x18. delay_ms(100). putchar(13). putchar(13).{ putsf("Tekan sembarang tombol"). UBRRL = UBRR. } } //-----------------------------------------------------//SUB RUTIN BAUDRATE //------------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate) { UBRR = (osilator/(16*baud_rate))-1. putsf("Anda menekan tombol "). putchar(data_terima). data_terima = getchar(). } .

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->