- Pengenalan Komunikasi Serial
seperti pada port printer yang mampu mengirim 8 bit sekaligus dalam satu detak.
- Peralatan Komunikasi Serial
Konektor port serial terdiri dari 2 jenis, yaitu konektor 25 pin(DB25) dan 9 pin (DB9) yang saling berpasangan. Bentuk dari konektor DB-25 sama persis dengan port paralel.
Umumnya COM1 berada di alamat 3F8H sedangkan COM2 di alamat 2F8H.
- Komunikasi Serial AT89S51/52
proses pengiriman data untuk menampung data yang diterima atau data yang akan dikrimkan.
Keluarga MCS-51 mempunyai sebuah register, yaitu SBUF yang terletak pada alamat 99H, dimana register ini berfungsi sebagai buffer pada saat mikrokontroler membaca data yang pertama dan data yang kedua yang belum diterima secara penuh sehingga data tersebut tidak hilang.
Register SBUF terdiri dari dua buah register yang memang mempunyai alamat yang sama, yaitu 99H. Register tersebut merupakan Transmit Buffer Register yang bersifat Wrute only (hanya dapat ditulis) dan Receive Buffer Register yang bersifat read only(hanya dapat dibaca).
Contoh program pengaturan LCD menggunakan port serial:
#include
#include
#include
#define PORT1 0x3F8 /* alamat port*/
/* Definisi alamat base port serial */
/* COM1 0x3F8 */
/* COM2 0x2F8 */
/* COM3 0x3E8 */
/* COM4 0x2E8 */
void main(void)
{
int c;
int count;
char init[] = { 0x0F, 0x01, 0x38 };
/* 0x0F - Init Display */
/* 0x01 - Clear Display */
/* 0x38 - Dual Line / 8 Bits */
outportb(PORT1 + 1 , 0x0); /* mematikan interupt - Port1 */
outportb(PORT1 + 3 , 0x80); /* SET DLAB ON */
outportb(PORT1 + 0 , 0x0C); /* Set Baud rate */
/* 0x06 = 19,200 BPS */
/* 0x0C = 9,600 BPS */
/* 0x18 = 4,800 BPS */
/* 0x30 = 2,400 BPS */
/* Set Baud rate - Divisor Latch High Byte */
outportb(PORT1 + 1 , 0x00);
outportb(PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */
outportb(PORT1 + 2 , 0xC7); /* FIFO Control Register */
outportb(PORT1 + 4 , 0x0B); /* Turn on DTR, RTS, and OUT2 */
/* Register Select (DTR) */
outportb(PORT1 + 4 , (inportb(PORT1 + 4) | 0x01));
/* 0 = Instruction Register */
for (count = 0; count < 3; count++)
{
outportb(PORT1, init[count]); /* kirim Init Data Bytes */
delay(20); /* delay untuk INIT */
}
/* Register Select (DTR) */
/* 1 = Data Register */
outportb(PORT1 + 4 , (inportb(PORT1 + 4) & 0xFE));
printf("\nContoh program LCD Serial. Tekan ESC untuk keluar \n");
do {
if (kbhit()){
c = getch();
outportb(PORT1, c);
printf("%c",c);
}
} while (c !=27);
Tidak ada komentar:
Posting Komentar