آیا میدانید قلب تنها عضو بدن است که اعصاب خودکار دارد
من در زمان خودم با مـعدود افرادي مواجه شدم كه اشتياق شديدي به كار سخت داشتند. خوشبختانه همه آنها همكاران من بودند. از بيل‌گلد
Logo

حل تمرینات و پروژه های درس میکروکنترلر
آموزش ميكرو كنترلر 8051 قسمت اول (سخت افزار)

قبل از همه چيز چرا 8051 ؟
ميكرولنترلر 8051 پايه و اساسي است براي يادگيري ديگر ميكروكنترلر ها دستورات اسمبلي اين ميكرو نسبت به AVR خيلي كمتر هست و داراي امكانات كمتري نسبت به ديگر ميكرو ها است به همين دليل يادگيري و فهم آن خيلي راحت و آسان مي باشد كه براي شروع ابتدا بايد مفاهيم منطق و ديجيتال را خوب فهميده باشيد و بعد از آن بايد سخت افرار 8051 و RAM و ROM داخلي آن را درك كرده باشيد تا بتوانيد يك برنامه كاربردي بنويسيد تا يك پروسه را كنترل كند. خيلي ها براي يادگيري ميگن كه ما كه مي خواهيم برنامه نويسي ميكرو را ياد بگيرم پس بهتر بالاترين ميكرو يعني AVR يا PIC ياد بگيريم در صورتي كه به نظر من كاملا اشتاه بوده و كار غلطي است كه اگه بخواهيد تا آخر ادامه دهيد كاري طاقت فرسا خواهد بود. مثل اين خواهد بود كه سقف طبقه اول يك ساختمان را درست نكرده باشيم و بخواهيم طبقه دوم را درست كنيم. در اين وبلاگ من تا بتوانم به زبان ساده و روان مطالب را بيان خواهم كرد كه البته اگه يكم علاقه و پشتكار داشته باشد مطمئن باشيد به ميكرو مسلط خواهيد شد و مي توانيد آن را به راحتي برنامه ريزي كنيد. قيمت اين ميكرو خيلي ارزان مي باشد در حدود 1000 تومان و حافظه ROM آن قابل پاك كردن و استفاده مجدد مي باشد پس شما به راحتي مي توانيد در خانه يا محل كار براي راحتي خود و افراد خانواده چيزهايي با آن بسازيد كه آدم باورش نشه كه اينو خودش ساخته و طراحي كرده.



تشريح پايه هاي 8051 و RAM و ROM داخلي آن
8051 داراي 4 پورت ورودي يا خروجي مي باشد يعني اينكه هر كدام از اين پورت ها را مي توان در يك لحظه به عنوان ورودي استفاده كرد و همان پورت را دوباره در يك لحظه ديگر به عنوان خروجي از آن استفاده كرد. منظور از پورت چيست؟ پورت در ميكرو يعني 8 عدد پين يا 8 خط ديتا يا ذر اصطلاح 8بيتي، كه 8051 داراي 4 پورت 8 بتي يعني 32 پايه مي باشد.
ميكرو كنترلر AT89C51 داراي 128 بايت RAM و 4KB حافظه برنامه ROM مي باشد. و AT89C52 داراي 256 بايت RAM و 8KB حافظه برنامه ROM مي باشد. و AT89C55 داراي 256 بايت RAM و 20KB حافظه برنامه ROM مي باشد. كه بستگي به حجم برنامه ما دارد كه از كدام ميكرو استفاده كنيم.

كاربرد RAM چست؟ اصلا به چه دردي مي خوره؟
RAM يعني random access memory حافظه با دستيابي تصادفي. از اين حافظه براي ذخيره اطلاعات موقت استفاده مي شود يعني اينكه تا زماني كه تغذيه ميكرو وصل باشد اين اطلاعات از بين نمي روند و با قطع كردن تغذيه اين اطلاعات از بين مي روند. ما در ميكرو 8 ثبات 8 بتي براي ذخيره كردن داده  ها داريم در بعضي از مواقع پيش مي آيد كه اين 8 ثبات در كل برنامه استفاده شوند و ما به يك ثبات 8 بيتي براي ذخيره سازي داده ها داريم مثلا يك شمارنده طراحي كرديم و همه ثبات ها هم استفاده شده و ما مثلا به دو ثبات احتياج داريم كه مي توانيم از هر كدام از خانه هاي RAM استفاده كنيم. منظور از اطلاعات همان داده هاي 8 بيتي مي باشند يعني همون 0 يا 1 ها كه به 8 تا از آنها يك بايت يا يك داده 8 بيتي مي گويند.
حال به تقسيم بندي RAM توجه كنيد. براي برنامه نويسي خيلي مهم است كه ما از چه خانه هاي RAM مجاز هستيم استفاده كنيم آيا مي توانيم در فلان خانه RAM داده را به صورت بيتي دستكاري كنيم  يا داده را 8 بيتي دستكاري كنيم. اصلا در چه محدوده اي از RAM قادر هستيم داده ذخيره كنيم  يا بانك هاي ثباتي در كجاي RAM واقع شده اند و ديگر ثبات ها... به جدول زير كه مربوط به RAM خوب توجه كنيد:

عملكرد
ثبات
خانه هاي 8 بتي RAM
آدرس
 
 
 
 
 
 
 
 
 
 
FF
ثبات B
B
F0
F1
F2
F3
F4
F5
F6
F7
F0
ثبات A يا انباره
ACC
E0
E1
E2
E3
E4
E5
E6
E7
E0
كلمه وضعيت
PSW
D0
D1
D2
D3
D4
D5
D6
D7
D0
 
IP
B8
B9
BA
BB
BC
--
--
--
B8
پورت 3
P3
B0
B1
B2
B3
B4
B5
B6
B7
B0
كنترل وقفه ها
IE
A8
A9
AA
AB
AC
--
--
AF
A8
پورت 2
P2
A0
A1
A2
A3
A4
A5
A6
A7
A0
ارتباط سريال
SBUF
قابل آدرس دهي نيست
99
 
SCON
98
99
9A
9B
9C
9D
9E
9F
98
پورت 1
P1
90
91
92
93
94
95
96
97
90
بايت سنگين تايمر 1
TH1
قابل آدرس دهي نيست
8D
بايت سنگين تايمر 0
TH0
قابل آدرس دهي نيست
8C
بايت سبك تايمر 1
TL1
قابل آدرس دهي نيست
8B
بايت سبك تايمر 0
TL0
قابل آدرس دهي نيست
8A
مد تايمر
TMOD
قابل آدرس دهي نيست
89
مد شمارنده
TCON
88
89
8A
8B
8C
8D
8E
8F
88
 
PCON
قابل آدرس دهي نيست
87
بايت سنگين ثبات DPTR
DPH
قابل آدرس دهي نيست
83
بايت سبك ثبات DPTR
DPL
قابل آدرس دهي نيست
82
اشاره گر پشته
SP
قابل آدرس دهي نيست
81
پورت 0
P0
80
81
82
83
84
85
86
87
80
فقط بايتي
 
80 بايت براي خواندن و نوشتن موقت
30تا7F
بيتي و بايتي
 
16 بايت براي خواندن و نوشتن موقت
20تا2F
 
بانك هاي ثباتي شامل R0-R7
R0-R7
بانك 3
18تا1F
R0-R7
بانك 2
10تا17
R0-R7
بانك 1
08تا0F
R0-R7
بانك 0
00تا07
SMGH
SMGH
SMGH
SMGH

 


1) 32 بايت از مكان هاي 00 تا 1F براي بانك هاي ثباتي و پشته كنار گذاشته شده.
2) 16 بايت از 20 تا2F براي خواندن و نوشتن آدرس پذير بيتي كنار گذاشته شده.
3) 80 بايت از مكان هاي 30 تا7F براي خواندن و نوشتن بايتي  و يا آنچه كه عموما داده موقت گفته مي شو به كار مي رود.
نكته: جلوي خانه هايي كه نوشته شده قابل آدرس دهي نيست يعني اينكه نمي توان با آدرس هگز آن از اين ثبات استفاده كرده به عنوان مثال براي SBUF در برنامه نويسي حتما بايد خود SBUF را نوشت يعني از آدرس هگز آن نمي توان استفاده كرد. ولي در بقه موارد مجاز هستيم. با يك مثال اين قضيه را روشن مي كنيم:
MOV  A,#60H يعني عدد 60 در مبناي هگز را در انباره كپي كن. حال اين دستور را اين طوري هم مي توان نوشت يعني از آدرس A استفاده كرد.   MOV  E0,#60H
در RAM /8051 ما چهار بانك ثباتي داريم كه هر بانك داري 8 بايت(R0تاR7) 8بيتي مي باشد  يعني:

 
بانك صفر
R7
D0
D1
D2
D3
D4
D5
D6
D7
R6
D0
D1
D2
D3
D4
D5
D6
D7
R5
D0
D1
D2
D3
D4
D5
D6
D7
R4
D0
D1
D2
D3
D4
D5
D6
D7
R3
D0
D1
D2
D3
D4
D5
D6
D7
R2
D0
D1
D2
D3
D4
D5
D6
D7
R1
D0
D1
D2
D3
D4
D5
D6
D7
R0
D0
D1
D2
D3
D4
D5
D6
D7

بقيه بانك ها نيز مانند جدول بانك صفر مي باشد از اين ثبات ها در برنامه نويسي خيلي زياد استفاده مي شودند.نحوي انتخاب بانك يا تغيير دادن آن به صورت زير مي باشد:
8051 هنگامي روشن مي شود بانك صفر به صورت پيش فرض براي بانك ثباتي خود انتخاب مي كند كه براي تغيير دادن آن مي توانيم به صورت زير عمل كنيم.

RS0(PSW.3)
RS1(PSW.4)
 
0
0
بانك صفر
1
0
بانك يك
0
1
بانك دو
1
1
بانك سه


به كمك دستورات بيتي مي توان اين بانك را تغيير داد به مثال زير توجه كنيد مي خواهيم بانك 3 را به عنوان بانك ثباتي ميكرو تغيير دهيم؟


SETB   PSW.4
SETB  PSW.3
مي خواهيم بانك دو را انتخاب كنيم؟
SETB  PSW.4
CLR  PSW.3


پشته:
هنگامي كه 8051 روشن مي شود اشارگر پشته به صورت پيش فرض عدد 07 را در خود دارد كه نهايت با عث انتخاب بانك 1 براي پشته خود مي شود. SP=07H
براي تغيير پشته به مكان ديگري ازRAM يا بانك ديگري مي توان به كمك دستور زير پشته را تغيير داد:   MOV  SP,#XX كه XX آدرس آن مكان از RAM مي باشد.
حال كاربرد پشته چيست؟ پشته كاربرد زيادي دارد شايد ما زياد با آن سرو كار نداشته باشيم ولي CPU با آن خيلي كار دارد به عنوان مثال براي اجراي يك زير برنامه(برنامه فرعي) مثلا CALL  LABEL پردازنده آدرس اين مكاني را كه در آن به اين دستور برخورد كرده، را در پشته خود ذخيره مي كند و بعد از اجراي پشته به كمك اين آدرس بر مي گردد تا ادامه برنامه اصلي را انجام دهد.
براي درج داده رد پشته از دستور PUSH استفاده مي كنيم و براي بازيافت داده از پشته از دستور POP استفاده مي كنيم. با هر بار درج در پشته اشارگز پشته يك واحد به آن اضافه مي شود. و با هر بار بازيافت از پشته اشارگر پشته يك واحد از آن كم مي شود.
ROM  چيست؟
اين حافظه از دست ما خارج است يعني اينكه فقط توسط كامپيوتر مي توان برنامه اصلي را توي اين حافظه كپي كرد و ما بعدا توسط خود ميكرو نمي توانيم محتواي آن را تغيير دهيم بلكه فقط مي توانيم اطلاعات را اين حافظه به حافظه RAM انتقال داده و بعد از پردازش مي توان آنها را به خروجي فرستاد.
پايه RST(9) ريست
با فعال شدن اين پايه يعني يك شدن به مدت حداقل 2 سيكل ماشين ميكرو ريست شده و به خانه 0000H پرش كرده و ار آنجا شروع به خواندن برنامه مي كند.
پايه EA
اگر اين پايه را يك كنيم ميكرو برنامه را از ROM داخلي خودش شروع به خواندن مي كند و اگر اين پايه را صفر كنيم ميكرو از ROM داخلي خودش هيچ اطلاعاتي نمي خواند و با برنامه ريزي كه شده از ROM بيروني شروع به خواندن اطلاعات مي كند.
پايه PSE
اين پايه براي زماني است كه بخواهيم از RAM يا ROM بيروني استفاده كنيم كه بسته به شرايط يا صف مي شود يا يك.
پايه ALE
اگر از RAM يا ROM بيروني استفاده كنيم اين پايه پورت صفر را به عنوان خطوط آدرس معرفي مي كند.
در قسمت دوم به معرفي دستورات مي پردازيم

8051 در كل 128 بايت RAM دارد كه به صورت جدول بالا تقسيم بندي مي شود:

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.





لینک ثابت این صفحه:   


© کپی برداری از مطالب این سایت تنها با ذکر منبع مجاز می باشد

در صورت داشتن هر گونه سوال، نظر و پیشنهاد راجب این مطلب می‌توانید در قسمت نظرات همین صفحه مطرح نمائید. همچنین با شرکت در نظر سنجی های سایت، ما را در بهبود بخشیدن به مطالب یاری کنید.


مثال اسمبلی آموزش اسمبلی برنامه های اسمبلی پروژه های اسمبلی مثال assembly آموزش assembly برنامه های assembly پروژه های assembly برنامه نویسی اسمبلی آموزش برنامه نویسی اسمبلی آموزش 8051 آموزش 8051 به زبان اسمبلی آموزش ميكرو كنترلر 8051 سخت افزار میکروکنترولر اسمبلی پشته ROM RAM micro controller ASM Assembly

ارسال شده در مورخه : يكشنبه، 27 دي ماه، 1388 توسط مدیریت بازدید [3069]   پرینت

مرتبط باموضوع :

 پروژه ولت متر دیجیتال با 8051 به زبان اسمبلی  [ چهارشنبه، 21 بهمن ماه، 1388 ] 4964 مشاهده
 شمارنده 3رقمي به زبان اسمبلي COUNTER  [ چهارشنبه، 21 بهمن ماه، 1388 ] 1682 مشاهده
 شمارنده 3رقمي به زبان اسمبلي COUNTER  [ سه شنبه، 20 بهمن ماه، 1388 ] 2104 مشاهده
 آموزش ميكرو كنترلر 8051 قسمت دوم (معرفي دستورات)  [ يكشنبه، 27 دي ماه، 1388 ] 3068 مشاهده
 شمارنده دو رقمی با 8051 و به زبان اسمبلی  [ چهارشنبه، 29 ارديبهشت ماه، 1389 ] 3203 مشاهده
نام شما:
ایمیل شما:

در مورخه : دوشنبه، 18 مهر ماه، 1390 (IP آدرس : )

با تشکرفراوان

ارسال جوابیه ]

 
نام شما: [ کاربر جدید ]

نام شما (ضروری): 
ایمیل شما : 
نظر:
کد امنیتی
کد امنیتی

  [ بازگشت ]
  • امتیاز بدهید
  • انتخاب ها
  • اشترک گذاری
آیا این مطالب مورد رضایت شما واقع گردید؟ لطفا با رای دادن به این مطلب ما را در بهبود بخشیدن به مطالب کمک کنید. با اینکار به سایر دوستان‌تان نیز کمک خواهید کرد.


 فایل پی دی اف فایل پی دی اف

 گرفتن پرينت از اين مطلب گرفتن پرينت از اين مطلب

 ارسال به دوستان ارسال به دوستان

 گزارش این پست به مدیر سایت گزارش این پست به مدیر سایت

پروژه های آماده
پروژه تایپ حروف و اعداد با کیبورد 3×4 به زبان سی

با استفاده از میکروکنترلر ATMEGA8 و کیبورد 3×4 می توان حروف و اعداد را تایپ کرد و درون یک متغییر ذخیره نمود و محتوای این متغییر بر روی نمایشگر LCD نمایش داده می شود. در صورتی که فضای LCD پر شود کاراکترها به سمت چپ شیفت داده می شوند. تمامی حروف و اعداد کوچک و بزرگ انگلیسی قابل تایپ می باشند. جزئیات...


عناوین مطالب
عناوین مطالب را در موضوعات مربوطه جستجو کنید!
یک موضوع انتخاب کنید:



لینک باکس مهم‌ترین‌ ها
  • پروژه‌ها
  • برترین‌ها
  • پر بازدید
  • بیشترین نظرات
cash10-H6

سالنامه فارسی
ش ی د س چ پ ج
  12345
6789101112
13141516171819
20212223242526
2728293031

دوشنبه

1

1 خرداد ماه، 1391
21/05/2012


رویداد ها:
روز بزرگداشت ملاصدرا - روز بهره وری و بهینه سازی مصرف

جستجو در تقویم ...
cash40-D1

آمار کاربران

نظرسنجی
نظر شما در مورد کیفیت سایت چیست؟

خیلی عالیه
میتونه بهتر باشه
جای کار داره
خوب نیست
نظری ندارم!



شما میتوانید در این مورد نظر مکتوب خود را بنویسید: مشاهد نتایج و ثبت نظر

نظرسنجی ها

تعداد آراء: 679    نظرات: 42

تبادل لینک
PicPars با تمامی وب سایتها و وبلاگها تبادل لینک میکند. ابتدا لینک ما در وب خود ثبت کنید و سپس لینک خود را از اینجا برای ما ارسال کنید. در اولین فرصت لینک شما در سایت ثبت می شود.

پیشنهاد ما

سفارش طراحی پروژه
مرورگر پیشنهادی ما
نرم افزار دانلود فایلها
برنامه فشرده سازی







امتیاز به سایت
امتیاز به این صفحه
با یک امتیاز مثبت از طریق Gmail تان از سایت حمایت کنید