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

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

mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:0
قديم 16-12-2012, 09:24 AM المشاركة 1   
ha مثال عن برمجة PWM باستعمال MPLAB Twitter FaceBook Google+



السلام عليكم يا اخوة هل بالامكان مدي بمثال عن برمجة PWM باستعمال MPLAB برمجة الاسمبلي
وجزاكم الله كل خير وجعله في ميزان حسناتكم

اعلانات

Mohammedalharbi
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2012
المشاركات: 58
نشاط [ Mohammedalharbi ]
قوة السمعة:0
قديم 16-12-2012, 11:35 AM المشاركة 2   
افتراضي


وعليكم السلام اخي محمد.. انا عندي كود سي لل hi-tec compiler
كتبتة قبل فترة لل pic16f1937

تستطيع عرض كود الاسمبلي للكود عن طريق:
View > Disassembly Listing

الكود يعمل على تغيير الديوتي سايكل للمخرج CCP1 و CCP2

كود:
#include <htc.h>

__CONFIG(FOSC_INTOSC&WDTE_OFF&MCLRE_ON&CP_OFF);

#define _XTAL_FREQ 16000000

void main (void)
{

	OSCCON  = 0x7B;  //select internal osciallator =16Mhz
	__delay_us(4);			//allow the new clock to stabilize

	TRISCbits.TRISC2 =1;	// disable CCP1 
	TRISCbits.TRISC1 =1;	// disable CCP2
	RC1=0; 
	RC2=0;					//clear CCP1
	PR2=0x3f;				// load 63 to PR2
	CCP1M0=0;				// sets CCP1CON in PWM mode 
	CCP1M1=0;
	CCP1M2=1;
	CCP1M3=1;
	CCP2M0=0;				// sets CCP2CON in PWM mode 
	CCP2M1=0;
	CCP2M2=1;
	CCP2M3=1;
	C1TSEL0= 0;				//CCP1 is based off Timer 2 in PWM Mode 
	C1TSEL1= 0;
	C2TSEL0= 0;				//CCP2 is based off Timer 2 in PWM Mode 
	C2TSEL1= 0;
	CCPR1L=128;				//starts with 50% duty cycle
	CCPR2L=128;				//starts with 50% duty cycle	
	TMR2IF=0;				//clear timer 2 flag
	T2CKPS0=0;				//Prescaler is 1
	T2CKPS1=0;				
	TMR2ON= 1;				//Turn on timer2
	TMR2=0;					//clear timer2
	TRISCbits.TRISC2 =0;	//enable CCP1
	TRISCbits.TRISC1 =0;	//enable CCP2
while (1){	
	while(TMR2IF==1)
			{
				
                 for(int dc = 0 ; dc < 80; dc++)
               	         {
                       
                        CCPR1L = 80 - dc ;
                        __delay_ms(20) ;
                        }
               	 for(int dc = 0 ; dc < 80; dc++)
                        {
                       
                        CCPR1L = dc ;
                        __delay_ms(20) ;
                        }
            	 for(int dc = 0 ; dc < 80; dc++)
                        {
                       
                        CCPR2L = 80 - dc ;
                        __delay_ms(20) ;
                        }
                 for(int dc = 0 ; dc < 80; dc++)
                        {
                       
                        CCPR2L = dc ;
                        __delay_ms(20) ;
                        }
				}
	
		}
}

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

mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:0
قديم 16-12-2012, 03:44 PM المشاركة 3   
افتراضي


جزاك الله كل خير اخي لكن هل بالامكان تطبيق مباشر على MPLAB


Mohammedalharbi
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2012
المشاركات: 58
نشاط [ Mohammedalharbi ]
قوة السمعة:0
قديم 16-12-2012, 09:20 PM المشاركة 4   
افتراضي


اخي محمد..هذا الكود تم تطبيقه على MPLAB باستخدام Hi-tech compiler.

اما ان كنت تقصد تطبيق مباشر على الاسمبلي..للاسف لم اتعامل مع الاسمبلي من قبل.


mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:0
قديم 17-12-2012, 05:31 AM المشاركة 5   
افتراضي


اقصد تطبيق مباشر على الاسمبلي
جزاك الله كل خير اخي العزيز و شكرا على الاجابة و على رحابة صدرك

إضافة رد

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

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

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


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

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