بررسی و تحلیل پروژه مسیریاب خطی: طراحی، سختافزار و نرمافزار
راهنمای جامع طراحی ربات مسیریاب: از مکانیک تا الکترونیک
پروژه رباتیک: طراحی و ساخت ربات مسیریاب خط ساده
همهچیز درباره پروژه مسیریاب خطی: سختافزار، نرمافزار و مدارها
آموزش ساخت ربات مسیریاب خطی: تحلیل کامل و قدمبهقدم
-پروژه موردنظر يك روبات مسير ياب خط ساده مي باشد . پايان نامة اين پروژه كـه هم اكنون در حال مطالعه آن هستيد ، متشكل از سه بخش سخت افزار ، نرم افـزار و مراجع و منابع مي باشد .
– بخش سخت افزار اين پايان نامه به معرفي قسمت هاي مكانيك و الكترونيك ايـن روبات پرداخته كه در حالت كلي بخش الكترونيك را قسمت هايي چون : AT:MIC 32MEGA) ) جهت پردازش سيگنال ها و فرمان ها ،) IC درايور 298L ) جهت راه اندازي موتورها ،) مدارات آنالوگي ، چون :SUPPTY POWER) كـه بـراي تغذيـه كل سيستم مورد استفاده قرار گرفته ) ، مدار تقويت كنندة تـك ترانزيـستوري 942C (جهت روشن شدن LED براي تست سنسورها ) ، سنـسور مـادون قرمـز 70CNY (براي تشخيص خط مورد نظر )، تشكيل داده اند .
بخش مكانيك نيز شامل قسمت هايي چون : دو موتور DC ) با دور RPM600 كـه همراه با گيربكس براي افزايش قدرت )، دو عدد چرخ سه عدد سنسور ، بـر د MIC و برد 298L و همچنين شاسي كه تمام بخش سـخت افـزار روي آن سـوار شـده را تشكيل مي دهند .
– بخش نرم افزار اين پايان نامه نيز شامل برنامة كامل روبـات و دسـتورات مـورد استفاده در اين برنامه مي باشد .
2
ان چكيده
ا ار
اول: !
مقدمه 4………………………………………………………………………………………………………….. 7………………………………………………………………… MEGA AVR ميكروكنترلر – 1-1 – خصوصيات 32 ATMEGA 7…………………………………………………………………….. – فيوز بيت هاي 32ATMEGA 12…………………………………………………………………….. – بررسي پورت هاي ميكرو 32 ATMEGA14…………………………………………………….. 25……………………………………………………………………………….L298 درايور IC – 1-2 – معرفي پايه هاي 298L 27………………………………………………………………………………… 1-3 – سنسور مادون قرمز 70CNY29………………………………………………………………..
31………………………………………………………………………….POWER SUPPLY – 1-4 -5-1 بخش مكانيك روبات – موتور هاي DC33………………………………………………….
6-1 – تشريح كامل مدار روبات 37………………………………………………………………………
دوم : $م ا ار
-1-2 محيط برنامه نويسي AVR BASCOM 42…………………………………………………… -2-2 ديمانسون تغيير و برخي دستورات محيط AVR BASCOM43…………………….. -3-2 برنامه كامل روبات مسير ياب خط ساده 47………………………………………………… م : منابع و مراجع 70……………………………………………………………………
3
%
– پروژه اي كه پيش روي شماست با عنوان روبات مسير ياب مي باشد ا. ين روبات تشكيل شده از سه بخش الكترونيك ، مكانيك و كامپيوتر كـه بخـش الكترونيـك آن مربـوط بـه طراحـي و پيـاده سـازي مـدارهاي ، آنـالوگ و ديجيتـال الكترونيكـي و درايوهاي موتورها و … مي باشد بخش مكانيك آن مربوط به طراحـي و پيـاه سـازي مدارهاي الكترونيكي ، موتورها و چرخ ها روي شاسـي و بدنـه مـي باشـد و بخـش كامپيوتر آن نيز مربوط به قسمت نرم افزار وبرنامة روبات مي باشد كه به زبـان C و
توسط برنامة BASCOM داخل ميكروكنترلر AVR نوشته شده است . – تلفيق اين سه بخش با هم ، به طوري كه خوب با هم تركيب شـوند، مـي تواننـد يك روبات مسير ياب را تش كيل دهند . روبات مسير ياب كه در اين پـروژه اسـتفاده شده ، يك روبات مسير ياب خط ساده مي باشـد كـه در حالـت كلـي از دوقـسمت سخت افزار و نرم افزار تشكيل شده است . در اين بخش ، قسمت سخت افـزار آن را همان مدارات الكترونيكي و هر چند به جز بخش نرم افزار مي ناميم بنـابراين بخـش سخت افزار آن از قطعات الكترونيكي چون : 298L:IC كـه يـك درايـو بـا حـداكثر جريان دهي A3 براي موتور هاي DC، 32ATMEGA , IC، كه يك ميكروكنترلر AVR مي باشد كه در حقيقت مغز اين روبات به شمار مـي رود كـه تمـام عمليـات پردازش و دستورات خروجي توسط اين ميكروكنترلر ص ورت ميگيرد/ سنـسورهاي
4
70CNY كــه از نــوع سنــسورهاي مــادون قرمــز مــي باشــند ؛ و قطعــاتي چــون ترانزيستور945C، و دو عدد XY:78IC كـه رگولاتـور از سـري مثبـت مـي باشـد ، LED ، ديود ، خازن ، كريستال ، و انواع مقاومت ؛ سـلف ، دو عـدد موتـور DC بـا دور RPM600 ، دو عدد چرخ و همچنين س ه عـدد بـرد مـدارچاپي بـراي قـسمت سنسورها، ميكروكنترلر AVR، و قسمت هاي درايو و به طور كلي آنالوگ مـدار مـي باشد .
– قسمت نرم افزار آن نيز در 23 صفحه كه كاملاً در فصل ( ) ارائـه شـده آمـده است. اين برنامه به زبان C نوشته شده كه روبات كاملاً تحت اين برنامه عمل مي كند .در فصل هاي اين پايان نامه تمام بخش هاي سخت افزار و نرم افزار بـا توضـيحات كامل ارائه شده و در فصل آخر نيز منابع و مراجعي كه از آن هـا بـراي تكميـل ايـن پايان نامه استفاده شده ،ارائه گرديده است. در ضمن ايـن پايـان نامـه در 2 فـصل تهيه و تنظيم گرديده است .
5
اول:
ا ار
!
6
MEGA AVR ‘ وآ -1-1
در اين فصل بـه معرفـي ميكروكنترلـر 32 MEGA AT از سـري ميكروكنترلرهـاي AVR شركت ATMEL مي پـردازيم . ميكروكنترلـر 32MEGA نـسبت بـه انـواع (TINY,S 90AT (داراي قابليت بيشتري مـي باشـد . خـصوصيات و قابليـت ايـن ميكروكنترلر ، كه از نوع AVR MEGA مي باشد و تشريح كامل آن و در ادامه فيوز بيت هاي اين ميكروكنترلر به طور كامل بررسي شده است .
فيوز بيت ها قسمتي از حافظه FLASH هستند كه امكاناتي را در اختيار كاربر قـرار ميدهند . فيوز بيت ها با ERASE ميكرو از بـين نمـي رونـد و مـي تواننـد توسـط بيتهاي قفل مربوطه قفل شوند .
ت 32 ATMEGA
– *
از معماري RISC AVR استفاده مي كند .
كارايي بالا و توان مصرفي كم
داراي IBI دستور العمل با كارايي بالا كه اكثراً تنها در يك كلاك سيكل اجـرا مـي شوند .
8×32 رجيستر كاربردي
سرعتي تا MIPS16 در فركانس MHZ16
7
*حافظه ، برنامه و دادة غير فرار
– 32 بايت حافظه FLASH داخلي قابل برنامه ريزي
– پايـداري حافظــه FLASH : قابليــت 10/000 بـار نوشــتن و پــاك كــردن (. WRITE/ERASE)
– K2 بايت حافظه داخلي SRAM
– بايت حافظة PROM EE داخلي قابل برنامه ريزي
– پايداري حافظة PROM EE : قابليت 100/000 بار نوشتن و پاك كردن – قفل برنامه FLASH حفاظت داده EEPROM
(IEEE STD) JTAG ارتباط قابليت *
LOCK BITS , FUSE BITS , EEPROM , برنامـه ريـزي برنامـه – FLASH از طريق ارتباط با JTAG
*خصوصيات جانبي
– دو تايمر – كانتر ( COUNTER/TIMER (8 بيتي با PRESCALER مجزا داراي حد PARE COM .
– يـك تـايمر – كـانتر 16 بيتـي بـاCALER PRES مجـزا و داراي مـدهاي
CAPTURE , COMPARE
– 4 كانال مبدل آنالوگ به ديجيتال 10 بيتي
8
– داراي دو كانال تفاضلي با كنترل گين X1 ,X10 , X200 – يك مقايسه كنندةآنالوگ داخلي
– داراي RTC )CLOCK TIME-REAL (با اسيلاتور مجزا – WATCHDOG قابل برنامه ريزي با اسيلاتور داخلي
– ارتبــــاط ســــريال SPI بــــراي برنامــــه ريــــزي داخــــل مــــدار
(IN – SYSTEM PROGRANMING)
– قابليت ارتباط سريال SPI به صورت MASTER – SLAVE
– قابليت ارتباط با پروتكل سريال دو سير(WIRE -TWO( – USART سريال قابل برنامه ريزي
- خصوصيات ويژه ميكروكنترلر
POWER- ON RESET CIRCUIT –
BROWN- OUT DETECTION –
– داراي 6 حالت
(ADC NOLSEREDUCTION , EXTENDED STANDBY , STAND BY, POWER , SAVE , IDLE , POWER , DOWN) SLEEP • ولتاژهاي عملياتي ( كاري )
(ATMEGA32L) براي 5.5V تا2.7V –
(ATMEGA32) براي 5.5V تا 4.5V –
9
*فركانس هاي كاري
(ATMEGA32L) براي 8MHZ تا 0 MHZ – (ATMEGA32) براي 16MHZ تا 0 MHZ – * خطوط O/I و انواع بستر بندي
– 32 خط ورودي / خروجي (O/I (قابل برنامه ريزي – 40 پايه PDIP، 44 پايه TQFP و 44 پايه MLF
10
U1
RESET 9
XTAL1 13
XTAL2 12
PA0/ADC0 40
PA1/ADC1 39
PA2/ADC2 38
PA3/ADC3 37
PA4/ADC4 36
PA5/ADC5 35
PA6/ADC6 34
PA7/ADC7 33
PB0/XCK/T0 1
PB1/T1 2
PB2/INT2/AIN0 3
PB3/OC0/AIN1 4
PB4/SS 5
PB5/MOSI 6
PB6/MISO 7
PB7/SCK 8
ATMEGA32
*تركيب پايه
PC0/SCL 22
PC1/SDA 23
PC2/TCK 24
PC3/TMS 25
PC4/TDO 26
PC5/TDI 27
PC6/TOSC1 28
PC7/TOSC2 29
PD0/RXD 14
PD1/TXD 15
PD2/INT0 16
PD3/INT1 17
PD4/OC1B 18
PD5/OC1A 19
PD6/ICP 20
PD7/OC2 21
AVCC 30
AREF 32
شكل 1–1 تركيب بسته بندي 32ATMEGA
11
ي 32ATMEGA
ه
– ز –
32ATMEGA داراي دو بايت فيوز بيت مي باشد كه ذيل به آنها خواهيم پرداخت : OCDEN: در صورتي كه قفل برنامه ريزي نشده باشند برنامه ريـزي ايـن بيـت بـه همراه بيت JTAGEM باعث مي شود كه سيستم DEBUG CHIP ON فعال شـ ود . برنامهريزي شدن اين بيت به قسمت هايي از ميكرو امكان مي دهد كـه در مـدهاي SLEEP كار كند كه اين خود باعث افزايش مصرف تسليم مي شـود . ايـن بيـت بـه صورت پيش فرض برنامه ريزي نشده است .
JTAGEN: بيتي براي فعال سازي برنامه ريزي ميكرو از طريق اسـتاندارد ارتبـاطي TEEE ) JTAG (كه در حالت پيش فرض فعال است و ميكـرو مـي توانـد از ايـن ارتباط براي برنامه ريزي خود استفاده نمايد . پايـه هـاي .5…2PC در ايـن ارتبـاط استفاده مي شوند .
SPIEN: در حالت پيش فرض برنامه ريـزي شـده و ميكـرو از طريـق سـريال SPI برنامهريزي مي شود .
CROPT: انتخاب كلا ك كه به صـورت پـيش فـرض برنامـه ريـزي نـشده اسـت . عملكرد اين بيت بستگي به بيت هاي CKSEL دارد .
EESAVE: در حالـت پـيش فـرض برنامـه ريـزي نـشده و در زمـان پـاك شـدن (ERASE (ميكرو حافظة EEPROM پاك مي شـود ولـي در صـورتي كـه برنامـه ريزي شود محتويات EEPROM در زمان پاك شدن ميكرو محفوظ مي ماند .
12
1 , 0 BOOTSZ: براي انتخاب مقدار حافظه BOOT برنامه ريزي خواهد شـد و در زمان برنامه ريزي شدن فيوز بيت RST BOOT اجراي برنامه از ايـن آدرس حافظـه BOOT آغاز خواهد شد .
BOOTRST: انتخاب برداري ست BOOT كه در حالت پيش فرض برنامـه ريـزي نشده و آدرس برداري ست 50000 است و در صورت برنامه ريزي اين بيـت آدرس برداري ست به آدرسي كه فيوز بيت هـاي 0ST BOOT , 1 ST BOOT مـشخص كرده اند، تغيير مي يابد .
BODLEVEL: زماني كه اين بيت برنامه ريزي نشده ( پيش فرض ) باشد اگر ولتاژ پايه VCC از V2.7 پايين تر شود ري ست داخلي ميكرو فعا ل شده و سيـستم 8 ري ست مي كند . زماني كه اين بيت برنامه ريزي شده باشد اگـر ولتـاژ پايـة ??? از ؟؟؟
پايين تر شود ري ست داخلي ميكرو فعال شده و ميكرو را ري ست مي كند . BODEN: براي فعال كردن عملكـرد مـدار OUT – BROWN ايـن بيـت بايـستي برنامهريزي شده باشد اين بيت به صورت پيش فرض برنامه ريزي نشده است 0 SUT , 1 SUT : براي انتخاب زمان UP – START بكار برده مي شود
0CKSEL 3-CKSEL : مقدار پيش فرض كلاك براي اين ميكـرو INTERNAL . است RC OSCILATOR @ 1MHZ
13
ي و 32 ATMEGA
-ر0 /رت ه
– در اين بخش قصد داريم براي آشنايي بيشت ر با عملكرد پورت هـا و رجيـسترهاي مربوطه به طور نمونه به بررسي پورت هاي ميكرو 32 ATMEGA بپردازيم . – پورت A :
-پـورت A : يـك O/I دو طرفـه 8 بيتـي اسـت . سـه آدرس از مكـان حافظـه O/I اختـصاص بـه A PORT دارد. يـك آدرس بـراي رجيـستر داده پـورت A PORT ورودي رجيستر جهت داده DORA و سومي پايـه ورودي پـورت A PINA اسـت
آدرس پايه هاي ورودي پورت A فقط قابل خواندن است . در صورتي كـه رجيـستر داده و رجيستر جهت داده هم خواندني و هم نوشتني هستند .
تمام پايه هاي پورت داراي مقاومت UP -PULL مجزا هستند بافر خروجي پـورت A جرياني با MOL 20 & SINK مي كند و در نتيجه مـي توانـد LED را مـستقيماً راهاندازي كند. هنگامي كه پايه هاي 7PA -PAO با مقاومت هاي DOON – PALL خارجي به عنوان خروجي استفاده مي شـوندن آنهـا SOURCE جريـان مـي شـوند زماني كه مقاومت هاي UP -PALL داخلي فعال باشند .
– استفاده از پورت Aبه عنوان يك O/I عمومي ديجيتال :
تمام 8 پايه مربرد (7PA0-PA (زماني كه به عنوان پايه هاي O/I ديجيتـال اسـتفاده ميشوند داراي عملكرد مساوي هستند . PAN پايه O/I عمومي : بيت ODAN يـك
14
باشد ، PAN بعنوان يك پايه خروجي مورد استفاده قرار مـي گيـرد و اگـر DDAN صفر باشد . PAN بعنوان يك پايه ورودي در نظر گرفته مي شـود اگـر AN PORT يك باشد هنگامي كه پايه به عنوان ورودي تعريف شود ، مقاومت UP PULL فعال ميشود . براي غير فعال كردن مقاومت بايد AN PORT صفر شود يا اينكه پايـه بـه عنوان خروجي تعريف شود پايه هاي پورت زماني كه ري ست اتفـاق مـي افتـد بـه حالت STATE – TRI مي روند .
– ديگر كاربردهاي پورت A :
پورت A به عنوان ADC هم استفاده مي شود اين نكته بـسيار مهـم اسـت كـه اگـر تعدادي از پايه هاي پـورت Aخروجـي تعريـف شـوند در زمـان نمونـه بـرداري از سيگنال آنالوگ توسط ADC، سوئيچ نشوند . اين كار ممكن اسـت عمليـات تبـديل ADC ا ر معتبر كند .
– پورت B :
پورت B يك O/I دو طرفه 8 بيتي است . سه آدرس از مكان حافظه O/I اختصاص به B PORT دارد. يك آدرس براي رجيستر داده B PORT دومي رجيـستر جهـت داده RB DD و سومي پايه ورودي پورت B ، PINB است آدرس پايه هاي ورودي پورت B فقط قابل خواندن است . در صور تي كه رجيستر داده و رجيـستر داده هـم خواندني و هم نوشتني هستند پايه هاي پـورت داراي مقاومـت UP -PULL مجـزا
15
هستند. بافر خروجي پروت Bجرياني تا MA20 را SINKكند و در نتيجه مي توانـد LED را مستقيماًراه اندازي كند . هنگامي كه 7PB-PBO با مقاومت هـاي -PULL DOWN ، به ع نوان خروجي استفاده مي شوند آنهـا SOURCE جريـان مـي شـوند زماني كه مقاومت هاي UP -PULL داخلي فعال مي باشند .
– استفاده از پورت B به عنوان يك O/I عمومي ديجيتال :
تمام 8 پايه موجود زماني كه به عنوان پايـه هـاي O/I ديجيتـال اسـتفاده مـي شـوند داراي عملكرد مساوي هستند .PBN، پايه O/I عمـومي : بيـت DDBN در رجيـستر DDRB مشخص كنندة جهت پايه است .
اگر DDBN يك باشد ، PBN به عنوان يك پايه خروجي مـورد اسـتفاده قـرار مـي گيرد و اگر DDBN صفر باشد، PBN به عنوان يك پايه ورودي مورد اسـتفاده قـرار مي گيرد اگر BN PORT يك باشد ، هنگامي كه پايه به عنوان ورودي تعريف شود
، مقاومت UP -PULL فعال مي شود . براي خاموش كردن مقاومـت UP – PULL بايد BN PORT صفر شود يا اينكه پايه به عنوان خروجي تعريف شـود پايـه هـاي پورت زماني كه ري ست اتفاق مي افتد به حالت STATE -TRI مي روند .
16
– ديگر كاربردهاي پورت B :
PORT B.7-SCK*
SCK: كلاك خروجي MASTER و كلاك ورودي SLAVE براي ارتبـاط SPI است زماني كه SPI به عنوان SLAVE شكل دهي مي شود اين پايه با توجه بـه تنظيم 6DDB و در حالت SLAVE بعنوان خروجي استفاده مي شود . PORT B.5-MOSI*
MOSI: ورودي داده SLAVE و خروجــي داده MASTER كــه بــراي ارتبــاط SPIاستفاده مي شود زماني كه SPI به عنوان MASTER شكل دهـي مـي شـود اين پايه با توجه به تنظيمات 5DDB خروجي و در حالـت SLAVE بـه عنـوان ورودي استفاده مي شود .
PORT B.4- SS *
SS :زماني كه SPI به عنوان SLAVE شكل دهي مي شـود . .4PB بـا توجـه بـه 4DDB ورودي تعريف مي شود و در SLAVE با LOW شـدن ايـن پايـه SPI فعال مي شود .اين پايه در MASTER مي تواند خروجي يا ورودي تعريف شود .
17
PORTB.3-OCO,AIN1*
1AIN– ورودي منفي مقايسه كننده آنالوگ است
OCO– ديگــر كــاربرد ايــن پايــه بــه عنــوان خروجــي مــد مقايــسه اي COUNTERO/TIMER است پايه 3PB با يك كردن 7 DDB مي تواند بـراي خروجي مد مقايسه اي COUNTERO / TIMER شكل دهي شو .د
PORT B.2-INT2 , AIN0
0AIN: ورودي مثبت مقايسه كنندة آنالوگ است
2INT : ديگر كاربرد اين پايه به عنوان منبع وقفة خارجي دو اسـت . پايـة 2PB مي تواند به عنوان منبع وقفه خارجي براي ميكرو استفاده شود .
PORT B.1-T1
1T: ورودي كلاك براي CONTER /TIMER است .
PORT B.O-XCK , TO
TO: ورودي كلاك براي 0COUMTER /TIMER است .
XCK: اين پايه نيز مي تواند به عنوان كلاك خـارجي USART اسـتفاده شـود . اين پايه فقط زماني كه USART درمد آسنكرون كار مي كند فعال مي شود . *پورت C
پورت C يك O/I دو طرفـه 8 بيتـي اسـت . سـه آدرس از مكـان حلقطـه O/I اختصاص به C PORT دارد يك آدرس براي رجيستر داده پـورت C PORT،
18
دومي رجيستر جهت داده DDRC و سومي پايه ورودي پـورت رجيـستر جهـت داده هم خواندني و هم نوشتني هـستند تمـام پايـه هـاي پـورت داراي مقا ومـت (DOWN-PULL (، خروجي استفاده مـي شـوند آنهـا SOURCE جريـان مـي شوند .
زماني كه مقاومت هاي UP -PULL داخلي فعال باشند .
– استفاده از C PORT به عنوان O/I عمومي ديجيتال :
تمام 8 پايه موجود زماني كه به عنون پايه هـاي O/I ديجيتـال اسـتفاده مـي شـوند ، داراي عملكرد مساوي هستند .
PCN: پايه O/I عمومي : بيت DDCN در رجيستر DDRC مشخص كننـدة جهـت پايه است و . PCN به عنوان يك پايه ورودي در نظر گرفته مـي شـود اگـر PORT CN يك باشد ، هنگامي كه پايه به عنوان ورودي تعريف شـود مقاومـت – PULL UP فعال مي شود براي خـاموش كـردن مقاومـت UP – PULL بايـد CN PORT صفر شود يا اينكه پايه به عنوان خروجي تعريف شود پايه هاي پورت در زمـاني كـه ري ست ، اتفاق مي افتد به حالت STATE -TRI مي روند .
– ديگر كاربردهاي پورت C
PORT C 7- TOSC2
19
2OSC T :زماني كه تايمر / كانتر 2 در آمد سنكرون كار مي كند. به اين پايه و پايـه 1TOSC كريستال ساعت متصل مي شود . در اين حالت ديگر نميتوان ايـن پايـه را به عنوان O/Iاستفاده نمود .
PORTC.6-TOSC1*
1TOSC : زماني كه تايمر / كانتر 2 در حد آسنكرون كار مي كند به اين پايه و پايه 1 TOSC كريستال متصل مي شود در اين حالت ديگـر نمـي تـوان ايـن پايـه را بـه عنوان O/I استفاده نمود .
PORT C.5- TDI*
TDI »در زمان ارتباط JTAG به عنوان ورودي داده سريال عمـل مـي كنـد و ديگـر نميتوان از آن پايه به عنوان O/I استفاده نمود .
PORT C.4- TDO *
TDO– در زمان ارتباط JTAG ، به عنوان خروجي داده سريال عمل مي كند و ديگر نمي توان از اين پايه به عنوان O/I استفاده نمود .
PORT C.3- TMS
TMS : در زمان ارتباط JTAG استفاده مي شود و ديگر نمي تـوان از ايـن پايـه بـه عنوان O/I استفاده نمود .
20
PORT C.2-TCK*
TCK: در زمان ارتباط JTAG استفاده مي شود و ديگر نمـي تـوان از ايـن پايـه بـه عنوان O/I استفاده نم .ود
PORT C.1- SDA*
SDA: در زمان ارتباط WIRE 2- به عنوان خط داده استفاده مي شود . PORT C.O-SCL *
SCL: در زمان ارتباط WIRE 2- به عنوان خط كلاك استفاده مي شود . ـ پورت D :
پورت D يك O/I دو طرفه 8 بيتي است . سه آدرس از مكان حافظه O/I اختصاص به O PORT دارد
يك آدرس براي رجيـستر داده D PORT، دومـي رجيـستر جهـت داده DDRD و سومي پايه ورودي پورت D، PIND است .
آدرس پايه هاي ورودي پورت Dفقط قابل خواندن است در صـورتي كـه رجيـستر داده جهت داده هم خواندني و هـم نوشـتني هـستند تمـام پايـه هـاي پـورت داراي مقاومت UP -PULL مجزا هستند .
بافر خروجي D PORT مي توانـد تـا MA20 را SINK كنـد و در نتيجـه LED را مستقيماً راه اندازي مي كنـد هنگـامي كـه 7PD 0-PD بـا مقاومـت هـاي -PULL
21
DOWN به عنوان خروجي استفاده مي شوند آنهـا SOURCE جريـان مـي شـوند ، زماني كه مقاومت هاي UP -PULL داخلي فعال باشند .
– استفاده از پورت D به عنوان O/I عمومي ديجيتال
تمام 8 پايه موجود زماني كه به عنوان پايـه هـاي O/I ديجيتـال اسـتفاده مـي شـوند داراي عملكرد مساوي هستند .
PDN: پاية O/I عمومي : بيت DDDN در رجيستر DDRD مشخص كنندة جهت پايه است .
اگر DDDN يك باشد، PDN به عنوان يك پايه خروجـي مـورد اسـتفاده قـرار مـي گيرد و اگر DDDN صفر باشد ، PDN به عنوان يك پايه ورودي در نظر گرفته مـي شود اگر DN PORT يك باشد هنگامي كه به عنوان ورودي تعريف شـود، مقاومـت UP-PULL فعـال مـي شـود . بـراي خـاموش كـردن مقاومـت UP -PULL بايـد DN -PORT صفر شود يا اينكه پايه به عنوان خروجـي تعريـف شـود . پايـه هـاي
پورت در زماني كه ري ست اتفاق مي افتد به حالت STATE – TRI مي روند – ديگر كاربردهاي پورت D
22
PORT S.7- OC2*
2OC: خروجي در مقايسه اي تايمر / كانتر 2 7PD بــا يــك شــدن 7DDD مي تواند به عنوان پايه خروجي مد مقايـسه اي 2 COUNTER / TIMER شكل دهي شود . اين پايه همچنين براي خروجي PWM تايمر استفاده مي شود . PORT D.6-ICP*
ICP6:PD مي تواند به عنوان پايه ورودي CAPTURE تايمر / كانتر 1 عمل كند .
: PORTD.5- OC1A*
A1OC: خروجي مد مقايسه اي 1 COONTER/ TIMER پايه PDSبا يـك شـدن 5DDD مي تواند براي خروجي مد مقاسه اي COUNTER /TIMER شكل دهـي شود . اين پايه همچنين براي خروجي PWM تايمر 1 استفاده مي شود .
PORTD.4-OC1B •
B1OC : خروجي مد مقايسه اي 1COUNTER /TIMER
23
پايــه 4PD بــا يــك شــدن 4DDD مــي تواننــد بــراي خروجــي مــد مقايــسه اي COUNTROL/TIMER شكل دهي شود . اين پايه همچن ين براي خروجي PWM تايمر استفاده مي شود .
PORTD.3-INT1 •
1INT : منبع وقفه خارجي يك
پايه 3PD مي تواند به عنوان منبع وقفه خارجي براي ميكرو استفاده شود . ORTD.2-INT0*
0INT منبع وقفه خارجي صفر
پايه 2PD مي تواند به عنوان منبع وقفه خارجي براي ميكرو استفاده شود ORT D.1-TXD*
TXD: ارسال داده (پايه خروجي داده براي USART(
زماني كه ارسال USART فعال مي شود بايد با توجه به 1DDD به عنوان خروجـي شكل دهي مي شود .
ORT D.0-RXD*
RXD: دريافت داده ( پايه ورودي داده براي USART(
زماني كه دريافت USART فعال مي شود پايه با توجه به 0DDD به عنـوان ورودي شكل دهي مي شود .
24
-2-1 LC درا 1ر 298L
يكي از قطعات مناسب جهت راه اندازي موتور است كه بـا توجـه بـه جريـان دهـي مناسب (تا يك آمپر درهر كانال ) مي تواند نياز بسياري 298L درايو را از پروژه هـا مرتفع سازد . اين قطعه با مدار ارائه شـده ميتوانـد و موتـو ر را بـه صـورت مجـزا راه اندازي كرده و جهت گردش آنها را كنترل نمايد . اين كنترل توسط اعمال ولتاژ بـه 4 ورودي منطقي كه قطعه صورت مي گيرد .( براي هـر موتـو دو ورودي ) كـه مـي توان خروجي ميكرو كنترلر يا مدارات حسگر را بصورت مستقيم بـه ايـن 4 ورودي متصل نمود و به راحتي موتور را كنترل كرد . در صورتي كه از ايـن قطعـه بـراي راه اندازي موتور هاي روبات خود بهره مـي گيريـد دقـت كنيـد كـه حتمـاً بـرروي آن حرارت گيري مناسب وصل نماييد .
25
+5 V
R1
10k
+5 v
R2
10k
VS
9 U1 4
9 V 9 V
D2
1N4001
D1
1N4001
D4
1N4001
D3
1N4001
IN1 5IN2 7 IN3 10IN4 12 ENA 6
VCC
VS
OUT1 2 OUT2 3
9 v 9 V
ENB 11 OUT3 13
SENSA 1SENSB 15 GND 8
OUT4 14
L298
شكل –2–1IC درايور 298L
D8
1N4001
D5
1N4001
D6
1N4001
D7
1N4001
26
ي 298L
1 ه
ـ 3 4 /
L248 PIN DESCRIPTION
PIN 1- CUROENT SENSINGA
اين پايه جهت كنترل جريان موتور Aاستفاده مي گردد . همچنين مي توان ايـن پايـه را به صورت مستقيم به خط منفي مدار (GND (وصل كرد كه در اين صورت كنترل برروي جريان وجود ندارد .
PIN2- OUT PUT 1-
اين پايه به يكي از ترمينال هاي موتور Aمتصل مي گردد همچنين ديود هـائي جهـت حفاظت به همين پايه متصل مي شود .
PIN3-OUT PUT 2 –
اين پين به ترمينال ديگر موتور Aمتصل شده و ديودهائي نيز به آن متصل مي شود . (PIN4- SUPPLY VOLTAGE)SV–
به اين پايه بايد ولتاژ مورد نظر خود جهت اعمال بـه موتورهـا را وصـل نمـود . ايـن ولتاژ با توجه به موتورها ي مورد استفاده حداكثر تا 46 ولت مي تواند افزايش يابـد ( براي ساخت روبات هاي كوچك به طور معمول بين 6 تا 12 وات مي باشد ) PIN5.INPUT2 TTL COMPATIBLE 1 TO DRIVE MOTOR A–
27
اين پايه بايد به صفر يا 3 ولت وصل شود كه همراه با پين 7 مي تواند جهت گردش موتور را مشخص نماي .د
PIN 6 .ENABLE A TTL COMPATIBLE ENABLE IN PUT FOR MOTOR A-
اين پايه جهت روشن و خاموش كردن موتـور A و در بيـشتر مواقـع جهـت اعمـال فركانس PWM به موتور استفاده مي گردد . ( V3 مـواور را روشـن و V0 موتـور را خاموش مي كند )
PIN 7.INPUT 2 TTL COMPATIBLE IN PUTS2 TO DRIVE MOTOR A- اين پايه بايد به صفر يا 5 ولت متصل گردد كه همـراه بـا پـين 5 مـي توانـد جهـت
گردش موتور رامشخص نمايد .
PIN 8 .GND
اتصال به خط منفي مدار GND
PIN 9.(LOGIC SUPPLY VOLTAGE)VSS
اتصال به 5 تا 7 ولت
PIN 10 – INPUT 3 TTL COMPATIBLE INPUTS 1 TO DRIVE MOTOR B– اين پايه بايد به صفر يا 3 ولت متصل گردد كه همراه با پـين 12 مـي تواننـد جهـت گردش موتور B را مشخص نمايئد .
PIN 11.ENABLE B TTL COMPATIBLE IN PUT FOR MOTOR B-
28
اين پايه جهت روشن و خاموش كـردن موتـور Bو در بيـشتر مواقـع جهـت اعمـال فركانس PWM به موتور استفاده مي گردد . پنج ولت موتور را روشـن وصـفر ولـت موتور را خاموش مي كند .
PIN 12- INPUT 4TTL COMPATIBLE IN PUTS 2 TO DRIVE MOTOR B- اين پايه بايد به صفر يا پنج ولت متصل گردد كه همراه با پين 10 مي تواننـد جهـت
گردش موتور B را مشخص نمايند .
PIN 13- OUTPUT3-
اين پايه به يكي از ترمينال هاي موتور Bمنتقـل مـي گـردد همچنـين ديودهـائي نيـز جهت حفاظت به همين پايه متصل مي گردد .
PIN 14 .OUT POT 4-
اين ترمينال به ديگر موتور Bمتصل مي گردد . همچنين ديودهاي جهت حفاظـت بـه اين پايه متصل مي گردد .
PIN15.CURRENT SENSINGB-
اين پايه جهت كنترل جريان موتور Bاستفاده مي گردد همچنين مي توان اين پايـه را به صورت مستقيم به خط منفي دار GNDاتصال داد كه در اين صـورت كنترلـي بـر روي جريان وجود ندارد .
دون 5 70CNY:
6 –3–1ر
29
اين سنسور يكي از رايج ترين سنسورهاي استفاده شده در روبـات مـسير يـاب مـي باشد . اين سنسور داراي بردي حداكثر تا CM2.5 مي باشد كه مدار آن بصورت زير ارائه گرديده است .
+5 v
+5 V
A
K
R1 220
E
C
RV1
20 k
R2
47 k
شكل –3–1 مدار70CNY
برنامة مربط به اين سنسور براي سيستم روبات : به صورت زير است
CONFIG ADC
START ADC
DO
A=GET ADC(0)
IF A > 696 THEM
30
SET PORT D.6
ELSE
RESET PORT D.6
END IF
LOOP
END
POWER SUPPLY-4-1
از اين مدار براي تغذية كل سيستم ( روبات ) استفاده مي شود كه بصورت زير ارائـه ميگردد .
U1
78xx
VI 1VO 3
DC:9_15 V
BR1
C1
10uf
GND
2
C2
100nf
POWER SUPPLY 4–1 شكل
31
-IC رگولاتور XX:76 اين IC از سري مثبت رگولاتور ها است كه براي ثبيت ولتـاژ استفاده شده است
براي اين مدار از دو ICرگولاتور استفاده شده كه يكي از آنها براي خروجـي V12 طراحي شده كه به قسمت هائي چون درايور (298L (و برخي از قسمت هائي ديگر مدار مي باشد (7812 )
–IC رگولاتور :7805 اين IC نيز همانند قبلي از سري مثبـت مـي باشـد كـه بـراي تغذية قسمت هائي چون ميكرو كنترلر AVR است فاده شده است . بنابراين اين سيستم داراي دو IC رگولاتور است كه هر كدام براي منظوري خاص استفاده شده اند . – خازن ((v−16 ∝F10(: براي حذف نويز مي باشد .
– خازن (V-16NF100 (: اين خازن نيز براي حذف نويز مـي باشـد امـا نويزهـاي فركانس بالا مي باشد .
– پل د يودي : اين پل به اين منظور مورد استفاده قرار گرفته كه براي وصل تغذيه به ورودي مدار ، مثبت يا منفي بودن ورودي مهم نباشند . يعني براي اتـصال نيـازي بـه دانستن پلاريتة تغذية ورودي نيست .
32
ي DC
ت – : ر ه
7 $ رو-
-5-1 89
اين قسمت شامل سيستم حركتي روبات م ي شود . حركت روباتها با اسـتفاده از پـا، چرخ يا ريل انجام مي شود . چرخها يا پاها را مي توان با موتورها ، سـولنوئيدها يـا آلياژهاي حافظه دار (SMA (به حركت در آورد .
كه معمولاً در روباتهاي ابتدايي از موتور و چرخ استفاده مي شود . در يـك پـروژه مكاترونيـك يـا ربوتيـك عـلاوه بـر قطعـات لازم جهـت سـاخت قسمتهاي ذكر شده به يك يا چند منبع تغذيه هم نياز داريم .
قسمتهاي مختلف يك روبات كه نياز به منبع تغذيه دارد :
قسمتهاي الكتريكي ، مكانيكي شامل : موتورها و بخشهايي كه به صورت هيدروليك و پنوماتيك كار مي كنند .
اگر روبات متحرك ب اشد بايد از باطري استفاده شود . اگر روبـات ثابـت باشـد مـي توان از برق AC استفاده كرد چون تغذيه روباتها اكثراً برق DC ، مي باشـد بنـابراين بايد برق AC را بوسيله يكسوساز و فيلتر به DC تبديل كرد .
33
يكي از مهمترين اجزاي يك روبوت نيروي محركه آن است براي حركت دادن سـاز ه اي كه ساخته ايد نياز به انرژي مكانيكي داريد .اين انرژي معمولاً توسط يـك موتـور الكتريكي تأمين مي شود . موتور الكتريكي يا اصطلاحĤً آرميچرها در واقع مبدل هاي انرژي هستند موتورهاي الكتريكي مي توانند انـرژي الكتريكـي كـه ازترمينالهـاي آن وارد مي شود رابه انرژي مكا نيكي تبيدل كنند انـرژي مكـانيكي معمـولاً بـه صـورت دوران در شافت (محور ) موتور ظـاهر مـي شـود .دوران ايـن محـور ( شـافت ) دو مشخصه اساسي دارد . يكي سرعت دوران آن و ديگري قدرت آن . از ضرب سرعت خطي ( متر بر ثانيه ) در نيروي موتور مي توانيد توان نهـايي خروجـي آن را محاسـبه كنيد .
همان طور كه گفته شد يك موتور الكتريكي ، الكتريسته رابه حركت مكانيكي تبديل مي كند عمل عكس آن تبديل حركت مكانيكي به الكتريسيته اسـت توسـط ژنراتـور انجام مي شود اين دو وسيله بـه جـز در عملكـرد ، مـشابه يكـديگر هـستند . اكثـر موتورهاي الكتريكي توسط الكترومغناطيس ك ار مي كنند . اما موتورهايي كه بر اساس پديده هاي ديگري نظير نيروي الكترواستاتيك و اثر پيزوالكتريك كار مي كننـد، هـم وجود دارند .
ايده كلي اين است كه وقتي يك ماده حامل جريان الكتريسيته تحت اثر يـك ميـدان مغناطيسي قرار مي گيرد ، نيرويي برروي آن ماده از سوي ميدان ا عمال مـي شـود در
34
يك موتور استوانه اي ، روتور به علت گشتاوري كه ناشـي از نيرويـي اسـت كـه بـه فاصلهاي معين از محور روتور به روتور اعمال مي شود مي گردد . همان طور كه گفته شد اغلب موتورهاي الكتريكي دوارنـد، امـا موتـور خطـي هـم وجود دارند . در يك موتور دوار بخش متحرك كـ ( ه معمـولاً درون موتـور اسـت ) روتور و بخش ثابت استاتور خوانده مي شود . موتـور شـامل آهنرباهـاي الكتريكـي است كه روي يك قابل سيم پيچي شده است گرچه اين قاب اغلب آرميچر خوانـده مي شود اما اين واژه عموماً به غلط به كار برده مي شود . در واقع آرميچر آن بخـش از موتور است كه به آن ولتاژ ورودي اعمال مي شود يا آن بخش از ژنراتـور اسـت كه در آن ولتاژ خروجي ايجاد مي شـود بـا توجـه بـه طراحـي ماشـين ، هركـدام از بخشهاي روتور يـا اسـتاتور مـي تواننـد بـه عنـوان آرميچـر باشـندو بـراي سـاختن موتورهايي بسيار ساده كيتهايي را در مدارس استفاده مي كنند .
باتوجه به اينكه گفتيم موتور يك مبدل است ، اگر موتور شما ايـده آل باشـد تـوان خروجي كه بدست مي آوريد با توان ورودي يعني انـرژي الكتريكـي مـصرف شـده برابر خواهد بود . موتورهاي الكتريكي انواع مختلفي دارند از جمله استپ موتورها ، سرور موتورها ، موتورهاي دي سي DC، موتورهاي …و AC
هريك از موتورهاي نام برده شده ويژگي خاصـي دارد مـثلاً اسـتپ موتورهـا داراي دقت بالايي هستند و با توجه به نوع موتور مي توان دقت گردش موتور در حد چند
35
درجه كنترل نمود . از ويژگي هاي اساسي موتورهاي DC اين است كه جهت حركت و سرعت حركت آنها به راحتي قابل كنترل است . با تغيير متوسط ولتاژ ورودي مـي توانيد سرعت موتور را تغيير دهيد و بـا تغييـر پلاريتـه ( جهـت اتـصالي تغذيـه بـه موتور) جهت دوران شافت تغيير خواهد نمود .
توان خروجي از ضرب سرعت در قـدرت و بااسـتفاده از فرمـول D.F=W بدسـت ميآيد .بسته به كاركرد روبات ، توان مصرفي ، دقت لازم و پارامترهايي از ايـن نـوع موتور روبات انتخاب مي شود .
بي شك يكي از مشخصه هاي اصلي موفقيت يـك روبـات انتخـاب صـحيح موتـور محرك روبات مي باشد .
هنگام انتخاب موتور بايد به چه چيزهايي توجه داشت :
-1 در دست بودن منبع تغذيه
-2 شرط يا عوامل راه اندازي
-3 مشخصه هاي راه اندازي ( گشتاور – سرعت ) مناسب
-4 سرعت عملكرد كار مطلوب
-5 قابليت كاركردن به جلووعقب
-6 مشخصه هاي شتاب ( وابسته به بار )
-7 بازده مناسب در بار اسمي
36
-8 توانايي تحمل اضافه بار
-9 اطمينان الكتريكي و حرارتي
-10 قابليت نگهداري و عمر مفيد
-11 ظاهر مكانيكي مناسب (اندازه ، وزن ، ميزان صدا ، محيط اطراف ) -12 پيچيدگي كنترل و هزينه
-13 ولتاژ 5 -8-4-1,V
MA-2A50 جريان -14
ت :
ار رو-
:-6–1>1 ; آ
-1 پورت A)7PA.0-PA (اين پورت به عنوان ورودي ميكرو مـورد اسـتفاده قـرار گرفته ورودي اين پورت ADC) تبديل سيگنال آنا لوگ بـه ديجيتـال ) مـي باشـد بـه طوري كه هريك از سنسورها (8عدد ) و هريك از 7PA – 0PA وصل مي شوند.بـه اين معني كه با فعال شدن هر سنسور خروجي آن بـه پـورت A رفتـه ودر آنجـا بـه سـينگنال ديجيتـال تبـديل شـده و پـردازش لازم روي سنـسورمورد نظـر در MIC صورت مي گيرد و سپس توسط پور ت( -7PC.0-PC (كه به عنوان خروجي مد نظر
قرار گرفته ، به 8 عدد LED براي تستس عمل فعال بودن سنسورها مي رود . 2) پورت B).3PB.0-PB ( :اين پورت به عنوان خروجي مورد اسـتفاده قـرار گرفتـه بطــوري كــه فرمــان لازم را از MIC) ميكــرو 32ATMEGA (بــه پايــه هــاي
37
4IN 1-IN) 4 -PUTT IN (درايور 296L برد و اين درايو را تحت كنترل خـود در مي آورد .
3) همان طور كه از روي شكل هم مشخص مي باشد پورت هاي .7PC.0-PC به عنـوان خروجي استفاده مي شوند .
بنابراين همانطور كه ملاحظه مي شود خروجي پورت C).7PC.0-PC (هر كدام بـه يـك ترانزيستور 945C مي روند در كلكتور ايـن ترانزيـستور يـك LED قـرار گرفتـه ( بـراي تقويت جريان و حفاظت از پورت C براي روشن شدن LED از اين مدار تقويـت كننـدة
يك ترانزيستوري ساده استفاده شده است ) در واقع پورت C، هر كـدام از .7PC – .0PC براي يك سنسور 70CNY قرارداده شده اند كه روشن شدن LED ها به اين معنـي اسـت كه كدام سنسور در حال كار مي باشد .
يعني اگر .0PC خروجي (1) شد و LED را روشن كرد ، به اين معني است كـه سنـسور اولي از سمت راست فعال است .
4) پورت D).5PD.4-PD (نيز به عنوان خروجي مورد استفاده مي باشند كه به پايـه هـاي ENABLE) ENA , ENB (درايور 1298 مي روند و دستور فعال يا غير فعال بـودن ايـن درايور را مشخص مي كند
بنابراين همان طور كه از شكل نيز ملاحظه مي شود . ،؛ سيستم اينگونه عمل ميكنـد كـه ابتدا سنسورها خط مورد نظر را حس كرده ، بـه پـورت ورودي يعنـي PA كـه ADC مـي باشد ، رفته و بعد از پردازش مد نظر به سه پورت خروجي (PD,PC,PB (رفتـه كـه B.P
38
به منظور فرمان دادن به 1298 C.P به منظور تست كار سنسور ها و D.P نيز جهت فعـال كردن يا غير فعال كردن درايور 298L مورد استفاده قرار مي گيرند .
39
MOTOR1
D3
–
+
VS=15
D4
MOTOR2
D7
VS=15
D8
E
Vo(sensor 1) C
47K
VCC
VS=15
D2
D1
2
3
13
14
VS=15
D5
L298
D6
220
VCC
CNY70 A
K
1000UF Vs=15
VCC=5
4 9
OUT1
VS
VCC
OUT2
OUT3
OUT4
GND
SENSA
U2 8
IN1
IN2
IN3
ENA
ENB
SENSB
10
IN4
5
12
11
15
To Vo(Sensor5)
To Vo(Sensor2) To Vo(Sensor3) To Vo(Sensor4)
40
To Vo(Sensor6)
To Vo(Sensor7)
7
To Vo(Sensor8)
6
1
9
13
12
39
38
37
36
35
34
33
3
5
2
1
4
6
8
PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7
PB0/XCK/T0
PB2/INT2/AIN0
7
PB5/MOSI
RESET
XTAL1
XTAL2
PC6/TOSC1
PC7/TOSC2
PD4/OC1B
PB1/T1
PB3/OC0/AIN1
PB4/SS
PB7/SCK
PB6/MISO
PC0/SCL
PC1/SDA
PC3/TMS
PC4/TDO
PD0/RXD
PD2/INT0
PD3/INT1
PD5/OC1A
PD7/OC2
ATMEGA32
U1
22
23
PC2/TCK
PC5/TDI
PD1/TXD
PD6/ICP
AVCC
AREF
0.1UF
220
VCC=5
680
14
15
16
17
18
19
20
21
VCC
LED1
C945
220
24
25
26
27
28
29
To LED4
To LED5
To LED6
To LED7
To LED8
30
32
10UH
VCC=5
680
LED2 VCC=5
C945
680
220
C945
LED3
شكل 1 – 5 – مدار كامل روبات
40
شكل 6–1 – PCB مدار روبات
41
دوم : $م ا ار
42
BASCON AUR 061 $ $ – = > -1-2
انواع متنوعي از كامپايلرهاي AVR عرضه شـده انـد كـه در ايـن ميـان كامپايلرهـاي اعتبار و اهميت از AVR STUDIO , FASTAVR , CODVISION , BASCOM بيشتري برخوردار هستند . در اين فصل قصد داريم يكي از قديمي تـرين آنهـا را بـا نــام AVR BASCOM ويــراينش 1.11.7.4 معرفــي كــرده و بــه آن بپــردازيم . BASCOM تمــام ميكروهــاي AVR را حمايــت كــرده و از زبــان BASIC بــراي برنامهنويسي AVR ها استفاده مي نمايد در اين فصل برحي منوهاي BASCOM بـه طور كامل تشريح شده اند از قابليت هاي بسيار ارزنده محـيط BASCOM داشـتن تحليـل گـر يـا بـه عبـارتي SIMULATOR داخلـي اسـت . كـه بـراي يـادگيري برنامهنويسي AVR بسيار كار آمد است .
ورودي سيگنال آنالوگ ADC و مقايسه كنندة آنالوگ ، ايجاد پالس بر روي پايه اي خاص ، صفحه كليد 4×4 و LCD ايجاد تمام وقفه ها بصورت اختياري ، نوشـتن و خواندن ،حافظه هاي EEPROM , SRAM ، رويت تمـام رجيـسترها و متغيرهـاي محلي و سراسري برنامه ؛ اجراي برنامه به صورت خط به خط ، رويت صفر يا يـك بودن تمام پايه ها توسط LED تغيير منطق پايه دلخواه و بسياري از امكانـات ديگـر توسط محيط تحليل گر SIMOLATOR و از همه مهمتر برنامه نويسي ساده باعـث
43
شده است كه اين كامپايلر در كنار ديگر كامپايلرهـاي معـروف مـورد تأييـد اسـتفاده برنامه نويسان قرار گيرد .
6$ن :A @و -*0 د ? رات <ـ = BAS
-2-2 دB :COM AVR
اين دستور بعد يك متغير را نشان مي دهد با اين دستور مي توانيد متغيرهايي كه در برنامه به كاربرده مي شود .تعريف كرد .
– دستور CONST :
براي تعريف يك ثابت از اين دستور استفاده مي شود .
-دستور :ALIAS :
از اين دستور براي تغيير نام استفاده مي شود .
-دستور CHR :
از اين دستور براي تبديل متغيير عددي يا يك ثابت به كاراكتر اسـتفاده مـي شـود از اين دستور ميتوان يد زماني كه قصدداريد يك كـاراكتر بـرروي LCD نمـايش دهيـد ، استفاده نماييد . در صورتي كه از ايـن دسـتور بـه صـورت (VAR (CHR PRINT استفاده نماييد ، كاراكتر اسكي VAR به پورت سريال ارسال مي شود . – دستور INSTR :
اين دستور محل و موقعيت يك زير نوشته را دررشتة ديگر مشخص مي كند .
44
– دستورINCR :
اين دستور يك واحد به متغيير عددي VAR مي افزايد
– دستور DECR :
اين دستور متغير VAR را يك واحد كم مي كند .
-دستور CHECKSUM :
اين دستور مجموع كد ؟؟ اسكي رشـته VAR را بـر مـي گردانـد كـه البتـه اگـر مجموع كد اسكي رشته از عدد 255 بيشتر شـود ، مقـدار 256 از مجمـوع كـم ميشود .
– دستور LOW :
ايــن دســتور LSB)BYTE SIGNIFICANT LEAST (يــك متغييــر را بــر ميگرداند .
– دستور HIGH :
– اين دستور پر ارزش ترين بايت (MSB (يك متغيير را بر مي گرداند .(مقـدار MSB متغيير S در VAR جاي مي گيرد )
– دستور LCASE:
اين دستور تمام حروف رشتة مور دنظر را تبديل به حـروف كوچـك مـي كنـد ( تمام رشته SOARCE كوچك شده و در رشتة TARGET جاي داده مي شود )
45
– دستور UCASE :
اين دستور تمام حروف رشته مورد نظر را تبديل به حروف بزرگ مي كند . – دستور RIGHT :
با اين دستور قسمتي از يك رشته جدا مي كنيم .
-دستور :LEFT :
اين د ستور كاراكترهاي سمت چپ يـك رشـته را بـه تعـداد تعيـين شـده جـدا مي .كند
-دستور LEN :
اين دتسور طول يا به عبارتي تعداد كاراكترهاي يك رشته را بر مي گرداند . – دستور LTRIM :
اين دستور فضاي خالي رشته را حذف مي كند .
-دستور SWAP :
با اجراي اين دستور محتواي متغيير 1VAR در متغيـر 2 VAR و محتـواي متغيـر 2VAR در متغير 1 VAR قرار مي گيرد .
1 VAR , 2 VAR مي توانند داده هائي از نوع WORD , LONG – STRING . باشند , INTEGER , BYTE , BIT
46
– دستور MID :
با اين دستور مي توان قسمتي از يك رشته را برداشت و يا قسمتي از يك رشـته را با قسمتي از يك رشته ديگر عوض كرد .
-دستور ROTATE :
با اين دستور مي توان تمام بيت ها را به چپ يا راست منتقـل كـرد ولـي تمـام بيتها محفوظ هستند و هيج بيتي بيرون فرستاده نمي شود .
– دستور SPACE :
براي ايجاد فضاي خالي از اين دستور استفاده مي شود
– تابع FORMAT :
اين دستور يك رشتة عددي را شكل دهي (FORMAT (مي كند . – تابع FUSING :
اين دستور براي روند كردن رشته هاي عددي استفاده مي شود .
47
– برنامه كامل روبات
” regfile = “m32def.dat$
crystal = 8000000$
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
Dim S0 As Word , S1 As Word , S2 As Word , S3 As Word , S4 As Word , S5 As Word , S6 As Word , S7 As Word , Sensor As Byte , Mr As Word , Ml As Word , Mrf&Mlf As Byte , Mrf&Mlb As Byte , Mrb&Mlf As Byte , Mrb&Mlb As Byte ,
Mrs&Mlf As Byte , Mrf&Mls As Byte , Meshki As Bit , Sefid As Word Config Portb = Output
Config Portd = Output
Config Portc = Output
Reset Portc
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&’ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ÊÚÇÑíÝ Mrf&Mlf = &B00000101
Mrf&Mlb = &B00000110
Mrb&Mlf = &B00001001
Mrb&Mlb = &B00001010
Mrs&Mlf = &B00000001
Mrf&Mls = &B00000100
Mr = 0
Ml = 0
Sensor = 0
Meshki = 0
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&’ ÔÑæÚ ÈÑäÇãå
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
: Star
Start Adc
Do
Pwm1a = Ml + 25
Pwm1b = Mr + 25
( S0 = Getadc(0
If S0 > 360 Then
Set Portc.0
Set Sensor.7
Else
Reset Portc.0
Reset Sensor.7
End If
( S1 = Getadc(1
If S1 > 360 Then
48
Set Portc.1
Set Sensor.6
Else
Reset Portc.1 Reset Sensor.6 End If
( S2 = Getadc(2 If S2 > 360 Then Set Portc.2
Set Sensor.5
Else
Reset Portc.2 Reset Sensor.5 End If
( S3 = Getadc(3 If S3 > 360 Then Set Portc.3
Set Sensor.4
Else
Reset Portc.3 Reset Sensor.4 End If
( S4 = Getadc(4 If S4 > 360 Then Set Portc.7
Set Sensor.3
Else
Reset Portc.7 Reset Sensor.3 End If
( S5 = Getadc(5 If S5 > 360 Then Set Portc.6
Set Sensor.2
Else
Reset Portc.6 Reset Sensor.2 End If
( S6 = Getadc(6 If S6 > 360then Set Portc.4
Set Sensor.1
Else
Reset Portc.4
49
Reset Sensor.1
End If
( S7 = Getadc(7
If S7 > 360 Then
Set Portc.5
Set Sensor.0
Else
Reset Portc.5
Reset Sensor.0
End If
If Meshki = 1 Then
Goto Meshki
End If
If Meshki = 0 Then
Goto Sefid
End If
******code*********************************************************’ ******************************************************
ÎØ ÑÇÓÊ Öãíäå ‘
ÓÝíÏ*************************************************************** ###############******##### OK
: Sefid
If Sensor = &B00011000 Then
Mr = 250
Ml = 250
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00001000 Then
Mr = 200
Ml = 220
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00010000 Then
Mr = 220
Ml = 200
Portb = Mrf&Mlf
50
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00000001 Then
Mr = 200
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00000010 Then
Mr = 135
Ml = 150
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00000100 Then
Mr = 190
Ml = 220
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00100000 Then
Mr = 220
Ml = 190
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B01000000 Then
Mr = 165
Ml = 120
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B10000000 Then
Mr = 200
Ml = 180
Portb = Mrf&Mlb
Meshki = 0
Goto Star
51
End If
ÒÇæíå 90ÏÑÌå Öãíäå ÓÝíÏ1-;’
******************************************************************* #########***###########OK
If Sensor = &B00011111 Then
Mr = 215
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00011110 Then
Mr = 215
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00011100 Then
Mr = 150
Ml = 150
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00001111 Then
Mr = 215
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00000111 Then
Mr = 215
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00001100 Then
Mr = 110
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
52
End If
ÒÇæíå 90ÏÑÌå Öãíäå ÓÝíÏ ;’
ÍÇáÊ2***********************************************************### ############OK
If Sensor = &B11111000 Then
Mr = 265
Ml = 250
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B11110000 Then
Mr = 265
Ml = 250
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B11111000 Then
Mr = 265
Ml = 250
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00111000 Then
Mr = 215
Ml = 200
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00110000 Then
Mr = 250
Ml = 80
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
ÈÑæÇäå-;’
******************************************************************* ##########**********************##########OK
If Sensor = &B01111110 Then
53
Mr = 200
Ml = 200
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00111100 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00111000 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00111110 Then
Mr = 135
Ml = 120
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B01111000 Then
Mr = 300
Ml = 150
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B01111100 Then
Mr = 200
Ml = 150
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00110000 Then
Mr = 300
Ml = 100
54
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
–äíã ÏÇíÑå ÍÇáÊ1;’
******************************************************************* **********
If Sensor = &B00011100 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00011110 Then
Mr = 250
Ml = 250
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00100000 Then
Mr = 250
Ml = 110
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B01000000 Then
Mr = 260
Ml = 100
Portb = Mrf&Mlb
Goto Star
End If
************************************”
If Sensor = &B10000000 Then
Mr = 200
Ml = 180
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00001000 Then
Mr = 165
Ml = 300
Portb = Mrf&Mlf
55
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00000100 Then
Mr = 160
Ml = 300
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00000010 Then
Mr = 100
Ml = 300
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00000001 Then
Mr = 200
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
***********************************’;’ If Sensor = &B00111111 Then
Mr = 200
Ml = 180
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00111110 Then
Mr = 165
Ml = 250
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’ If Sensor = &B00011110 Then
Mr = 165
Ml = 250
Portb = Mrf&Mlf
Meshki = 0
Goto Star
56
End If
äíã ÏÇíÑå ÍÇáÊ ;’
2’****************************************************************** ########***************#######OK
If Sensor = &B00111000 Then
Mr = 250
Ml = 100
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************”
: A59
If Sensor = &B01111000 Then
Mr = 315
Ml = 200
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B11111000 Then
Mr = 265
Ml = 250
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B00010000 Then
Mr = 250
Ml = 120
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B00110000 Then
Mr = 250
Ml = 100
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B01110000 Then
Mr = 300
Ml = 150
Portb = Mrf&Mlf
Meshki = 0
57
Goto Star
End If
************************************’;’ : A64
If Sensor = &B00000100 Then
Mr = 110
Ml = 250
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B00001100 Then
Mr = 120
Ml = 350
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’ If Sensor = &B00001110 Then
Mr = 120
Ml = 350
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’ If Sensor = &B00001111 Then
Mr = 265
Ml = 180
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’;’ : A68
If Sensor = &B11000000 Then
Mr = 265
Ml = 250
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’;’ If Sensor = &B00000111 Then
Mr = 265
Ml = 220
Portb = Mrf&Mlf
58
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B00000001 Then
Mr = 200
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B10000000 Then
Mr = 200
Ml = 180
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
-ãÇÑ;’
*******************************************************************’ ************************
If Sensor = &B00110000 Then
Mr = 250
Ml = 180
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’
: A76
If Sensor = &B00011001 Then
Mr = 140
Ml = 200
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’;’
If Sensor = &B10011000 Then
Mr = 250
Ml = 180
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
?????????????????************************************ ((‘ LOoP 90 ;’))
If Sensor = &B11111111 Then
59
Mr = 250
Ml = 250
Portb = Mrf&Mlf
Goto Star
End If
************************************’;’ If Sensor = &B01111111 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
************************************’;’ If Sensor = &B00111111 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
************************************’;’ If Sensor = &B11111110 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
************************************’;’ If Sensor = &B11111100 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
************************************ ((‘ LOo0p 45 ;’)) If Sensor = &B00011001 Then
Mr = 150
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
************************************’;’ If Sensor = &B00011011 Then
Mr = 160
Ml = 160
Portb = Mrf&Mlf
Goto Star
End If
************************************’;’ If Sensor = &B00001101 Then
Mr = 180
60
Ml = 200
Portb = Mrf&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00000011 Then
Mr = 250
Ml = 200
Portb = Mrb&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00110011 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00100011 Then
Mr = 150
Ml = 150
Portb = Mrf&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00010001 Then
Mr = 150
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00110011 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00001001 Then
Mr = 350
Ml = 300
Portb = Mrb&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00001011 Then
Mr = 350
Ml = 300
61
Portb = Mrb&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00100001 Then
Mr = 180
Ml = 200
Portb = Mrf&Mlf
Goto Star
End If
*************************************’ If Sensor = &B00010110 Then
Mr = 150
Ml = 180
Portb = Mrf&Mlf
Goto Star
End If
************************************’ If Sensor = &B10011000 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlf
Goto Star
End If
************************************’ If Sensor = &B11011000 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlf
Goto Star
End If
************************************’ If Sensor = &B10110000 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlf
Goto Star
End If
************************************’ If Sensor = &B11000000 Then
Mr = 180
Ml = 180
Portb = Mrf&Mlb
Goto Star
End If
************************************’ If Sensor = &B11001100 Then
Mr = 180
Ml = 150
62
Portb = Mrf&Mlf
Goto Star
End If
************************************’
If Sensor = &B11000100 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlf
Goto Star
End If
************************************’
If Sensor = &B10001000 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlf
Goto Star
End If
ÎØ ÑÇÓÊ Öãíäå ‘
***************************************************************ãÔ˜í ************
: Meshki
If Sensor = &B11100111 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlf
Meshki = 1
Goto Star
End If
************************************’
If Sensor = &B11110111 Then
Mr = 190
Ml = 200
Portb = Mrf&Mlf
Meshki = 1
Goto Star
End If
************************************’
If Sensor = &B11101111 Then
Mr = 200
Ml = 190
Portb = Mrf&Mlf
Meshki = 1
Goto Star
End If
***********************************’
If Sensor = &B11011111 Then
Mr = 200
Ml = 160
Portb = Mrf&Mlf
63
Meshki = 1
Goto Star
End If
***********************************’
If Sensor = &B11111011 Then
Mr = 160
Ml = 200
Portb = Mrf&Mlf
Meshki = 1
Goto Star
End If
***********************************’
If Sensor = &B11111101 Then
Mr = 160
Ml = 160
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
***********************************’
If Sensor = &B10111111 Then
Mr = 160
Ml = 160
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
mrb200***********************************’
If Sensor = &B11111110 Then
Mr = 130
Ml = 180
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
mlb 180***********************************’
If Sensor = &B01111111 Then
Mr = 200
Ml = 150
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
ÒÇæíå 90ÏÑÌå Öãíäå ‘
**************************************************************ãÔ˜í1 *******
If Sensor = &B00000111 Then
Mr = 200
Ml = 200
64
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B00001111 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B00111011 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B00000011 Then
Mr = 200
Ml = 220
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B10000011 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B00001111 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B11000011 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlb
65
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B10000111 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B11001111 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B00000011 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B10000011 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B11000111 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B00010111 Then
Mr = 180
Ml = 150
Portb = Mrf&Mlb
Meshki = 1
Goto Star
66
End If
**************************************************************ÍÇáÊ2′ ****************************
If Sensor = &B11100000 Then
Mr = 180
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************’
If Sensor = &B11110011 Then
Mr = 180
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************’
If Sensor = &B11101000 Then
Mr = 200
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************’
If Sensor = &B11011100 Then
Mr = 180
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************’
If Sensor = &B11100011 Then
Mr = 180
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************’
If Sensor = &B11110000 Then
Mr = 250
Ml = 250
Portb = Mrb&Mlf
Meshki = 1
67
Goto Star
End If
************************************’ If Sensor = &B11100001 Then
Mr = 200
Ml = 250
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B11000111 Then
Mr = 100
Ml = 200
Portb = Mrf&Mlf
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B11000000 Then
Mr = 200
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************’ If Sensor = &B11000001 Then
Mr = 150
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
************************************;’ If Sensor = &B11111000 Then
Mr = 200
Ml = 200
Portb = Mrb&Mlf
Meshki = 1
Goto Star
End If
*************************************’ If Sensor = &B00000111 Then
Mr = 200
Ml = 200
Portb = Mrf&Mlb
Meshki = 1
Goto Star
End If
68
ÎØ ÑÇÓÊ Öãíäå ‘
ÓÝíÏ*************************************************************** ###############******##### OK
If Sensor = &B00011000 Then
Mr = 250
Ml = 250
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00001000 Then
Mr = 180
Ml = 220
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00010000 Then
Mr = 220
Ml = 180
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00000001 Then
Mr = 200
Ml = 200
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00000010 Then
Mr = 135
Ml = 150
Portb = Mrb&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B00000100 Then
Mr = 150
Ml = 200
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
69
************************************’
If Sensor = &B00100000 Then
Mr = 200
Ml = 150
Portb = Mrf&Mlf
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B01000000 Then
Mr = 165
Ml = 120
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
************************************’
If Sensor = &B10000000 Then
Mr = 165
Ml = 150
Portb = Mrf&Mlb
Meshki = 0
Goto Star
End If
Loop
70