Apa perbedaan antara membaca PORTA dan PINA? Apa hubungan antara port dan pinnya? Saya benar-benar bingung !!! contoh membaca PORT: (pin baca tidak berguna di sini)
Perakitan f = 1MHz ATmega8 Saya perlu melengkapi PORTB setiap 1ms. (Dutycycle = 50%)
LDI R16,$FF
OUT DDRB,R16
MAIN: LDI R16,00
DELAY:CPI R16,200
BREQ LOOP
INC R16
RJMP DELAY
loop:IN R17,PORTB
COM R17
OUT PORTB,R17
OUT R17,PORTB
RJMP MAIN
Jawaban:
PORT adalah buffer OUTPUT, PIN adalah buffer INPUT.
Ketika Anda ingin mengatur pin ke tegangan "tinggi" atau "rendah", tulis ke register PORT.
Ketika Anda ingin tahu tegangan apa yang saat ini disajikan ke pin, baca register PIN.
Bit register ini mewakili pin yang sesuai dari port input / output untuk keperluan umum.
Berikut ini adalah skema sederhana dari elektronik di dalam AVR yang terhubung ke satu pin (buka di sini untuk lembar data lengkap).
Blok sirkuit ini diulang untuk setiap pin. Delapan dari ini membentuk port (port A, misalnya).
Mulai dari alun-alun paling kiri (yang mewakili koneksi fisik ke dunia luar), Anda dapat melihat tiga jalur:
Perlu dicatat bahwa beberapa atau semua sirkuit ini dapat dilewati ketika pin dibagi dengan periferal internal. Misalnya, Konverter Analog-ke-Digital (ADC).
sumber
Saya setuju dengan jawaban DrFriedParts sepenuhnya, namun, saya ingin menambahkan itu, Anda memang dapat membaca
PORT
untuk mengetahui apakah port / pin dikonfigurasi sebagai OUTPUT tinggi atau rendah (ketikaDDR
=1
, port / pin dikonfigurasi sebagai output) atau apakah internal resistor pullup diaktifkan (ketikaDDR
=0
, port / pin dikonfigurasi sebagai input). Dengan cara ini port port dapat digunakan (dengan cara yang agak konyol) sebagai penyimpanan umum atau untuk menyampaikan informasi tentang keadaan output / input pullup, seperti dalam skenario berikutMungkin salah satu bagian dari program Anda menulis sesuatu ke port atau mengaktifkan / menonaktifkan pullup, dan bagian lain dari program membaca
PORT
untuk mengetahui bagaimana itu dikonfigurasikan. MembacaPORT
segera setelah menulisPORT
tidak masuk akal: setelah menulisPORT
, Anda tahu apa nilainyaPORT
.sumber
Untuk keperluan Anda, membaca dari PORT sebenarnya masuk akal: Pin yang dimaksud adalah pin keluaran, dan Anda hanya ingin membaca nilai terakhir yang Anda tulis, beralih, dan tulis kembali. Jadi Anda menggunakan register port sebagai byte dari RAM yang dapat diamati secara eksternal.
Di sisi lain, untuk aplikasi khusus ini, Anda cukup menyimpan nilai dalam register dan bahkan tidak perlu membaca kembali register PORT.
sumber