pendeteksian low pass filter digital Tiga interrupt terdiri dari TX complete, TX data register empty dan RX complete. Mode komunikasi multi-processor Mode komunikasi double speed asynchronous
INISIALISASI USART
USART harus diinisialisasi sebelum komunikasi manapun dapat berlansung. Proses inisialisasi normalnyaterdiri daripengesetan boud rate, penyetingan frame format dan pengaktifan pengirim atau penerimatergantung pada pemakaian. Untuk interrupt menjalankan operasi USART , global interrupt flag ( penanda ) sebaiknya dibersihkan ( dan interrupt global disable ) ketika inisialisasi dilakukan. Sebelum melakukan inisialisasi ulang dengan mengubah boud rate atau frame format, untuk meyakinkan bahwa tidak ada transmisi berkelanjutan sepanjang peiode register yang diubah. Flag TXC dapat digunakan untuk mengecek bahwa pemancar telah melengkapi semua pengiriman, dan flag RXC dapat digunakan untuk mengecek bahwa tidak ada data yang tidak terbaca pada buffer penerima. Tercatat bahwa flag TXC harus dibersihkan sebelum tiap transmisi ( sebelum UDR ditulisi ) jika itu semua digunakan untuk tujuan tersebut. USART sederhana inisialisasi kode contoh berikut menunjukan fungsi satu assembly dan satu C itu mempunyai kesamaan dalam kemampuan. Pada contoh tersebit mengasumsikan bahwa operasi asinkron menggunakan metode poling ( tidak ada interrupt enable ) frame format yang tetap. Boud rate diberikan sebagai fungsi parameter. Untuk kode assembly, parameter boud rate diasumsikan untuk di simpan pada register r16, r17. 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 meliputi frame format sebagai parameter, disable interrupt dan lain-lain. 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.
menggunakan IC RS232 Rangkaian Serial LED Driver ini akan mendeteksi setiap pengiriman data karakter dari port serial computer.
H V C C E 1 2 3 4 5 I S C 1 C S W 2 3 1 0 0 P 1 n F R 2 1 X 1 C 2 2 2 p F S 2 A D E P P P R G T p F V C 1 1 1 1 D 1 D 1 D 1 D 1 D 1 D 1 D 2 R 5 6 7 S N T D 5 P P P P P P P P 0 1 3 4 5 6 7 2 1 2 3 4 5 6 7 8 9 C0 1 2 3 04 15 26 37 48 59 60 U 4 L 1 4 0 D3 9C D3 8C D0 )7C 3 13 ) 6C D D3 5C D3 4C D3 3C D3 2C 3F1 3D0 2C 9 2 S8 2 S7 52 6 42 5 32 4 22 3 2D2 2 C1 C D D D D D D D D 0 1 2 3 4 5 6 7 A A) A) A) A) A) A) A) ) T T T T T T T T A A A A A A A A 0 1 2 3 4 5 6 7 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 V C C
R J
P P P P P P P
P B 0 ( X C K /A T 0 0 ( ) A P P B 1 ( T 1 ) P A 1 ( A P B 2 ( I N T P 2 A / A2 I( N A P B 3 ( O C P 0 A/ A 3 I ( NA P B 4 ( S S )P A 4 ( A P B 5 ( M O PS AI )5 ( A P B 6 [ M I S P O A )6 ( A P B 7 [ S C PK A) 7 ( A R E S E T A R E V C C A G N G N D A V C X T A L 2 P C 7 ( T O X T A L 1 P C 6 ( T O P D 0 ( R X D ) P C P D 1 ( T X D ) P C P D 2 ( I N T 0 ) P C P D 3 ( I N T 1 ) P C P D 4 ( O C P1 BC ) 1 ( S P D 5 ( O C P AC ) 0 ( S 1 P D 6 ( I C P P) D 7 ( O A T M E G A 1 6
A CA CA
A D A D A D A D AA )D L P D ) 2 )
D 2 D 1 D
D )D )D D D D D D
8 9 1 1 1 1 1 1
C 0 1 2 3 4 5
E 1 2 3
R R
3 X 1
T X 1 e r i a l 1
U 6 8 1 3 R 2 I N R 1 I N 7 1 4 T 2 O U T 1 O U 1 6 V C +
T T
1 1 T 1 I N1 2 1 O U 0T 1 T 2 I N9 R 2 O U T R C 2 4 + 1 u F + C 5 1 6 V
1 u F1 + C 4 3 1 u F + C 126 8
C V V M
1 + A
C V
5 2 6 1 u F C 9 + 1 6 V
X 2
3 2
10
//------------------------------------------------------//DEKLARASI HEADER //------------------------------------------------------#include <mega16.h> #include <delay.h> #include <stdio.h> //------------------------------------------------------//DEKLARASI VARIABEL //------------------------------------------------------unsigned char data_terima = 0x00; const long int osilator = 12000000; unsigned long int UBRR; //-----------------------------------------------------//DEKLARASI SUB RUTIN //-----------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate); //-----------------------------------------------------//PROGRAM UTAMA //-----------------------------------------------------void main(void) { DDRC = 0xFF; PORTC = 0x00; InisialisasiUSART(9600); putsf("Selamat Datang Mas Iswanto"); putchar(13); } //-----------------------------------------------------//DEKLARASI SUB BAUDRATE //-----------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate) { UBRR = (osilator/(16*baud_rate))-1; UBRRL = UBRR; UBRRH = UBRR>>8; UCSRB = 0x18; UCSRC = 0x86; }
11
12
putsf("Anda menekan tombol "); putchar(data_terima);; putchar(13); } } //-----------------------------------------------------//SUB RUTIN BAUDRATE //-----------------------------------------------------void InisialisasiUSART (unsigned long int baud_rate) { UBRR = (osilator/(16*baud_rate))-1; UBRRL = UBRR; UBRRH = UBRR>>8; UCSRB = 0x18; UCSRC = 0x86; }