اطلاعیه

Collapse
No announcement yet.

مشکل در نرم افزار کامپایل و نوع زبان برنامه &

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در نرم افزار کامپایل و نوع زبان برنامه &

    با سلام
    برنامه ای از اینترنت مربوط به میکروکنترلر pic دانلود کرده ام اما در تشخیص زبان برنامه نویسی ان مشکل دارم. لطفا دوستان بازبینی فرمایند و اسم نرم افزار و زبان برنامه نویسی را ذکر نمایند.
    با تشکر
    برنامه:

    کد:
    list    F=inhx8m, P=12F615, R=hex, N=0
    #include P12F615.inc; PIC definitions
     __config _BOR_ON & _IOSCFS_8MHZ & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _INTOSCIO
    
    
     Errorlevel -302, -224   ; switches off Message [302]: Register in operand not in bank 0.
    ; Definitions -------------------------------------------------------------
    #define OutputPin porta,0
    #define ToggleSelect porta,5
    #define SensitivitySelect porta,4
    #define PreviousButtonState Flags,0
    
    
    ; RAM preserved -----------------------------------------------------------
    	cblock 0x40
    		WaitCounter,WaitCounter2
    		PassArg1,PassArg2
    		PassArg3,PassArg4
    
    		Press_Threshold_H,Press_Threshold_L
    		Release_Threshold_H,Release_Threshold_L
    		Flags
    	endc 
    
    
    
    ; Conastants --------------------------------------------------------------
    GLPressHysteresis_H			=		b'00000001'		;High sensitivity
    GLPressHysteresis_L			=		b'00000010'		;High sensitivity
    GLReleaseHysteresis_H		=		b'00000001'		;High sensitivity
    GLReleaseHysteresis_L		=		b'00000000'		;High sensitivity
    
    GLPressHysteresis_H_2		=		b'00000001'		;Low sensitivity
    GLPressHysteresis_L_2		=		b'00001110'		;Low sensitivity
    GLReleaseHysteresis_H_2		=		b'00000001'		;Low sensitivity
    GLReleaseHysteresis_L_2		=		b'00001000'		;Low sensitivity
    
    
    
    ; Program Memory ----------------------------------------------------------
            org   0
            goto  Init
    ; Interrupt Service Routine -----------------------------------------------
            org   4        ; ISR beginning
    
    ; -------------------------------------------------------------------------
    ; Microcontroller initialization
    Init      
    				include myInitilization.inc	;Include the PIC Initialization routine
    
    
    ;##########################################################################
    ; Main Program ------------------------------------------------------------
    
    Start
    				;TRIS setup
    				bank1					;Go to bank 1
    				movlw b'11111010'		;
    				movwf TRISA				;Set the port pin types of the RA
    				bank0					;Go to bank 0
    				bcf OutputPin
    
    				MOVLW b'11100111'
    				option		
    				bsf cmcon0,CMON			;Enable comparator
    				bcf cmcon0,CMPOL		;Logic is inverted
    				bcf cmcon0,COUT			;
    				bsf cmcon0,CMOE			;Output to COUT pin
    				bsf cmcon0,CMR			;V+ driven to Vref
    				bcf cmcon0,CMCH			;V- driven to channel 0
    				bcf CMCON1,T1ACS		;Timer 1 Clock Source is Instruction Clock (FOSC\4)
    				bcf CMCON1,CMHYS		;Comparator Hysteresis disabled
    				bsf CMCON1,T1GSS		;Timer 1 Gate Source is T1G pin (pin should be configured as digital input)
    				bcf CMCON1,CMSYNC		;Output is asynchronous
    				movlw b'00010000'
    				movwf vrcon
    
    				;Set the press threshold
    				call wait250msec
    				call wait250msec
    				call wait250msec
    				call wait250msec			;Wait for frequency to become stable
    
    				call GetFrequencyCount
    
    				movlw GLPressHysteresis_H_2
    				btfsc SensitivitySelect
    				movlw GLPressHysteresis_H
    				subwf passarg1,w			;Sub from count HIGH the HIGH byte of Press Thresshold
    				movwf Press_Threshold_H		;And save it to memory
    
    				movlw GLPressHysteresis_L_2
    				btfsc SensitivitySelect
    				movlw GLPressHysteresis_L
    				subwf passarg2,w			;Sub from count LOW the LOW byte of Press Thresshold
    				movwf Press_Threshold_L		;And save it to memory
    
    				;Set the release threshold
    				movlw GLReleaseHysteresis_H_2
    				btfsc SensitivitySelect
    				movlw GLReleaseHysteresis_H
    				subwf passarg1,w			;Sub from count HIGH the HIGH byte of Release Thresshold
    				movwf Release_Threshold_H	;And save it to memory
    
    				movlw GLReleaseHysteresis_L_2
    				btfsc SensitivitySelect
    				movlw GLReleaseHysteresis_L
    				subwf passarg2,w			;Sub from count LOW the LOW byte of Release Thresshold
    				movwf Release_Threshold_L	;And save it to memory
    
    
    MainLoop
    				call GetFrequencyCount
    
    				;Check if pressed
    				movf passarg2,w
    				movwf passarg4				;Save Prescaller Count
    				movf passarg1,w
    				movwf passarg3				;Save TMR0 Count
    
    				movf Press_Threshold_L,w
    				subwf passarg2,w			; R= Prescaller - LOW threshold
    				btfss carry
    				decf passarg1,f				;If R < 0, decrease passarg1 (TMR0 count)
    				movf Press_Threshold_H,w
    				subwf passarg1,w			; R= TMR0 - HIGH threshold
    				btfsc carry
    				goto IsNotPressed			;If R < 0, Button is NOT Pressed
    											;Else is pressed
    
    				btfss ToggleSelect			;If ToggleSelect is LOW (pushbutton action)
    				goto ActivateOutput			;Then just activate output
    
    				btfsc PreviousButtonState	;Else, check if previous state was RELEASED
    				goto PressReleaseCheckDone	;If not, then do nothing
    											;If WAS released...
    				bsf PreviousButtonState		;Update previous state
    				movlw b'00000001'	
    				xorwf PORTA,f				;Toggle output
    				call wait100msec			;and wait 100msec
    				goto PressReleaseCheckDone
    
    ActivateOutput
    				bsf OutputPin					
    IsNotPressed	;Check if released
    				movf passarg3,w
    				movwf passarg1				;Restore TMR0 Count
    				movf Release_Threshold_L,w
    				subwf passarg2,w			; R= Prescaller - LOW threshold
    				btfss carry
    				decf passarg1,f				;If R < 0, decrease passarg3 (TMR0 count)
    				movf Release_Threshold_H,w
    				subwf passarg1,w			; R= TMR0 - HIGH threshold
    				btfss carry
    				goto PressReleaseCheckDone	;If R > 0, Button is NOT Released
    											;Else is released
    				btfss ToggleSelect			;If ToggleSelect is LOW (pushbutton action)
    				bcf OutputPin				;Then deactivate output
    				bcf PreviousButtonState		;else (Toggle) do not deactivate it
    
    PressReleaseCheckDone
    				goto MainLoop
    
    
    GetFrequencyCount
    				;This sub returns PassArg1:PassArg2 as the TMR0:Prescaller count
    				clrf passarg1
    				movlw d'44' 				; Set the maximum prescaller value 
    				movwf passarg2				; to start decreasing (max 43+1)
    				clrf tmr0
    				call wait10msec
    				call wait10msec
    				call wait10msec
    				call wait10msec
    				call wait10msec
    				call wait10msec
    				movf tmr0,w
    				movwf passarg1
    				MOVLW b'11000111'	;Tmr0 source is Fosc/4
    				option		
    GetPrescallerValue
    				decF passarg2,f				;1
    				MOVF tmr0,w					;1
    				XORWF passarg1,w			;1
    				BTFSC status,z				;1
    				GOTO GetPrescallerValue		;2 = total 6 instruction cycles
    				;So, it prescaller is 0 (min), we can measure (ceil)255/6=43
    				MOVLW b'11100111'			;Tmr0 source is T0CKI
    				option		
    				return
    
    
    
    
    				include mSecDelays8MHz.inc
    
    
    Fins
    
            end       ; end of program

    #2
    پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

    سلام.
    لطفا از ابزار قرار دادن کد استفاده بفرمایید.
    این برنامه ی چی هست؟
    اسمبلی باید باشه

    دیدگاه


      #3
      پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

      ببرنامه ایست جهت اندازه گیری تغیرات فرکانسی.
      کل فولدری که دانلود کردم را برایتان گذاشته ام.
      زبان برنامه نویسیش چیه و از چه نرم افزاری باید استفاده کنم .؟ تشکر
      http://www.2shared.com/file/ENBrlgfI/1_online.html

      دیدگاه


        #4
        پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

        نوشته اصلی توسط mehrshad2011
        ببرنامه ایست جهت اندازه گیری تغیرات فرکانسی.
        کل فولدری که دانلود کردم را برایتان گذاشته ام.
        زبان برنامه نویسیش چیه و از چه نرم افزاری باید استفاده کنم .؟ تشکر
        http://www.2shared.com/file/ENBrlgfI/1_online.html
        عرض کردم، اسمبلی هست (با توجه به دستورات وسط برنامه)
        مگه فایل هگز نداره؟ شما برای ساخت میخواین استفاده کنین یا تحقیق و...؟

        دیدگاه


          #5
          پاسخ : مشکل در نرم افزار کامپایل و نوع زبان ب&#1585

          تشکر از جوابتون @};-
          فایل هگز دارد اما باید تحقیق کنم و خط به خط برنامه را درک کنم وتغییراتی در ان لحاظ کنم.
          چه منبع مناسبی برای یادگیری این زبان در برنامه نویسی میکروهای pic پیشنهاد می دهید و از چه نرم افزاری باید استفاده کنم؟

          دیدگاه


            #6
            پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

            نوشته اصلی توسط Perfect
            9- میکروکنترلر PIC
            نویسنده: سید مجتبی داشخانه
            ناشر: دیباگران تهران ( مجتمع فنی تهران )
            زبان: اسمبلی
            توضیح: این کتاب کم حجم ترجمه ای روان و عالی از اسناد شرکت میکروچیپ است. در این کتاب به بررسی میکروهای سری 16F به خصوص 16F877A میپردازد و بهترین گزینه برای شروع یادگیری زبان اسمبلی PIC میباشد.

            10- ساختار میکروکنترلرهای PIC
            پدیدآورنده: علی سلیمیان ریزی
            ناشر: شیخ بهایی
            زبان: اسمبلی و C
            توضیح: این کتاب به در ابتدا به بررسی ساختار میکروکنترلرهای 8 بیتی سری 18F بخصوص 18F8722 پرداخته و در انتها به بررسی سری 16F نیز میپردازد. برای یادگیری اسمبلی در سطح متوسط و بالا پیشنهاد میشود.
            خواهش میکنم.
            البته در کل زبان اسمبلی رو خیلی پیشنهاد نمیکنم. بهتره با زبان های نسبتا سطح بالاتری مثل C و بیسیک کار کنین.

            دیدگاه


              #7
              پاسخ : مشکل در نرم افزار کامپایل و نوع زبان ب&#1585

              سلام
              باتوجه به اول برنامه مطمئن نیستم که اسمبلی باشه هرچند که همانطور که اقای شاهرخ مستقیمی گفتن دستورهای وسط و اخر اسمبلی هستند , البته دستورهای اسمبلی را در اکثر مواقع میتوان فارغ از نوع کامپایلر ، در همه انها کامپایل کرد . . .
              کامپایلر اصلی برای pic که خود شرکت بصورت رایگان در اختیار قرار میده MPASM هستش که درون خود MPLABIDE هست . . .
              برا یاد گرفتن این زبان میتونید به سایت :(wle) قسمت انجمنش مراجعه کنید ، در اونجا توسط اقای هادی هاشمی توضیح داده شده و همچنین کتاب هم (البته بسیار کم)
              توی اینترنت هست ؛ اگه خواستین بگین که اسمشون را قرار بدم (الان حفظ نیستم :mrgreen: )
              نکته خیلی مهم در مورد استفاده از این زبان اینه که باید به data sheet مسلط باشین . . .
              موفق باشین
              :read:

              دیدگاه


                #8
                پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                با تشکر از راهنمایی دو دوست عزیز
                اقای / خانم mkhpmkhp میشه لطف کنین شما هم اسم کتاب پیشنهادیتونو واسم بزارین.

                دیدگاه


                  #9
                  پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                  سلام
                  با اجازه ی اساتید محترم
                  این فایل در واقع کد برنامه نیست و یکی از خروجی های کامپایلر برنامه هست که کد دیگه ای با زبان دیگه ای رو برای بررسی به کد اسمبلی تبدیل کرده. (فایل List، در ابتدای متن مشخصه)
                  اینکه قبلاً با چه زبانی و با چه کامپایلری کد نویسی شده، از روی این فایل قابل تشخیص نیست. ولی این فایل برای تفسیر برنامه مناسب هست.
                  *** يا راهي خواهم يافت، يا راهي خواهم ساخت ... ***

                  دیدگاه


                    #10
                    پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                    نوشته اصلی توسط K1.IEEE
                    سلام
                    با اجازه ی اساتید محترم
                    این فایل در واقع کد برنامه نیست و یکی از خروجی های کامپایلر برنامه هست که کد دیگه ای با زبان دیگه ای رو برای بررسی به کد اسمبلی تبدیل کرده. (فایل List، در ابتدای متن مشخصه)
                    اینکه قبلاً با چه زبانی و با چه کامپایلری کد نویسی شده، از روی این فایل قابل تشخیص نیست. ولی این فایل برای تفسیر برنامه مناسب هست.
                    سلام
                    تشکر از جوابتون
                    2تا سوال دارم خدمتتون
                    1) از فایل پیوست و چندتا برنامه ای که داخلشه نمیشه فهمید که زبان برنامه نویسی اولیش چی بوده؟
                    2)یعنی اگه زبان برنامه نویسی اسمبلی رو یاد بگیرم امکان تفسیر برنامه وجود دارد. ا

                    دیدگاه


                      #11
                      پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                      ین فایل در واقع کد برنامه نیست و یکی از خروجی های کامپایلر برنامه هست که کد دیگه ای با زبان دیگه ای رو برای بررسی به کد اسمبلی تبدیل کرده. (فایل List، در ابتدای متن مشخصه)
                      اشتباه میکنید. کد اسمبلی هست. کامنت هم داره.

                      2)یعنی اگه زبان برنامه نویسی اسمبلی رو یاد بگیرم امکان تفسیر برنامه وجود دارد. ا
                      بله ولی نسبتاً کار وقت گیری هست.

                      دیدگاه


                        #12
                        پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                        نوشته اصلی توسط mehrshad2011
                        سلام
                        تشکر از جوابتون
                        2تا سوال دارم خدمتتون
                        1) از فایل پیوست و چندتا برنامه ای که داخلشه نمیشه فهمید که زبان برنامه نویسی اولیش چی بوده؟
                        2)یعنی اگه زبان برنامه نویسی اسمبلی رو یاد بگیرم امکان تفسیر برنامه وجود دارد. ا
                        خواهش می کنم..

                        والا من هم به زبان اسمبلی مینویسم و هم به زبان C.. هم با کامپایلر MPLAB کار می کنم و هم با MikroC.. در هر صورت 4 تا خروجی متفاوت خواهیم داشت که یکیش فایل List هست و کد اسمبلی رو نوشته. الان که دوباره نگاه کردم، فایل تولید شده با MPLAB نشونه ای از اسم کامپایلر نداشت، ولی شبیه فایل شما هم نبود. فایلی که MikroC تولید کرده، بالاش نوشته شده که فایل توسط MikroC تولید شده و ...
                        مثلاً توی MikroC، کدی که من با C نوشتم رو نوشته، بعد کد اسمبلیش رو هم نوشته. ولی MPLAB اینجوری نبود.
                        خلاصه من از روی این فایل شما نمی تونم تشخیص بدم به چه زبونی و با چه کامپایلری نوشته شده. شاید بیسیک باشه که من اصلاً بلد نیستم!!! شاید کامپایلر CCS باشه و یا MikroBasic...

                        برای تفسیر برنامه ابتدا باید بدونید که کد نویس قصد داشته چیکار کنه، وگرنه تفسیرش سخت میشه.
                        در ادامه اگر دیتاشیت میکروی مربوطه (که در اینجا ظاهراً PIC12F615) هست رو دانلود کنید (یا میکرو های مشابه)، لیست دستورات اسمبلی با مثال در انتهای دیتاشیت (با راهنما) وجود داره. یک بررسی روی اون ها داشته باشید تا بتونید کد اسمبلیه این فایل رو تفسیر کنید. به صورت موردی هم میتونید از من و دوستان کمک بگیرید.
                        *** يا راهي خواهم يافت، يا راهي خواهم ساخت ... ***

                        دیدگاه


                          #13
                          پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                          نوشته اصلی توسط freedom_truth
                          اشتباه میکنید. کد اسمبلی هست. کامنت هم داره.
                          پس علت اون #define که تو برنامه گذاشته چیه ؟؟
                          تا اونجا که من میدونم تو اسمبلی برای انتصاب از EQU استفاده میشه . . .

                          دیدگاه


                            #14
                            پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                            پیشنهاد میکنم به جای این همه بحث کردن، برنامه رو از اول خودتون بنویسین!! :mrgreen:

                            دیدگاه


                              #15
                              پاسخ : مشکل در نرم افزار کامپایل و نوع زبان برنامه &

                              نوشته اصلی توسط شاهرخ مستقیمی
                              پیشنهاد میکنم به جای این همه بحث کردن، برنامه رو از اول خودتون بنویسین!! :mrgreen:
                              ب تشکر از همه ی دوستان
                              اقی مستقیمی پیشنهاد خوبی بود :applause:

                              دیدگاه

                              لطفا صبر کنید...
                              X