Karena Port 1, 2 dan 3 telah memiliki pullup internal yang pasti, mereka dinamakan sebagai port-port kuasi-dwi-arah (quasi-bidirectional). Saat dikonfigurasi sebagai masukan, maka ditarik tinggi dan memberikan arus (source current) saat ditarik rendah secara eksternal. Port 0, di sisi lain, merupakan Port 0 dwi-arah yang sebenarnya, karena akan mengambang jika dikonfigurasi sebagi masukan.
Fungsi reset atau saat Power ON akan menuliskan ‘1′ ke seluruh bit-bit pengancing (latch) port pada keluarga AT89. Jika kemudian ‘0′ dituliskan ke pengancing, pengancing dapat dikonfigurasi sebagai masukan jika ‘1′ dituliskan padanya.
Contoh rangkaian dan aplikasi
Rangkain minimum untuk menghidupkan 8 LED melalui Port 1 ditunjukkan pada gambar dibawah ini. Yang perlu diperhatikan adalah konfigurasi rangkaian LED itu sendiri, yaitu Common Anode (CA), artinya untuk menghidupkan LED pada Port 1 yang bersangkutan, harus dikirim logika ‘0′. Hal ini berkaitan dengan penjelasan sebelumnya, Jika ‘0′ kita tulis ke Port 0 maka luaran dari lacth (yang ) akan menghidupkan FET sehingga baik kaki Port 0 maupun resistor pullup internal akan di pulled-low (secara internal juga), sehingga LED yang terhubungkan secara CA bisa menyala.
Sedangkan jika menggunakan rangkaian Common Khatode (CK), untuk menyalakan LED butuh penulisan ‘1′, namun penulisan ‘1′ ini menyebabkan Port 0 menjadi masukan berimpedansi (karena adanya resistor pullup internal) dan hanya cocok untuk masukan bukan keluaran (arus dari pullup internal tidak kuat untuk menyalakan LED karena ordenya uA, sedangkan keluarannya bisa mencapai sekitar 3,8 mA). Hal ini berlaku juga untuk Port 2 dan Port 3. Penggunaan resistor 330 ohm sebagai pembatas arus, dengan tegangan Vcc 5 volt maka arusnya sekitar 15 mA dan ini cukup untuk menghidupkan LED (biasanya sekitar 10 mA).
Program bab3_01.asm merupakan aplikasi untuk membuat kelompok 4 (empat) LED mati-hidup secara bergantian (flip-flop):