قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

yassin082
:: مهندس ::
تاريخ التسجيل: Aug 2007
المشاركات: 3
نشاط [ yassin082 ]
قوة السمعة:0
قديم 07-01-2010, 12:41 PM المشاركة 1   
افتراضي أعينوني, لدي مشكل مع pic16F877 , لاستقبال الداتا من الحاسوب الى البيك عن طريق rs232 Twitter FaceBook Google+



المرجو مساعدتي في حل مشكلتي مع pic16F877 , قمت باستعماله لاستقبال الداتا من الحاسوب عن طريق rs232 (علما انني نجحت في كتابة كود خاص في ارسال الداتا من البيك الى الحاسوب عن طريق rs232 وقمت بتجربته, كل شئ جيد) , استعملت visual basic لارسل الداتا من الحاسوب الى البيك "Mscomm.output = "F .
مشكلتي مع البيت RCIF , نعلم ان هذا البيت ياخذ قيمة 1 عندما يكون RCREG ممتلئ يعنى ان RCREG قد استقبل الداتا المرسلة الى البيك بنجاح ,قيمة RCIF تكون 0 مادام RCRG فارغ اي البيك لم يستقبل الداتا.
مشكلتي و هي ان RCIF ياخذ قيمة 1 تلقائيا بدون ان ارسل الداتا و كذلك رغم انني احاول ارسال الداتا, البيك لا يستقبل شئ.
ملاحظة : - لا يوجد مشكلة بالهارديرفقد جربت كل عنصربالدارة, لا يوجد مشكلة و عملية الارسال من البيك الى الحاسوب تمت بنجاح.
الكود المستعمل في استقبال الداتا من الحاسوب :


movlw d'129'
movwf SPBRG
movlw b'0010010'
movwf TXSTA
bank0
movlw b'10010000'
movwf RCSTA

RecLoop
nop
btfss PIR1,RCIF
goto RecLoop
movf RCREG,w
return


استعمل هذا الكود داخل main


can you help me please


التعديل الأخير تم بواسطة : yassin082 بتاريخ 11-01-2010 الساعة 09:24 AM
اعلانات

yassin082
:: مهندس ::
تاريخ التسجيل: Aug 2007
المشاركات: 3
نشاط [ yassin082 ]
قوة السمعة:0
قديم 09-01-2010, 05:45 PM المشاركة 2   
افتراضي


هل من مساااااااااعد, عاجل جدا

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 447
نشاط [ محمد50 ]
قوة السمعة:90
قديم 09-01-2010, 06:50 PM المشاركة 3   
افتراضي


هل من مساااااااااعد, عاجل جدا
السلام عليكم أخى جرب هذا ربما يكون الاقرب اليك

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
;
; SERCOM.ASM MPB 10-9-05
;................................................. ..............
;
; Test RS232 communications using the
; USART Asynchronous Transmit and Receive
;
; The Proteus Virtual Terminal allows ASCII characters
; to be generated from the keyboard and displayed.
; The program outputs a fixed message to the display
; from a table, and then displays numbers input from the
; terminal on a BCD 7-segment LED display.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;
PROCESSOR 16F877 ; define MPU
__CONFIG 0x3731 ; XT clock (4MHz)
; LABEL EQUATES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INCLUDE "P16F877.INC" ; Standard labels
Point EQU 020
Inchar EQU 021
; Initialise ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;

; Initialise ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;
ORG 0 ; Place machine code
NOP ; Required for ICD mode
BANKSEL TRISD ; Select bank 1
CLRF TRISD ; Display outputs
BCF TXSTA,TX9 ; Select 8-bit tx
BCF TXSTA,TXEN ; Disable transmission
BCF TXSTA,SYNC ; Asynchronous mode
BSF TXSTA,BRGH ; High baud rate
MOVLW D'25' ; Baud rate value ..
MOVWF SPBRG ; .. 9600 baud, 4MHz
BSF TXSTA,TXEN ; Enable transmission
BANKSEL RCSTA ; Select bank 0
BSF RCSTA,SPEN ; Enable serial port
; MAIN LOOP ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;

CALL writ ; Message on terminal
readin CALL read ; Get input from terminal
GOTO readin ; Keep reading until reset

; SUBROUTINES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;

; Write message to terminal......................................

write CLRF Point ; Table pointer = 0
next MOVF Point,W ; Load table pointer
CALL mestab ; Get character
CALL sencom ; Output to terminal
INCF Point ; Point to next
MOVLW D'14' ; Number of chars + 1
SUBWF Point,W ; Check pointer
BTFSS STATUS,Z ; Last character done?
GOTO next ; No - next
RETURN ; All done

; Read input numbers from terminal...............................

read BSF RCSTA,CREN ; Enable reception
waitin BTFSS PIR1,RCIF ; Character received?
GOTO waitin ; no - wait
MOVF RCREG,W ; get input character
MOVWF Inchar ; store input character
MOVLW 030 ; ASCII number offset
SUBWF Inchar,W ; Calculate number
MOVWF PORTD ; display it
RETURN ; done
Transmit a character ..........................................

sencom MOVWF TXREG ; load transmit register
waitot BTFSS PIR1,TXIF ; sent?
GOTO waitot ; no
RETURN ; yes
; Table of message characters....................................

mestab ADDWF PCL ; Modify program counter
RETLW 'E' ; Point = 0
RETLW 'N' ; Point = 1
RETLW 'T' ; Point = 2
RETLW 'E' ; Point = 3
RETLW 'R' ; Point = 4
RETLW ' ' ; Point = 5
RETLW 'N' ; Point = 6
RETLW 'U' ; Point = 7
RETLW 'M' ; ; Point = 8
RETLW 'B' ; Point = 9
RETLW 'E' ; Point = 10
RETLW 'R' ; Point = 11
RETLW ':' ; Point = 12
RETLW ' ' ; Point = 13
END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


yassin082
:: مهندس ::
تاريخ التسجيل: Aug 2007
المشاركات: 3
نشاط [ yassin082 ]
قوة السمعة:0
قديم 09-01-2010, 07:59 PM المشاركة 4   
افتراضي


شكرا أخي على اهتمامك بموضوعي

الكود المخصص لقراءة الداتا المرسلة من الحاسوب الذي ارسلته لي هو نفسه الذي كتبنه و جربته و لكن لا يعمل, سبب ذلك:
ان البيت RCIF ياخذ قيمة 1 تلقائيا بدون أن يكون RCREG ممتلئ لأنني لاحظت أن LEDs نشتعل قبل أن أرسل أي داتا أي أنه يخرج من
RecLoop
nop
btfss PIR1,RCIF
goto RecLoop
MOVLW 0xFF
MOVWF PORTD ; بهذا البورت وضعت LEDs

مر إلى اشعال LED بدون ان ارسل اي داتا يعني البيت RCIF ياخذ قيمة 1 تلقائيا,

فما سبب ذلك؟

شكرا أخي محمد50

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 03:50 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025