خدمات وبسایت آی‌سی‌تی نیـــک

طراحی و ساخت انواع پروژه‌های الکترونیکی با: میکروکنترلرavr - میکروکنترلرarm - میکروکنترلرpic و آردوینو

مقالات و آموزش‌های رایگان در سطوح پایه و حرفه‌ای برای الکترونیک و آی سی تی - ICT

آموزش برنامه نویسی میکروکنترلر PIC قسمت چهارم منابع وقفه

منتشر شده در میکروکنترلرpic

 در pic18 بسته به این که کدوم نوعشو انتخاب میکنید ابزارهای جانبی متفاوتی وجود دارد که ممکنه وقفه داشته باشند. اما به هر حال یکسری وقفه ها در همه انواع میکروکنترلر ها مشترک و موجوده مثله:

  1. وقفه تایمرها
  2. وقفه سخت افزار خارجی
  3. وقفه USART
  4. وقفه ADC

و وقفه هایی دیگه مثله وقفه تغییر PORTB که معمولا برای اتصال به KEYPAD ازش استفاده میشه و وقفه CCP که برای PWMو مد مقایسه ازش استفاده می شود. وقفه های بیشتری هم وجود داره که بعدا بررسی می شود.

interruptpic18ادامه مطلب???

 

وقفه ها باید به صورت نرم افزاری فعال شوند. همانطور که در  شکل بالا میبینید بیت GIE که در رجیستر INTCON میباشد وظیفه فعال و غیرفعال کردن کلیه وقفه ها را داراست و چنانچه بخواهیم وقفه های مربوط به ADC یا پورت سریال را هم فعال کنیم بایستی علاوه بر بیت GIE بیت PEIE را نیز فعال کنیم. 

مراحل فعال سازی یک وقفه:

  1. بیت GIE از رجیستر INTCON باید یک شود .
  2. بعد از یک شدن GIE با یک کردن بیت هر وقفه ای آن وقفه شروع به کار می کند. چون وقفه های زیادی وجود داره رجیستر های زیادی هم وظیفه ذخیره این وقفه ها رو دارند مثلا رجیستر INTCON وظیفه نگهداری از بیت فعال ساز وقفه تایمر صفر را داراست.
  3. همانطور که گفتیم ناچاریم برای بعضی از وقفه ها بیت PEIE را نیز فعال کنیم.

 

آموزش برنامه نویسی وقفه تایمر 

آموزش برنامه نویسی وقفه سخت افزار خارجی

آموزش برنامه نویسی وقفه ارتباط سریال

آموزش برنامه نویسی وقفه تغییرPORTB

 مطالب مرتبط :

برچسب ها:

Tags: آموزش برق و الکترونیک میکروکنترلر pic microcontroller pic آموزش برنامه نویسی میکروکنترلر PIC مراحل فعال سازی وقفه در pic منابع وقفه در pic وقفه تایمرها در pic وقفه سخت افزار خارجی درpic

دیدگاه‌ها  

# matin2000 1394-07-13 14:13
سلام مهندس
بسیار عالیه چ سایت خوبی دارین
خیلی خوب آموزش دادینا امیدوارم ادامه بدین
با کامپایلر ccs آموزش نمیذارین؟؟
آیا این سبک برنامه نویسی در کامپایلر ccs جواب میده؟؟
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
# مدیر ارشد 1394-07-13 19:49
سلام خیلی ممنون
بله با کامپایلر ccs هم با کمی تغییر میتونید.
البته ما کامپایلر اصلی pic ،یعنی mplab رو پیشنهاد میکنیم چون کاملا حرفه ای تر و کامل تره
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
# niloufar_m_h 1394-05-23 10:43
int flag;
void interrupt()
{ flag=1 ;
}


void main()
{ TRISB = 1;
intcon=0b10001000;
lcd_init();
x1: for( ; ; )
{
if (flag==1)
{
lcd_out(1,2,"in terrupt");
delay_ms(200);
}
else
{
lcd_out(1,2,"ma in");
delay_ms(200);
}
goto x1;
}

}
salam .man mikham barnameiy benevisam k moje morabaee ro bedam ru lcd namayesh bede tu main hastam ya interrupt...hen gam rising tu interrupt hastim.. ama ba barname e k neveshtam in kar anjam nemishe...moshk elesh chie?
mamnun misham rahnamaiy konid
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن
# مدیر سایت 1394-05-24 09:59
سلام دوست عزیز
برنامتون درسته فقط به جای void interrupt همانطور که تو آموزش برنامه نویسی وقفه سخت افزار خارجی هم گفتیم باید وقفه رو به این شکل تعریف کنید:
void interrupt int0_ISR()
{
if (INT0IE && INT0IF)
{
INT0IF=0;
mybit=1;
}
}
پیشنهاد میکنم یکبار دیگه این قسمت رو دقیق مطالعه کنید :
http://www.ictnic.com/learning/263-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%88%D9%82%D9%81%D9%87-%D9%87%D8%A7%DB%8C-%D8%B3%D8%AE%D8%AA-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%AE%D8%A7%D8%B1%D8%AC%DB%8C.html
پاسخ دادن | پاسخ به نقل قول | نقل قول کردن

4

پشتیبانی و مشاوره 24 ساعته

ictnic2

تماس با ما

  • تلگرام : ICTNIC2@

به ما بپیوندید

ما را در صفحات اجتماعی دنبال نمایید...

کاربران ثبت نامی

تا این لحظه تعداد

2415 نفر

در وبسایت تخصصی ictnic

ثبت نام و از خدمات ما استفاده می کنند.

ما را در آپارات دنبال کنید

aparat logo fa color black 275x100