آیا میدانید روزانه 8 هزار زلزله در کره زمين اتفاق
مي افتد يا هر 11 ثانيه يک زمين لرزه رخ ميدهد
اندرز جوان بايد کوتاه، تازه و داستان وار باشد. از اُرد بزرگ |
![]() |
آموزش گام به گام برنامه نویسی AVR به زبان C
کامپایلر قدرتمند Atmel AVR Studio 6 نسخه 6
دانلود شبیه ساز قدرتمند proteus 7.10 SP0 همراه با کرک و لایسنس و کتابخانه
کتابخانه شبیه ساز LCD های نوکیا برای پروتیوس
پروژه تولید سیگنال های ویدیوئی PAL با AVR به زبان اسمبلی
پروژه ارتباط AVR با RS232 و برنامه کنترلی با ویژوال بیسیک
اتصال کیبورد 4*4 به میکروکنترلر AVR و نمایش روی سون سگمنت
قبل از همه چيز چرا 8051 ؟
ميكرولنترلر 8051 پايه و اساسي است براي يادگيري ديگر ميكروكنترلر ها دستورات اسمبلي اين ميكرو نسبت به AVR خيلي كمتر هست و داراي امكانات كمتري نسبت به ديگر ميكرو ها است به همين دليل يادگيري و فهم آن خيلي راحت و آسان مي باشد كه براي شروع ابتدا بايد مفاهيم منطق و ديجيتال را خوب فهميده باشيد و بعد از آن بايد سخت افرار 8051 و RAM و ROM داخلي آن را درك كرده باشيد تا بتوانيد يك برنامه كاربردي بنويسيد تا يك پروسه را كنترل كند. خيلي ها براي يادگيري ميگن كه ما كه مي خواهيم برنامه نويسي ميكرو را ياد بگيرم پس بهتر بالاترين ميكرو يعني AVR يا PIC ياد بگيريم در صورتي كه به نظر من كاملا اشتاه بوده و كار غلطي است كه اگه بخواهيد تا آخر ادامه دهيد كاري طاقت فرسا خواهد بود. مثل اين خواهد بود كه سقف طبقه اول يك ساختمان را درست نكرده باشيم و بخواهيم طبقه دوم را درست كنيم. در اين وبلاگ من تا بتوانم به زبان ساده و روان مطالب را بيان خواهم كرد كه البته اگه يكم علاقه و پشتكار داشته باشد مطمئن باشيد به ميكرو مسلط خواهيد شد و مي توانيد آن را به راحتي برنامه ريزي كنيد. قيمت اين ميكرو خيلي ارزان مي باشد در حدود 1000 تومان و حافظه ROM آن قابل پاك كردن و استفاده مجدد مي باشد پس شما به راحتي مي توانيد در خانه يا محل كار براي راحتي خود و افراد خانواده چيزهايي با آن بسازيد كه آدم باورش نشه كه اينو خودش ساخته و طراحي كرده.
بیشتر
دستور EQU و DB
البته اين دو دستور جزء قالب هاي دستوري 8051 نيست يعني اصلا ميكرو چنين دستوري را ندارد و اجرا هم نمي كند. اين دو دستور را فقط كامپايلر ها مي شناسد كه به رهنمون هم معرف هستند اينها براي راحتي كار و برنامه نويسي هستند.
EQU به كمك اين دستور مي توان يه متغير تهريف كنيم مثلا ما در يك پروژه داريم كه در آن يك كليد به نام OK وجود دارد ما مي خواهيم OK را روي بيت 3 از پورت 2 قرار دهيم يعني اينكه P2.3=OK براي راحتي كار در طول برنامه ممكن از اين كليد بخواهيم زياد استفاده كنيم به همين دليل اول برنامه اين بيت را به متغيير OK نسبت مي دهيم به روش زير:
OK EQU P2.3
…………………….
JB OK,LOOP
برنامه اينطور مي باشد كه P2.3 به OK اختصاص داده شده و در برنامه اصلي ما مي خواهيم كه هر گاه اين بيت يك شد به آدرس LOOP پرش كند. پس ما مي نويسيم اگر OK يك شده به LOOP پرش كن.
DB اگه با LCD سرو كار داشته باشيم براي نمايش پيغام ها روي LCD بايد كد اسكي آنها رو نوشت كه خيلي كار سخت و وقت گيري به همين دليل در برنامه پيغام خود را به صورت زير مي نويسيم:
بیشتر
دستورات JUMP , LOOP , CALL
دستور LOOP
LOOP به معناي حلقه مي باشد كاربرد آن در 8051 براي تكرار يك رشته دستورات مي باشد به كمك اين دسور مي توان تعداد خيلي زيادي از دستورات را تكرار كرد كه اگر بخواهيم آن دستورات را تك تك بنويسيم هم طول برنامه زياد مي شود و حجم برنامه كه باعث مي شود ROM 8051 به راحتي پر شود.قالب دستور به اين صورت مي باشد: DJNZ REG,LABEL
از اين دستور بيشتر براي ايجاد حلقه هاي تاخيري و شمارنده بكار مي رود. براي مثال كاربرد آن را در تاخير با يك مثال روشن مي كنيم:
MOV R1,#09H
LOOP: MOV R2,#05H
MGH1: DJNZ R2,MGH1
DJNZ R1,LOOP
بیشتر
جمع و تفريق بي علامت دستور (ADD)
از اين دستور براي جمع دو داده 8 بيتي استفاده مي شود. براي عمل جمع حتما بايد يكي از داده ها در انباره A باشد و ديگري مي تواند در يكي از ثباتها يا داده فوري باشد.
قالب دستور: ADD A,SOURCE
مثال عدد 10H را با E5 جمع كنيد؟
ابتدا يك از اعداد را به طور دلخواه در انباره ريخته و سپيس عدد ديگر را با انباره جمع مي كنيم
MOV A,#10H 10H
ADD A,#0E0H +E5H =F5H A=F5H
نكته: اگر بعد از علامت پوند # عددي در مبناي هگز باشد كه بايت سنگين آن يكي از حروفهاي A تا F باشد بايد حتما بين اين حروفها و # صفر قرار دهيم تا كامپايلر آن را يك عدد در مبناي هگز بشناسد نه يك حرف انگليسي.
بعد از عمليات جمع نتيجه حاصل جمع در خود انباره قرار مي گيرد.
بیشتر
دستورات منطقي و مقايسه اي
دستور AND) ANL)
اين دستور دو داده 8 بيتي رل با هم AND مي كند. AND به معني "و" مي باشد يعني اينكه مثلا بيت P1.1 و P1.2 هرگاه صفر شدن فلان كار را ميكرو انجام دهد.
قالب دستوري آن به اين صورت مي باشد. ANL REG,DATA عملوند مبدا يعني REG مي تواند يك ثبات يا يك حافظه باشد و عملوند مقصد DATA هم مي تواند ثبات يا حافظه يا يك داده فوري (عدد) باشد.بعد از انجام اين عمل منطقي نتيجه در انباره قرار مي گيرد.
مثال مي خواهيم عدد 56 و25 را با هم AND كنيم:
MOV A,#56H
ANL A,25H A=4H
طبق جدول صحت گيت AND هرگاه ورودي هاي A وB يك شد خروجي هم يك مي شود.
طبق اين جدول براي AND كردن اين دو داده داريم:
بیشتر
| ||||||||||||||||||||||||||||||||||||||||||
رخدادی برای امروز ثبت نشده |