منافذ الدخل / الخرج I/O PORTS للميكروكونترولر PIC18F2550 :
1- السجلات PORTA, TRISA , LATA :
السجل PORTA هو سجل بسعة 8 بت ، لمنفذ ثنائى الاتجاه . سجل اتجاه البيانات المقابل هو TRISA .
· تحديد (= 1) بت بالسجل TRISA سيجعل طرف المنفذ PORTA المقابل "مدخل" input (أى يتم وضع مشغل الخرج المناظر فى وضع "المعاوقة – المرتفعة" ) .
· مسح (= 0) بت بالسجل TRISA سيجعل طرف المنفذ PORTA المقابل "مخرج" output ( أى يتم وضع محتويات "مزلاج الخرج" output latch على الطرف المختار )
· قراءة السجل PORTA ، تقرأ حالة الأطراف ، والكتابة إليه سوف تكتب إلى "مزلاج المنفذ" .
· سجل مزلاج البيانات LATA معين أيضا بالذاكرة . القراءة – التعديل – الكتابة على السجل LATA ، يقرأ ويكتب قيمة "الخرج الممسوك" للمنفذ PORTA .
· الطرف RA4(Pin 6) يتقاسم الوظائف "المتعددة" مع مدخل ساعة موديول المؤقت Timer0 وليصبح الطرف RA4/T0CKI .
· الطرف RA6(Pin 10) يتقاسم الوظائف المتعددة مع طرف المذبذب الرئيسى ، يتم تمكينه كمذبذب أو طرف I/O بواسطة تحديد المذبذب فى سجل التكوين Register 1H (تفاصيل بتات التكوين لاحقا). عندما لا يستخدم كطرف منفذ ، فإن RA6 والبتات المرتبطة به بالسجلات TRIS و LAT يتم قراءتها كصفر "0" .
· كما أن الطرف RA4(Pin 6) يتقاسم الوظائف المتعددة مع موديول USB ، فهو يخدم كمستقبل للدخل من مرسل - مستقبل USB خارجى (تفاصيل ؟إعداد موديول USB لاحقا) .
· العديد من أطراف المنفذ PORTA تتقاسم الوظائف "كمداخل تناظرية" ، و"مداخل للجهود المرجعية" VREF+ , VREF- ، و "مخرج لجهد المرجع للمقارن" .
· عمل الأطراف RA5(Pin 7) والأطراف RA0:RA3(Pins 2:5) كمداخل للمحول من تناظرى إلى رقمى A/D يتم تحديده (اختياره) عن طريق تحديد أو مسح clearing/setting بتات التحكم فى السجل ADCON1 ( سجل التحكم رقم 1 فى المحول A/D) .
ملاحظة :
عند إعادة التعيين نتيجة توصيل القدرة Power-on Reset (بداية التشغيل) ، يتم إعداد RA5 و RA0:RA3 "كمداخل تناظرية" وتقرأ كصفر (0) . الطرف RA4 يتم إعداده "كمدخل رقمى".
· السجل TRISA يتحكم فى اتجاه الأطراف RA ، حتى عندما يجرى استخدامها كمداخل تناظرية . يجب على المستخدم التأكد من أن البتات بالسجل TRISA تكون فى حالة التحديد set(=1) عند استخدامها كمداخل تناظرية .
مثال لتهيئة المنفذ PORTA :
بلغة الأسمبلى :
كود:
CLRF PORTA ; Initialize PORTA by clearing output data latches
CLRF LATA ; Alternate method to clear output data latches
MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0CFh ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<3:0> as inputs
; RA<5:4> as outputs
بلغة السى مع المترجم ميكروسى برو :
كود:
PORTA = 0 ; // Initialize PORTA by clearing output data latches
LATA = 0 ; // Alternate method to clear output data latches
ADCON1 = 0x0F ; // Configure A/Dfor digital inputs(=00001111)
CMCON = 0x07 ; // Configure comparatorsfor digital input
TRISA = 0xCF ; //Value used to initialize datadirection(=11001111)
//Set RA<3:0> as inputs ,RA<5:4> as outputs
برنامج بسيط :
كود:
/********************************************************************
FLASHING LED
----------------------
In this project an LED is connected to bit 0 of PORT A (RA0) of a PIC18F2550 type microcontroller (any other PIC microcontroller can also be used in this project). The microcontroller is operated from an 8MHz crystal. The LED is flashed continuously with 1 second intervals.
*****************************************************************/
void main()
{
ADCON1 = 0x0F ; // Configure A/Dfor digital inputs(=00001111)
CMCON = 0x07 ; // Configure comparatorsfor digital input
TRISA = 0; // Configure PORT A as outputs
for(;;) // FOREVER loop
{
PORTA.RA0 = 1; // Turn ON LED
Delay_Ms(1000); // Wait 1 second
PORTA.RA0 = 0; // Turn OFF LED
Delay_Ms(1000); // Delay 1 second
}
}