الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حد يا جماعة يبص معايا على الكود داه

مغلق
بدأه prog_omer في 12 فبراير 2005 · 0 رد · 496 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1

أريد استقبال قيمتين Analoge من على PortA,1 و PortA,2 وتحويلهما إلى قيم رقمية ولكن أريد عند دخول أي قيمة يحدث Interrupt وقد فكرت في هذا الكود :

;****************  Program Start  ***********************
        org     0              ;Reset Vector
        goto    init
        org     4              ;Interrupt Vector
        goto    int

;****************  Initial Process  *********************

init

BCF STATUS, RP0;  (bank0)
BCF STATUS, RP1;

CLRF PORTA;
CLRF PORTB;
CLRF PORTC;
CLRF PORTD;

BSF STATUS, RP0;  (bank1)

MOVLW 0x03;  	(port A0,1 analoge input)
MOVWF TRISA;

MOVLW 0x00;  (port B digital output)
MOVWF TRISB;

MOVLW 0x00;  (port C digital output)
MOVWF TRISC;

MOVLW 0x00;  (port D digital output)
MOVWF TRISD;

BCF STATUS, RP0;	(bank0)

MOVLW 0x32;  (Store 50 in registers 21h, 22h, 23h)
MOVWF 21h;
MOVWF 22h;
MOVWF 23h;

MOVLW 0x81;
MOVWF ADCON0;

BSF STATUS, RP0;  (bank1)

MOVLW 0x8E;
MOVWF ADCON1;


MOVLW b'00000001';	(CCP2IE=Enable)
MOVLW PIE2;             (Set PIE2 register)
BCF STATUS, RP0;    	(Change to Bank0)
MOVLW b'11000000';	(GIE=ON PEIE=ON)
MOVWF INTCON;          	(Set INTCON register)
WAIT
GOTO $;


INT
CLRF PIR2;  (clear interrupt flage)
BTFSC ADCON0, 2;	(check the end of conversation)
GOTO $-1;

MOVF 21h,0;
BSF STATUS, RP0;
SUBWF ADRESL,0;
BTFSC W, 7;
BCF STATUS, RP0;
BSF PORTB, 1;
BCF PORTB, 0;
BCF PORTB, 1;
BSF STATUS, RP0;
MOVF ADRESL, 0;
BCF STATUS, RP0;
MOVWF 21h;

هنا المفروض ال Interrupt الثاني لأخذ القيمة التماثلية الثانية

BSF ADCON0,3;
BTFSC ADCON0, 2;
GOTO $-1;

MOVF ADRESL, 0;
BCF STATUS, RP0;
SUBLW 0x32;
BTFSC W, 7;
CALL STEPPER1;
CALL STEPPER2;
BCF PIR1, ADIE;

STEPPER1: 
MOVF 22h, 0;
BSF STATUS, RP0;
SUBWF ADRESL, 0;
BCF STATUS, RP0;
BTFSC W, 7;
BSF PORTC, 1;
BSF PORTC, 0;
BCF PORTC, 0;
BCF PORTC, 1;
BSF STATUS, RP0;
MOVF ADRESL, 0;
BCF STATUS, RP0;
MOVWF 22h;
RETERN;

STEPPER2: 
MOVF 23h, 0;
BSF STATUS, RP0;
SUBWF ADRESL, 0;
BCF STATUS, RP0;
BTFSC W, 7;
BSF PORTD, 1;
BSF PORTD, 0;
BCF PORTD, 0;
BCF PORTD, 1;
BSF STATUS, RP0;
MOVF ADRESL, 0;
BCF STATUS, RP0;
MOVWF 22h;
RETERN;

ولكني أشعر أن الجزء الخاص بال A/D به أخطاء فأرجو المساعدة

تم تعديل هذه المشاركة بواسطة prog_omer في 12 فبراير 2005 في 21:58

هذا الموضوع مغلق.

مواضيع مشابهة