برنامه نویسی به زبان Basic برای میکروکنترلرهای PIC
میتوان برنامه میکروکنترلر ها را با زبان های مختلف چون زبان اسمبلی , basic و c نوشت.
برنامه نویسی به زبان Basic برای میکروکنترلرهای PIC ساده تر از برنامه نویسی به زبان اسمبلی است اگرچه تعداد دستورات زبان اسمبلی میکروکنترلر PIC کمتر از بیسیک است.
کامپایلر های مختلفی را برای این منظور می توان یافت. این کامپایلر ها تنها در چند دستور با هم متفاوتند لذا بهتر است که فقط با یک نوع از آنها کار کرد.
کامپایلری که پیشنهاد می کنم و درباره آن توضیح می دهم، کامپایلر و شبیه ساز میکروکنترلر PIC یعنیPIC Simulator IDE می باشد که می توان جدید ترین نسخه آن را از وب سایت www.oshonsoft.com دانلود کرد (نسخه رجیسترشده این نرم افزار در قسمت دانلودهای همین سایت موجود می باشد.).
در 3 قسمت دستورات این کامپایلر شرح داده می شود. هیچ فرقی نمی کند که دستورات را با حروف کوچک بنویسید یا بزرگ . کامپایلر این نرم افزار دستورات را تشخیص می دهد و آن ها را به رنگ آبی نمایش می دهد.
برای اینکه بتوانید در این نرم افزار به زبان بیسیک برنامه نویسی نمائید ابتدا برنامه را باز کنید و روی منوی TOOLS رفته و سپس Basic Compiler را انتخاب نمائید.
دستورات:
DIM
از این دستور برای اعلام متغیر ها استفاده می شود. متغیرها (دیتا) می توانند BIT , BYTE , WORD باشند.
یک بیت یا صفر است یا یک ، یک بایت byte از 8 بیت تشکیل می شود و یک word (کلمه) از 2 بایت تشکیل می شود.
این دستور را می توان در هر جای برنامه استفاده نمود منتها قبل از استفاده از متغیر.
تعداد متغیرهایی که می توان به عنوان bit,byte,word در برنامه تعریف نمود بستگی به حافظه RAM میکروکنترلر دارد.
به عنوان مثال در میکروکنترلر 16 ,PIC 16F84متغیربیت , 52 متغیر بایت و 25 متغیر کلمه می توان به طور مجزا تعریف کرد.
شاید ندانید که میکروی PIC شما چند متغیر بایت یا کلمه دارد . می توانید به دیتا شیت آن مراجعه کنید . البته باید بدانید که دانستن این موضوع چندان اهمیتی ندارد و در برنامه نویسی به مشکلی بر نخواهید خورد.
فرم کلی دستور DIM به صورت زیر است:
DIM varname(array) datatype
که datatype می تواند bit , byte و یا word باشد. مثال:
DIM A AS BIT
DIM B AS BYTE
DIM X AS WORD
اگر بخواهیم از array استفاده کنیم مطابق مثال زیر این کار را انجام می دهیم:
DIM A(10) AS BYTE
با این دستور 10 متغیر از نوع بایت با نام های A0 تا A9 تعریف می شود.
Varname.BIT
اگر متغیری به صورت بایت تعریف شده باشد می توان با استفاده از دستور فوق به تک تک بیت های آن متغیر دسترسی داشت. که BIT شماره بیت مورد نظر است که می تواند از 0 تا 7 باشد.
مثال:
Dim name As Byte
name.3 = 0
دستور فوق عدد صفر را به چهارمین بیت از متغیر name اختصاص می دهد.
SFRname.BITname
با استفاده از دستور بالا می توان به بیت های ثبات های با منظور خاص (SFRs) دست یافت.
مثلا با دستور (PORTA.1) می توان به دومین بیت پورت A دست یافت و یا با دستور (INTCON.INTF) می توان به بیت INTF ثبات INTCON دست یافت.
Varname.HB
Varname.LB
اگر متغیری به صورت کلمه تعریف شده باشد با دستورات بالا می توان به کم ارزش ترین و با ارزش ترین بایت آن دسترسی داشت.
که HB با ارزشترین بایت است و LB کم ارزش ترین بایت.
DIM A AS BYTE
DIM C AS BYTE
DIM B AS WORD
A = B.HB
C = B.LB
=
با استفاده از علامت تساوی می توان محتویات یک متغیر یا ثبات را تغییر داد. فرم کلی ای دستور به صورت زیر است:
Dataname = statement
که statement می تواند یک عدد و یا نام یک متغیر باشد:
PORTA.1 = 1
B = A
SYMBOL
با استفاده از این دستور می توان به متغیر ها , بیت های ثبات های با منظور خاص و یا خود ثبات های با منظور خاص , نام های دیگری که در برنامه معنی دار تر هستند اطلاق کردوسپس به جای نام آن متغیر , از نام سمبولیک آن استفاده می شود.
فرم کلی این دستور به صورت زیر است:
SYMBOL name = Dataname
مثال:
SYMBOL LED1 = PORTB.0
دستور بالا به بیت صفر (اولین بیت) پورت B نام LED1 را اختصاص می دهد و سپس با دستور زیر مقدار یک را در آن ذخیره می سازد.
LED1 = 1
HIGH
از این دستور نیز برای تغییر مقدار یک بیت استفاده می شود و مقدار آن را یک می کند. همچنین این دستور می تواند پایه خاصی را تبدیل به خروجی می کند و آن را در حال 1 منطقی قرار می دهد. فرم کلی این دستور به صورت زیر است:
HIGH Pinname
مثال:
HIGH PortB.0
LOW
از این دستور نیز برای تغییر مقدار یک بیت استفاده می شود و مقدار آن را صفر می کند.همچنین این دستور می تواند پایه خاصی را تبدیل به خروجی می کند و آن را در حالت 0 منطقی قرار می دهد. فرم کلی این دستور به صورت زیر است:
LOW Pinname
مثال:
LOW ADCON0.ADON
دستور فوق بیت ADON از ثبات ADCON0 را صفر می کند.
TOGGLE
از این دستور نیز برای تغییر مقدار یک بیت استفاده می شود و مقدار آن را معکوس می سازد یعنی اگر آن بیت 0 بوده آن را 1 می کند و بالعکس. همچنین این دستور می توانداین دستور پایه خاصی را معکوس می سازد ( 1 را به 0 و 0 را به 1 تبدیل می کند) پایه مشخص شده به طور خودکار به یک پایه خروجی تبدیل می شود. فرم کلی این دستور به صورت زیر است:
TOGGLE Pinname
مثال:
TOGGLE PORTA.1
نکته:
اگر بخواهیم عددی را در مبنای هگز نشان دهیم ، یا در سمت راست عدد ، علامت H قرار می دهیم و یا در سمت چپ آن 0x قرار می دهیم مانند (0x55) یا ( 55H) , یعنی عدد 55 در مبنای هگز.
اگر بخواهیم عددی را در مبنای دو (باینری) نشان دهیم یا در سمت راست آن عدد علامت B قرار می دهیم و یا در سمت چپ آن علامت % قرار می دهیم مانند (%00011011) یا (000110011B) .
GOTO
این دستور باعث می شود که برنامه به برچسب مشخص شده پرش کند و اجرای برنامه از آن برچسب ادامه می یابد:
GOTO Label
در انتهای یک برچسب باید علامت " : " قرار گیرد.مثال:
DIM A AS WORD
A = 0
loop:
A = A + 1
GOTO loop
WAITMS delay
WAITUS delay
WAITMS تاخیری بر حسب میلی ثانیه ایجاد می کند و WAITUSتاخیری بر حسب میکر ثانیه ایجاد می کند. مثال:
WAITMS 10
WAITUS 50
اما دستورات read و write که به EEPROM مربوط می شوند.
READ
فرم کلی دستور:
READ Address,Var
با این فرمان می توان محتویات حافظه EEPROM ( حافظه EEPROM داده نه برنامه) داخلی تراشه را که آدرس آن در متغیر Address ذخیره شده است را خواند. اطلاعات موجود در این آدرس در متغیر Var که از نوع بایت است کپی می شود.
مقدار حافظه داده EEPROM تراشه 256 ، PIC 16F876 بایت است که از آدرس 00H شروع می شود و به 0FFH ختم می شود.
می توان آدرس حافظه EEPROM را در دستور فوق در مبنای هگز و یا دسیمال و یا باینری نوشت و یا به طور غیر مستقیم این آدرس را با استفاده از یک متغیر مشخص نمود:
DIM A AS BYTE
DIM B AS BYTE
DIM C AS BYTE
A = 10
READ A, B
READ 5, C
مجموعه دستورات فوق اطلاعات آدرس های 10 هگز و 5 هگز از حافظه داده EEPROM تراشه PIC را به ترتیب درون متغیرهای B ,C می ریزد.
WRITE
فرم کلی این دستور به صورت زیر است:
WRITE Address,Value
این دستور مقدار Value را در حافظه EEPROM داخلی تراشه که آدرس آن توسط متغیر Address مشخص شده است, می نویسد:
DIM A AS BYTE
DIM B AS BYTE
A = 10
B = 14
WRITE A, B
WRITE 11, B
مجموعه دستورات فوق عدد 14 را در آدرس های 10 هگز و 11 هگز از حافظه EEPROM داخلی تراشه PIC می ریزد.
GOSUB
فرم کلی این دستور : GOSUB Label
با این دستور برنامه به برچسب Label پرش می کند. این برچسب در واقع یک زیر برنامه ( سابروتین) است. در انتهای زیر برنامه باید دستور RETURN باشدتا برنامه به عبارتی که بعد از GOSUB قرار دارد برگردد. مثالی از این دستور در انتهای این قسمت آورده شده.
IF … THEN…ELSE…END IF
این فرمان یک آزمون مقایسه ای را انجام می دهد. اگر شرط مورد نظر برقرار بود برنامه به عبارت بعد از THEN می رود در غیر اینصورت به عبارت بعد از ELSE می رود و سپس دستور شرطی با END IF به اتمام می رسد.مثال:
IF PORTA.0 = 0 THEN
PORTB.0 = 1
ELSE
PORTB.0 = 0
ENDIF
IF……THEN
فرم کلی این دستور به صورت زیر است:
IF statement THEN GOTO label
این فرمان نیز یک آزمون مقایسه ای انجام می دهد. اگر شرط مورنظر برقرار بود برنامه به برچسب label پرش می کند در غیر ایصورت برنامه به عبارت بعد از این دستور می رود. این دستور نیازی به END IF ندارد. دقت داشته باشید که در این دستور فقط عبارت GOTO label قرار می گیرد.
نکته:
اگر تمام بیت های ثبات های TRISA,TRISB,TRISC,TRISD صفرباشند پورت مربوط به آن ثبات به عنوان خروجی انتخاب می شود و اگر مقدار آنها 1 باشد پورت مربوط به آن ثبات به عنوان ورودی شناخته می شود.
به عبارت دیگر با مقدار دهی بیت های ثبات های یاد شده می توان پین مربوط به آن بیت را به عنوان خروجی یا ورودی مشخص نمود. مثلا با دستورTRISB=15 چهار بیت کم ارزش تر پورت B به عنوان ورودی شناخته می شود و 4 بیت با ارزش تر به عنوان خروجی.
اما نکته دیگری که باید رعایت شود این است که میکروکنترلرهای PIC که دارای 28 یا 40 پین هستند دارای مبدل آنالوگ به دیجیتال داخلی هستند (می توانید به دیتا شیت آن ها مراجعه کنید) این مبدل معمولا روی پورت A میکروکنترلر قرار دارد بنابراین قبل از اینکه از این پورت استفاده کنید باید مشخص سازید که این پورت به صورت آنالوگ است یا دیجیتال برای این کار باید ثبات ADCON1 مقدار دهی شود. ما در این قسمت درباره مبدل آنالوگ به دیجیتال داخلی این میکروها صحبت نمی کنیم لذا در اینجا فقط متذکر می شوم که هرگاه بخواهیم تمام پین های پورت A به صورت دیجیتالی کار کنند باید مقدار 7 دسیمال را درون ثبات ADCON1 ریخت.:
ADCON1 = 7
مقدار دهی به ثبات های ADCON و TRIS را در ابتدای برنامه انجام دهید.
نکته:
اگر یک کاراکتر حرف یا عدد میان دو گیومه قرار گیرد و به داخل متغیری ریخته شود ,در واقع کد اسکی آن کاراکتر ریخته شده است مثلا دستور A = “F” کد اسکی حرف F را در متغیر A قرار می دهد و یا دستور PORTB = “O” کد اسکی حرف O را به پورت B ارسال می کتد.
END
این دستور اجرای برنامه را خاتمه می دهد و باعث می شود که میکرو کنترلر در حالت کاهش توان قرار گیرد.
ممکن است که در برنامه از کدهای اسمبلی استفاده شود که در اینصورت قبل از استفاده از آنها باید از دستورزیر استفاده نمود:
ASM
مثال:
ASM: NOP
ASM:LABEL1: MOVLW 0xFF
دستورات منطقی و حسابی:
جمع + AND NOR
تفریق - OR XOR
ضرب * NAND XNOR
خارج قسمت عمل تقسیم / معکوس (مکمل) NOT
باقیمانده تقسیم MOD
جذر SQR ( )
مثال:
X = NOT A
X = A AND B
X = A OR B
X = A XOR B
X = A NAND B
X = A NOR B
X = A NXOR B
DIM A AS WORD
A = 3600
A = SQR(A)
A = A OR B
PORTB = PORTC AND %11110000
نکته:
1- تمامی زیر روال ها (زیر برنامه ها) را باید پس از دستور END وارد نمود.
2- برای توضیحات برنامه باید از کاراکتر " ’" استفاده نمود.
در انتها یک مثال از زیربرنامه می زنم:
SYMBOL DISPLAY = PORTB.0
HIGH DISPLAY
GOSUB getadresult
END
getadresult:
LOW DISPLAY
RETURN
مطالب مشابه :
برنامه نویسی میکروکنترلر pic به زبان c
دنیای میکروکنترلر ARM & AVR & PIC - برنامه نویسی از مبتدی به آموزش pic به زبان c .
آموزش AVR به زبان سی C
آموزش pic , برنامه نويسي به 8051 به زبان اسمبلي ,برنامه نویسی به زبان c ,محافظ صفحه
آموزش ميكرو كنترلر AVR به زبان بيسيك || قسمت دوم
آموزش pic , برنامه نويسي به pic به زبان بیسیک ,8051 به زبان اسمبلي ,برنامه نویسی به زبان c
آموزش گام به گام برنامه نویسی AVR به زبان C
اصول و قوانین برنامه نویسی به زبان C دانلود مقاله آموزش گام به گام برنامه میکرو pic
برنامه نویسی به زبان Basic برای میکروکنترلرهای PIC
برنامه نویسی به زبان Basic برای حافظه داده EEPROM تراشه PIC را به ترتیب درون اموزش رباتیک و
دانلود کتاب آموزش برنامه نویسی به زبان C
دانلود کتاب آموزش برنامه نویسی به های خوب/pic/avr آموزش برنامه نویسی به زبان c.
برنامه نویسی به زبان Basic برای میکروکنترلرهای PIC
برنامه نویسی به زبان Basic برای داده EEPROM تراشه PIC را به ترتیب آموزش نرم
دانلود کتاب آموزش مبانی کامپیوتر و برنامه نویسی به زبان c++
های الکترونیک آموزش انواع و برنامه نویسی به زبان c++ pic دانلود
برچسب :
آموزش برنامه نویسی PIC به زبان C