امتیاز موضوع:
  • 7 رأی - میانگین امتیازات: 3.29
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش بیسکام و کدویژن با پروژه های عملی ( بدون جزوه و فیلم )
نویسنده پیام
aKaReZa75 آفلاین
حسین باقری
*****

ارسال‌ها: 1,590
موضوع‌ها: 23
تاریخ عضویت: مرداد ۱۳۹۱

تشکرها : 4898
( 4642 تشکر در 1536 ارسال )
ارسال: #19
RE: آموزش بیسکام و کدویژن با پروژه های عملی
سلام دوستان.
الوعده وفا.
اینم همون پروژه ای که قولشو داده بودم.
این پروژه برای کار با تمام وقفه های خارجی(هر 8 وقفه)تدارک دیده شده.
مشخصات پروژه:
میکرو کنترل به کار رفته:atmega128
کریستال:8.000.000
زبان برنامه:بیسیک و سی

توجه:تمامی فایل های بیسیک و سی و شبیه ساز رو پیوست کردم.
توجه:اگه این مطلب به دردتون خورد یا هرچیز دیگه ای تشکر کردن(البته با استفاده از گزبنه ی تشکر)رو فراموش نکنید.
توجه:از این به بعد هر برنامه ای رو که قرار میدیم دیگه توضحات اضافی و توضیحاتی رو که قبلا دادم رو نمیدم.(بدلیل اینکه وقت ندارم).
هر کی هر سوالی داشت میتونه همینجا مطرح کنه یا ایمیل بزنه یا زنگ بزنه یا .......

برنامه به زیان بیسیک:
کد:
$regfile = "m128def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Db7 = Porta.7 , Db6 = Porta.6 , Db5 = Porta.5 , Db4 = Porta.4 , E = Porta.3 , Rs = Porta.1
Config Lcd = 20 * 4

Eicra = &HFF
Eicrb = &HFF
Eimsk = &HFF
Eifr = &HFF
Sreg = &H80

On Int0 Int0h
On Int1 Int1h
On Int2 Int2h
On Int3 Int3h
On Int4 Int4h
On Int5 Int5h
On Int6 Int6h
On Int7 Int7h

Dim A As Word
Dim S As String * 5
S = Space(5)

Cursor Off

Do
Locate 1 , 1 : Lcd "Www.IranLed.Com" ; S
Locate 2 , 1 : Lcd "h.unique" ; S
Locate 3 , 1 : Lcd A
Locate 4 , 1 : Lcd S
Incr A
Waitms 500
Loop

Int0h:
Locate 4 , 1 : Lcd "Int0" ; S ; S ; S : Waitms 500
Return
Int1h:
Locate 4 , 1 : Lcd "Int1" ; S ; S ; S : Waitms 500
Return
Int2h:
Locate 4 , 1 : Lcd "Int2" ; S ; S ; S : Waitms 500
Return
Int3h:
Locate 4 , 1 : Lcd "Int3" ; S ; S ; S : Waitms 500
Return
Int4h:
Locate 4 , 1 : Lcd "Int4" ; S ; S ; S : Waitms 500
Return
Int5h:
Locate 4 , 1 : Lcd "Int5" ; S ; S ; S : Waitms 500
Return
Int6h:
Locate 4 , 1 : Lcd "Int6" ; S ; S ; S : Waitms 500
Return
Int7h:
Locate 4 , 1 : Lcd "Int7" ; S ; S ; S : Waitms 500
Return
End

برنامه به زیان سی:
کد:
#include <mega128.h>
#include <alcd.h>
#include <stdio.h>
#include <delay.h>

unsigned int a;

char aa[20];

void main(){
EICRA=0xFF;
EICRB=0xFF;
EIMSK=0xFF;
EIFR=0xFF;
lcd_init(20);
do{
sprintf(aa,"%d",a);
lcd_gotoxy(0,0);lcd_putsf("Www.IranLed.Com");
lcd_gotoxy(0,1);lcd_putsf("h.unique");
lcd_gotoxy(0,2);lcd_puts(aa);
lcd_gotoxy(0,3);lcd_putsf(" ");
a++;
#asm("sei");
delay_ms(500);
}while(1);
}

interrupt [EXT_INT0] void ext_int0_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int0");
delay_ms(500);
}

interrupt [EXT_INT1] void ext_int1_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int1");
delay_ms(500);
}

interrupt [EXT_INT2] void ext_int2_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int2");
delay_ms(500);
}

interrupt [EXT_INT3] void ext_int3_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int3");
delay_ms(500);
}

interrupt [EXT_INT4] void ext_int4_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int4");
delay_ms(500);
}

interrupt [EXT_INT5] void ext_int5_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int5");
delay_ms(500);
}

interrupt [EXT_INT6] void ext_int6_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int6");
delay_ms(500);
}

interrupt [EXT_INT7] void ext_int7_isr(void){
lcd_gotoxy(0,3);
lcd_putsf("Int7");
delay_ms(500);
}

شبیه ساز:
[تصویر:  Interrupts_pic_atmega128.jpg]


توضیحات کلی:
1.وقفه چیه:وقفه رو با یک مثال توضیح میدم.
شما فرض کنید که میکرو یک معلم هستش و در حال درس دادنه.ناگهان یکی از دانش آموزا یک سوال میپرسه.معلم هم درسشو قطع میکنه و به سوال دانش آموز پاسخ میده و ادامه درس از همون جایی که قطع کرده ادامه میده.
در میکرو وقتی وقفه رخ میده اجرای دستورات از اون خطی که وقفه رخ داده متوقف میشه و به لیبل وقفه پرش میکنه و بعد از انجام دستورات درون لیبل مربوط به موقفه به همون خطی که اجرای اونو متوقف کرده بر میگره و اجرای دستورات از همون خط ادامه میده.

توضیحات برنامه بیسیک:
1.برای فعال سازی وقفه های خارجی از دستور:
کد:
Config Intx = state
در این دستور بجای x میتوام با توجه به میکرو مورد نظر وقفه خارجی تعریف کنیم.
state هم میتواند یکی از گرینه های:
1.RISING (حساس به لبه بالا رونده)
2.FALLING (حساس به لبه پایین رونده)
3.CHANGE (تغییر حالت دادن)
4.Low Level (اینم یه چیزی تو مایه های Falling هستشBiggrin)
باشه.
مثال:
کد:
Config Int1 = Rising
در این مثال وقفه خارجی int1 حساس به لبه بالا رونده کانفیگ شده است.
بعد از کانفیگ کردن وقفه ها باید وقفه سراری و تمامی وقفه های مربوط به وقفه های خارجی رو که کانفیگ کردیم رو فعال کنیم.
کد:
Enable Interrupts
Enable Intx
بجای x باید شماره اون وقفه هایی رو که فعال کردیم رو قرار بدیم.
بعد از فعال کردن وقفه های باید برای هر وقفه یک لیبل قرار بدیم که هنگامی که وقفه خارجی رخ داد به اون لیبل پرش کنه:
کد:
On Intx Label
مثال:
کد:
Config Int1 = Rising
Enable Interrupts
Enable Int1
On Int1 IranLed
IranLed:
.....
Return
در این مثال وقفه خارجی 1 رو حساس به لبه بالا رونده کانفیگ کردیم.و وقفه ی سراسری و وقفه INT1 رو هم فعال کردیم.در صورتی که بروی پایه INT1 وضعیت State که در اینجا حساس به لبه بالا رونده هستش رخ بده به لیبل IranLed پرش میکنه و دستورات درون لیبل رو اجرا میکنه.
نکته:در پایان لیبل مربوط به وقفه های خارجی حتما از دستور Return برای خروج از لیبل اسفاده کنید.
تـــــوجـــــه:اگه به برنامه ای که من نوشتم دقت کنید میبینید که از این دستورات استفاده نکردم.دلیل این کارم اینبود که با استفاده از این دستورات میکرو هنگامی که روشن میشد بالافاصله به لیبل ها پرش میکرد و بعد از انجام دستورات لیبل ها به حالت عادی برمیگشت.بعد از کلی این ور اونور کردن دستورات فهمیدم که مشکل از خود کامپایلر بیسکام هستش و با مقدار دهی ریجستر ها بصورت دستی این مشکل حل شد!

توضیحات برنامه سی:
در این کامپایلر دستوراتی همانند دستورات بیسکام وجود نداره و باید ریجستر هارو دستی مقدار دهی کنیم که اگه من بخوام ریجیستر ها و مقدار دهی اونارو توضیح بدم خیلی خیلی حجم مطالب زیاد میشه لذا از توضیح دادن این مطالب خوداری میکنم و به شما عزیزان توصیه میکنم که حتما یک کتاب مانند مرجع کامل میکرو کنترل های AVR تهیه کنید.اگر بازم کسی سوالی در این مورد داشت حتما با من در میون بزاره.
فقط چند دستور رو توضیح میدم:
1.برای فعال کردن وقفه سراسری از دستور:
کد:
#asm("sei");
استفاده میشه و برای غیر فعال کردن وقفه سراسری از دستور:
کد:
#asm("cli");
استفاده میشه.
2.برای تعریف لیبل مربوط به وقفه های خارجی با فعال کردن ریجستر های مربوط به اونا از دستور:
کد:
interrupt [EXT_INTx] void ext_intx_isr(void){
....
}
که بجای x شماره قفه ای که ریجستر ان هم مقدار دهی کرده ایم قرار میدیم.

تــــــــــوجه:اگه این مطلب به دردتون خورد یا هرچیز دیگه ای تشکر کردن(البته با استفاده از گزبنه ی تشکر)رو فراموش نکنید.
توجه:تمامی فایل های بیسیک و سی و شبیه ساز رو پیوست کردم.

امید وارم که توضیحات من و این پروژه بهتون کمکی کرده باشه.
موفق باشید.....HeartHeartHeartHeartHeartHeartHeart


فایل‌(های) پیوست شده
.zip   Interrupts[Www.IranLed.Com].zip (اندازه: 141.18 KB / تعداد دفعات دریافت: 207)

سلام، من حسین باقری هستم، طراح الکترونیک و برنامه نویس میکروکنترلر.
توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
در کنار مباحث گفت شده، اصول اندازه الکترونیکی، نحوه صحیح مونتاژ و عیب‌یابی بردهای الکترونیکی، شبیه سازی مدارات مختلف رو هم یاد میگیریم.
اگر علاقه مند به یادگیری موضوعات عنوان شده هستید، به کانال یوتیوب من با آدرس زیر سر بزنید.
https://www.youtube.com/@aKaReZa75
(آخرین ویرایش در این ارسال: ۲۳-شهریور-۱۳۹۱, ۱۱:۲۳:۲۷، توسط aKaReZa75.)
۲۳-شهریور-۱۳۹۱, ۱۱:۰۹:۱۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : coloop, omid_phoenix, nazan1n, hadikh73, ehsancompany, رسول, abbasalifix, navard, WhiteNoise, behzady, microoo, ajax007, alimogmov, کامروا, Ambassador, Pixar, alberto50, paryjoon3, jamalmusic, a.e.a


پیام‌های داخل این موضوع
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط omid_phoenix - ۰۴-شهریور-۱۳۹۱, ۲۱:۴۷:۲۵,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط omid_phoenix - ۰۵-شهریور-۱۳۹۱, ۱۴:۱۶:۲۸,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط omid_phoenix - ۰۶-شهریور-۱۳۹۱, ۱۳:۵۱:۳۵,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط omid_phoenix - ۰۶-شهریور-۱۳۹۱, ۱۵:۳۸:۴۲,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط aKaReZa75 - ۱۳-شهریور-۱۳۹۱, ۱۲:۱۲:۵۶,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط aKaReZa75 - ۱۷-شهریور-۱۳۹۱, ۱۲:۵۹:۴۹,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط aKaReZa75 - ۱۸-شهریور-۱۳۹۱, ۱۵:۱۶:۰۷,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط coloop - ۲۱-شهریور-۱۳۹۱, ۲۲:۲۹:۴۷,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط aKaReZa75 - ۲۲-شهریور-۱۳۹۱, ۰۹:۴۲:۲۹,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط omid_phoenix - ۲۲-شهریور-۱۳۹۱, ۱۷:۲۴:۵۶,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط aKaReZa75 - ۲۲-شهریور-۱۳۹۱, ۲۰:۵۹:۵۲,
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط aKaReZa75 - ۲۳-شهریور-۱۳۹۱, ۱۱:۰۹:۱۶
RE: آموزش بیسکام و کدویژن با پروژه های عملی - توسط aKaReZa75 - ۲۴-شهریور-۱۳۹۱, ۱۲:۰۸:۲۰,
مقدمات AVR با نرم افزار کدویژن - توسط aKaReZa75 - ۲۵-شهریور-۱۳۹۱, ۱۵:۲۶:۴۸,
آرایه و رشته در کدویژن - توسط aKaReZa75 - ۲۷-شهریور-۱۳۹۱, ۱۲:۳۳:۵۰,
RE: آرایه و رشته در کدویژن - توسط حامد 133 - ۰۲-آبان-۱۳۹۲, ۱۷:۰۸:۱۱,
ولتمتر DC با میکرو کنترل AVR Atmega8 - توسط aKaReZa75 - ۲۸-شهریور-۱۳۹۱, ۱۳:۱۲:۲۷,

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  مشکل برنامه تایمر با بیسکام soy1345 7 2,026 ۲۲-فروردین-۱۳۹۸, ۲۰:۴۸:۰۶
آخرین ارسال: 1نفر
  راه اندازی ماژول gy-955 با AVR و کدویژن hadikh73 6 7,689 ۰۴-شهریور-۱۳۹۷, ۱۲:۰۸:۲۱
آخرین ارسال: hadikh73
  [مقاله] برنامه های بدون شرح hadikh73 48 43,686 ۰۲-اردیبهشت-۱۳۹۷, ۱۰:۱۷:۲۸
آخرین ارسال: babyy
  ماژول pn532 و کدویژن AVR hadikh73 1 4,205 ۰۴-خرداد-۱۳۹۶, ۰۱:۲۱:۲۴
آخرین ارسال: babyy
  پیکربندی SPI نرم افزاری در کدویژن pedram032 2 3,661 ۱۷-دى-۱۳۹۵, ۲۲:۳۷:۱۴
آخرین ارسال: omid_phoenix
  کمک در برنامه nrf24 با کدویژن sniper-70 0 2,893 ۱۹-آبان-۱۳۹۵, ۰۰:۱۶:۱۵
آخرین ارسال: sniper-70
  [آموزشی] بوتلودر BootloadHID برای AVR8 بدون نیاز به درایور usb salehjg 0 2,494 ۰۸-مهر-۱۳۹۵, ۲۳:۴۷:۰۶
آخرین ارسال: salehjg
  سوالات مربوط به بخش برنامه های بدون شرح omid_phoenix 64 40,813 ۲۵-خرداد-۱۳۹۵, ۱۸:۴۷:۴۸
آخرین ارسال: Ambassador
  برنامه نویسی بیسکام soy1345 17 13,270 ۲۳-مرداد-۱۳۹۴, ۱۷:۱۷:۵۶
آخرین ارسال: MN-123
  راهنمایی در یک پروژه cortex-m3 0 2,020 ۱۴-تير-۱۳۹۴, ۲۰:۲۰:۵۶
آخرین ارسال: cortex-m3

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS