برنامه نویسی به زبان Basic برای میکروکنترلرهای 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 دانلود




برچسب :