القريه الالكترونيه البديلة
اهلا ومرحبا بك فى منتدى القريه الالكترونيه البديل

روبوت الى بالميكروكونترولر

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

روبوت الى بالميكروكونترولر

مُساهمة  Admin في الأحد يوليو 10, 2011 1:19 am

السلام عليكم و رحمه الله
اليكم دائره روبوت متحرك يعمل بالمايكروكنترولر pic16f84
و هو تصميم لربوت متحرك يتحرك بحريه دون ان يصطدم بالاشياء و يعتمد على البرنامج المدخل الى عقل الروبوت و هو المايكرو كنترولر
و الدائره الخاصه بالروبوت كالاتى

http://www.electvillage.com/up05/up/cerb_sch.gif

اما برنامج المايكروكونترولر فهو كالاتى


;CERBERES : MINI ROBOT WITH IR EYES ;
;USES PIC16F84 CONTROLLER ;
;WRITTEN IN MICROCHIP ASSEMBLY USE MPASM ASSEMBLER FROM MPLAB ;
;MPLAB CAN BE DOWNLOADED FROM WWW.MICROCHIP.COM ;

;***SET UP THE CONTANTS & VARIABLES****

LIST P=16C84
ERRORLEVEL -302 ;SUPPRESS BANK SELECTION MESSAGES

STATUS EQU H'03' ;STATUS REGISTER
TRISB EQU H'86' ;TRISB REGISTER FOR SETUP OF PORTB
PORTB EQU H'06' ;PORTB REGISTER TO DRIVE PORT B
COUNT1 EQU H'0C' ;COUNT VARIABLE 1 IS IN GENERAL PURPOSE REG 08H
COUNT2 EQU H'0D' ;COUNT VARIABLE 2 IS IN GENERAL PURPOSE REG 09H

;***SET UP PORT B IN & OUTPUT****
BSF STATUS,5 ;SWITCH TO BANK0 TO SET UP PORT B
MOVLW B'11110000' ;RB7,6,5,4 IS INPUT
MOVWF TRISB ;RB3,2,1,0 IS OUTPUT
BCF STATUS,5 ;SWITCH BACK TO BANK0 TO USE PORT B

;***MAIN PROGRAM****
START MOVLW B'00000101' ;MAKE RB0&2 HIGH: MOVE FORWARD
MOVWF PORTB ;
MOVLW H'FE' ;RESET COUNT1 TO 254
MOVWF COUNT1 ;
MOVLW H'FE' ;RESET COUNT2 TO 254
MOVWF COUNT2 ;
BTFSS PORTB,5 ;CHECK RB5 (INPUT); IF IT IS LOW
CALL BACKL ;THEN EXECUTE BACKLEFT ROUTINE
BTFSS PORTB,6 ;CHECK RB6 (INPUT); IF IT IS LOW
CALL BACKR ;EXECUTE BACKRIGHT ROUTINE
GOTO START ;RETURN TO LABEL START

;***BACKLEFT ROUTINE****
BACKL MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00001001' ;MAKE RB2&3 HIGH: ROTATE LEFT
MOVWF PORTB ;
CALL DELAY ;
RETURN
;***BACKRIGHT ROUTINE****
BACKR MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00000110' ;MAKE RB2&3 HIGH: ROTATE RIGHT
MOVWF PORTB ;
CALL DELAY ;
RETURN

DELAY MOVLW H'EE' ;RESET ALL COUNTER VARIABLES
MOVWF COUNT1
MOVLW H'99'
MOVWF COUNT2

LOOP1 CLRWDT ;RESET THE WATCHDOG TIMER
DECFSZ COUNT1,1 ;this is a delay loop
GOTO LOOP1 ;tuned to make Cerberes
DECFSZ COUNT2,1 ;turn about 90 degrees
GOTO LOOP1
RETURN

END;

اما برنامج المايكروكونترولر فهو كالاتى
;CERBERES : MINI ROBOT WITH IR EYES ;
;USES PIC16F84 CONTROLLER ;
;WRITTEN IN MICROCHIP ASSEMBLY USE MPASM ASSEMBLER FROM MPLAB ;
;MPLAB CAN BE DOWNLOADED FROM WWW.MICROCHIP.COM ;

;***SET UP THE CONTANTS & VARIABLES****

LIST P=16C84
ERRORLEVEL -302 ;SUPPRESS BANK SELECTION MESSAGES

STATUS EQU H'03' ;STATUS REGISTER
TRISB EQU H'86' ;TRISB REGISTER FOR SETUP OF PORTB
PORTB EQU H'06' ;PORTB REGISTER TO DRIVE PORT B
COUNT1 EQU H'0C' ;COUNT VARIABLE 1 IS IN GENERAL PURPOSE REG 08H
COUNT2 EQU H'0D' ;COUNT VARIABLE 2 IS IN GENERAL PURPOSE REG 09H

;***SET UP PORT B IN & OUTPUT****
BSF STATUS,5 ;SWITCH TO BANK0 TO SET UP PORT B
MOVLW B'11110000' ;RB7,6,5,4 IS INPUT
MOVWF TRISB ;RB3,2,1,0 IS OUTPUT
BCF STATUS,5 ;SWITCH BACK TO BANK0 TO USE PORT B

;***MAIN PROGRAM****
START MOVLW B'00000101' ;MAKE RB0&2 HIGH: MOVE FORWARD
MOVWF PORTB ;
MOVLW H'FE' ;RESET COUNT1 TO 254
MOVWF COUNT1 ;
MOVLW H'FE' ;RESET COUNT2 TO 254
MOVWF COUNT2 ;
BTFSS PORTB,5 ;CHECK RB5 (INPUT); IF IT IS LOW
CALL BACKL ;THEN EXECUTE BACKLEFT ROUTINE
BTFSS PORTB,6 ;CHECK RB6 (INPUT); IF IT IS LOW
CALL BACKR ;EXECUTE BACKRIGHT ROUTINE
GOTO START ;RETURN TO LABEL START

;***BACKLEFT ROUTINE****
BACKL MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00001001' ;MAKE RB2&3 HIGH: ROTATE LEFT
MOVWF PORTB ;
CALL DELAY ;
RETURN
;***BACKRIGHT ROUTINE****
BACKR MOVLW B'00001010' ;MAKE RB1&3 HIGH: MOVE BACKWARD
MOVWF PORTB ;
CALL DELAY ;
MOVLW B'00000110' ;MAKE RB2&3 HIGH: ROTATE RIGHT
MOVWF PORTB ;
CALL DELAY ;
RETURN

DELAY MOVLW H'EE' ;RESET ALL COUNTER VARIABLES
MOVWF COUNT1
MOVLW H'99'
MOVWF COUNT2

LOOP1 CLRWDT ;RESET THE WATCHDOG TIMER
DECFSZ COUNT1,1 ;this is a delay loop
GOTO LOOP1 ;tuned to make Cerberes
DECFSZ COUNT2,1 ;turn about 90 degrees
GOTO LOOP1
RETURN

END;
تظهر فى هذه الصوره تصميم عين الروبوت
http://www.electvillage.com/up05/up/sensor.gif

Admin
Admin

عدد المساهمات : 43
تاريخ التسجيل : 09/07/2011

معاينة صفحة البيانات الشخصي للعضو http://qariya.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى