Sistem Tertanam - Pemrograman I / O
Pada 8051, operasi I / O dilakukan menggunakan empat port dan 40 pin. Diagram pin berikut menunjukkan detail dari 40 pin. Port operasi I / O mencadangkan 32 pin di mana setiap port memiliki 8 pin. 8 pin lainnya ditetapkan sebagai V cc , GND, XTAL1, XTAL2, RST, EA (bar), ALE / PROG (bar), dan PSEN (bar).
Ini adalah 40 Pin PDIP (Paket Plastik Ganda Inline)
Note- Dalam paket DIP, pin pertama dan pin terakhir dapat dikenali dari potongan di bagian tengah IC. Pin pertama ada di sebelah kiri tanda potong ini dan pin terakhir ( dalam hal ini pin ke- 40 ) ada di sebelah kanan tanda potong.
Port I / O dan Fungsinya
Empat port P0, P1, P2, dan P3, masing-masing menggunakan 8 pin, menjadikannya port 8-bit. Setelah RESET, semua port dikonfigurasi sebagai input, siap digunakan sebagai port input. Ketika 0 pertama ditulis ke port, itu menjadi output. Untuk mengkonfigurasi ulang sebagai input, angka 1 harus dikirim ke port.
Port 0 (Pin No 32 - Pin No 39)
Ini memiliki 8 pin (32 hingga 39). Ini dapat digunakan untuk input atau output. Tidak seperti port P1, P2, dan P3, kami biasanya menghubungkan resistor pull-up P0 ke 10K-ohm untuk menggunakannya sebagai port input atau output sebagai saluran pembuangan terbuka.
Ini juga ditetapkan sebagai AD0-AD7, memungkinkannya digunakan sebagai alamat dan data. Dalam kasus 8031 (yaitu ROMless Chip), ketika kita perlu mengakses ROM eksternal, maka P0 akan digunakan untuk Address dan Data Bus. ALE (Pin no 31) menunjukkan jika P0 memiliki alamat atau data. Saat ALE = 0, ia menyediakan data D0-D7, tetapi jika ALE = 1, ia memiliki alamat A0-A7. Jika tidak ada koneksi memori eksternal yang tersedia, P0 harus dihubungkan secara eksternal ke resistor pull-up 10K-ohm.
MOV A,#0FFH ;(comments: A=FFH(Hexadecimal i.e. A=1111 1111)
MOV P0,A ;(Port0 have 1's on every pin so that it works as Input)
Port 1 (Pin 1 hingga 8)
Ini adalah port 8-bit (pin 1 hingga 8) dan dapat digunakan sebagai input atau output. Tidak memerlukan resistor pull-up karena sudah terhubung secara internal. Setelah reset, Port 1 dikonfigurasi sebagai port input. Kode berikut dapat digunakan untuk mengirim nilai bolak-balik 55H dan AAH ke Port 1.
;Toggle all bits of continuously
MOV A,#55
BACK:
MOV P2,A
ACALL DELAY
CPL A ;complement(invert) reg. A
SJMP BACK
Jika Port 1 dikonfigurasi untuk digunakan sebagai port keluaran, kemudian untuk digunakan sebagai port masukan lagi, programlah dengan menulis 1 ke semua bitnya seperti pada kode berikut.
;Toggle all bits of continuously
MOV A ,#0FFH ;A = FF hex
MOV P1,A ;Make P1 an input port
MOV A,P1 ;get data from P1
MOV R7,A ;save it in Reg R7
ACALL DELAY ;wait
MOV A,P1 ;get another data from P1
MOV R6,A ;save it in R6
ACALL DELAY ;wait
MOV A,P1 ;get another data from P1
MOV R5,A ;save it in R5
Port 2 (Pin 21 hingga 28)
Port 2 menempati total 8 pin (pin 21 hingga 28) dan dapat digunakan untuk operasi input dan output. Sama seperti P1 (Port 1), P2 juga tidak memerlukan resistor Pull-up eksternal karena sudah terhubung secara internal. Ini harus digunakan bersama dengan P0 untuk memberikan alamat 16-bit untuk memori eksternal. Jadi itu juga ditetapkan sebagai (A0 – A7), seperti yang ditunjukkan pada diagram pin. Ketika 8051 dihubungkan ke memori eksternal, ini menyediakan jalur untuk 8-bit atas dari alamat 16-bit, dan tidak dapat digunakan sebagai I / O. Setelah reset, Port 2 dikonfigurasi sebagai port input. Kode berikut dapat digunakan untuk mengirim nilai bolak-balik dari 55H dan AAH ke port 2.
;Toggle all bits of continuously
MOV A,#55
BACK:
MOV P2,A
ACALL DELAY
CPL A ; complement(invert) reg. A
SJMP BACK
Jika Port 2 dikonfigurasi untuk digunakan sebagai port keluaran, kemudian untuk digunakan sebagai port masukan lagi, programlah dengan menulis 1 ke semua bit-nya seperti pada kode berikut.
;Get a byte from P2 and send it to P1
MOV A,#0FFH ;A = FF hex
MOV P2,A ;make P2 an input port
BACK:
MOV A,P2 ;get data from P2
MOV P1,A ;send it to Port 1
SJMP BACK ;keep doing that
Port 3 (Pin 10 hingga 17)
Ini juga dari 8 bit dan dapat digunakan sebagai Input / Output. Porta ini menyediakan beberapa sinyal yang sangat penting. P3.0 dan P3.1 masing-masing adalah RxD (Receiver) dan TxD (Transmitter) dan secara kolektif digunakan untuk Komunikasi Serial. Pin P3.2 dan P3.3 digunakan untuk interupsi eksternal. P3.4 dan P3.5 masing-masing digunakan untuk timer T0 dan T1. P3.6 dan P3.7 adalah pin Write (WR) dan Read (RD). Ini adalah pin rendah aktif, artinya mereka akan aktif ketika 0 diberikan kepada mereka dan ini digunakan untuk menyediakan operasi Baca dan Tulis ke ROM Eksternal dalam sistem berbasis 8031.
P3 Bit | Fungsi | Pin |
---|---|---|
P3.0 | RxD | 10 |
P3.1 < | TxD | 11 |
P3.2 < | Pelengkap INT0 | 12 |
P3.3 < | INT1 | 13 |
P3.4 < | T0 | 14 |
P3.5 < | T1 | 15 |
P3.6 < | WR | 16 |
P3.7 < | Pelengkap RD | 17 |
Peran Ganda Port 0 dan Port 2
Dual role of Port 0- Port 0 juga ditetapkan sebagai AD0 – AD7, karena dapat digunakan untuk penanganan data dan alamat. Saat menghubungkan 8051 ke memori eksternal, Port 0 dapat menyediakan alamat dan data. Mikrokontroler 8051 kemudian menggandakan input sebagai alamat atau data untuk menghemat pin.
Dual role of Port 2- Selain berfungsi sebagai I / O, Port P2 juga digunakan untuk menyediakan bus alamat 16-bit untuk memori eksternal bersama dengan Port 0. Port P2 juga ditetapkan sebagai (A8– A15), sedangkan Port 0 menyediakan 8-bit yang lebih rendah melalui A0 – A7. Dengan kata lain, kita dapat mengatakan bahwa ketika 8051 dihubungkan ke memori eksternal (ROM) yang dapat mencapai maksimum 64KB dan ini dimungkinkan oleh bus alamat 16 bit karena kita tahu 216 = 64KB. Port2 digunakan untuk 8-bit atas dari alamat 16 bit, dan tidak dapat digunakan untuk I / O dan ini adalah cara kode Program ROM eksternal ditangani.
Sambungan Perangkat Keras Pin
Vcc - Pin 40 menyediakan pasokan ke Chip dan itu adalah +5 V.
Gnd - Pin 20 memberikan landasan untuk Referensi.
XTAL1, XTAL2 (Pin no 18 & Pin no 19)- 8051 memiliki osilator on-chip tetapi membutuhkan jam eksternal untuk menjalankannya. Kristal kuarsa dihubungkan antara pin XTAL1 & XTAL2 pada chip. Kristal ini juga membutuhkan dua kapasitor 30pF untuk menghasilkan sinyal dengan frekuensi yang diinginkan. Satu sisi setiap kapasitor dihubungkan ke ground. IC 8051 tersedia dalam berbagai kecepatan dan semuanya tergantung pada kristal Quartz ini, misalnya mikrokontroler 20 MHz membutuhkan kristal dengan frekuensi tidak lebih dari 20 MHz.
RST (Pin No. 9)- Ini adalah pin Input dan pin High aktif. Setelah memberikan pulsa tinggi pada pin ini, yaitu 1, mikrokontroler akan mereset dan menghentikan semua aktivitas. Proses ini dikenal sebagaiPower-On Reset. Mengaktifkan power-on reset akan menyebabkan semua nilai di register hilang. Ini akan mengatur penghitung program ke semua 0. Untuk memastikan input Reset yang valid, pulsa tinggi harus tinggi untuk minimal dua siklus mesin sebelum dibiarkan rendah, yang bergantung pada nilai kapasitor dan laju pengisiannya. (Machine Cycle adalah jumlah minimum frekuensi yang dibutuhkan satu instruksi dalam eksekusi).
EA or External Access (Pin No. 31)- Ini adalah pin masukan. Pin ini adalah pin rendah yang aktif; setelah menerapkan denyut nadi rendah, itu akan diaktifkan. Dalam kasus mikrokontroler (8051/52) memiliki ROM on-chip, pin EA (bar) dihubungkan ke V cc . Namun pada mikrokontroler 8031 yang tidak memiliki ROM on-chip, kode tersebut disimpan dalam ROM eksternal dan kemudian diambil oleh mikrokontroler. Dalam hal ini, kita harus menghubungkan (pin no 31) EA ke Gnd untuk menunjukkan bahwa kode program disimpan secara eksternal.
PSEN or Program store Enable (Pin No 29)- Ini juga merupakan pin rendah yang aktif, yaitu, ini akan diaktifkan setelah menerapkan pulsa rendah. Ini adalah pin keluaran dan digunakan bersama dengan pin EA pada Sistem berbasis 8031 (yaitu ROMLESS) untuk memungkinkan penyimpanan kode program dalam ROM eksternal.
ALE or (Address Latch Enable)- Ini adalah Pin Output dan aktif tinggi. Ini terutama digunakan untuk IC 8031 untuk menghubungkannya ke memori eksternal. Ini dapat digunakan saat memutuskan apakah pin P0 akan digunakan sebagai Bus alamat atau bus Data. Jika ALE = 1, maka pin P0 berfungsi sebagai bus Data dan jika ALE = 0, pin P0 berfungsi sebagai bus Alamat.
Port I / O dan Bit Addressability
Ini adalah fitur yang paling banyak digunakan pada 8051 saat menulis kode untuk 8051. Kadang-kadang kita hanya perlu mengakses 1 atau 2 bit port, bukan keseluruhan 8-bit. 8051 menyediakan kemampuan untuk mengakses bit individu dari port.
Saat mengakses port dengan cara bit tunggal, kami menggunakan sintaks "SETB X. Y" di mana X adalah nomor port (0 hingga 3), dan Y adalah nomor bit (0 hingga 7) untuk bit data D0-D7 dimana D0 adalah LSB dan D7 adalah MSB. Misalnya, "SETB P1.5" menetapkan bit 5 tinggi pada port 1.
Kode berikut menunjukkan bagaimana kita dapat mengaktifkan bit P1.2 secara terus menerus.
AGAIN:
SETB P1.2
ACALL DELAY
CLR P1.2
ACALL DELAY
SJMP AGAIN
Instruksi Single-Bit
Instruksi | Fungsi |
---|---|
SETB bit | Atur bitnya (bit = 1) |
Bit CLR | bersihkan bit (bit = 0) |
Bit CPL | melengkapi bit (bit = NOT bit) |
Bit JB, target | lompat ke target jika bit = 1 (lompat jika bit) |
Bit JNB, target | lompat ke target jika bit = 0 (lompat jika tidak ada bit) |
Bit JBC, target | lompat ke target jika bit = 1, hapus bit (lompat jika bit, lalu hapus) |