برنامه بعدی که می خواهیم بنویسیم و اجرا کنیم، led راه رونده است، یعنی led ها پشت سر هم روشن می شوند و با روشن شدن هر led ، led قبلی خاموش شود.
TRISB=0
SYMBOL B=PORTB
B0 VAR BYTE
MAIN:
B0=1
B=B0
PAUSE 100
SUB:
B0=B0*2
B=B0
PAUSE 100
IF B0=%10000000 THEN MAIN
GOTO SUB
END
خط اول: مشخص می کند که تمام پایه های پورت B به عنوان خروجی استفاده می شود.
خط دوم: از دستور symbol استفاده شده، با استفاده از این دستور می توان مثلا برای پورت B یک کلمه ی دیگر قرار داد کرد. که ما دراینجا از B به جای پورت B استفاده کردیم. یعنی هرجا در برنامه از کلمه B استفاده کردیم ، منظورمان همان PORTB است.
برنامه اصلی : برای این که منظورمان را پیاده کنیم می توانیم از راه حل زیر استفاده کنیم: بدین صورت که ابتدا خروجی پورت B، یک شود، سپس 10 شود، و پس از آن 100 و همینطور تا 10000000 ادامه دهیم و دوباره به حالت اول برگردیم. یکی از ساده ترین راه ها برای تحقق این راه حل استفاده از دستور فوق در برنامه است:
1
10×1=10
10×10=100
10×100=1000
.
.
عدد 10 اول در مبنای ده همان 2 می باشد که در برنامه استفاده کردیم. بعد از رسیدن به 10000000 باید برنامه به حالتی برگردد که خروجی 1 شود که برای این منظور از یک حلقه استفاده می کنیم.
شماتیک مدار:
اکنون مانند قسمت قبل این آموزش(قسمت اول)، فایل hex را ساخته و در میکرو LOAD می کنیم و برای اجرای برنامه روی گزینه run کلیک می کنیم.
در اینجا لازم می دانم چند نکته را هم در پایان این قسمت قرار دهم.
نکته 1) به جای استفاده از دستور PORTB=B0 می توانیم از دستور POKE PORTB,B0 استفاده کنیم.
نکته 2) برای تعریف یک متغیر جدید از دستور VAR استفاده می کنیم. اگر بعد از آن BYTE استفاده کنیم، متغیرمان یک بایتی در نظر گرفته می شود. بهتر است از B0,B1,…,B51 برای متغیر بایتی استفاده کنیم. و برای متغیرهای دوبایتی از W0,W1,…,W52 استفاده کنیم. W0 از B0,B1 تشکیل شده است.
نکته3) یک بایت از 0 تا 255 می تواند بشمارد.(یعنی 2 به توان 8)
نکته 4) یک کلمه از دو بایت تشکیل شده است.