به نام خدا : نمایش متن با وقفه ۰ و ۲ با منبع سینوسی ؛ انشاالله الان میخوام در مورد پروژه ای که با وقفه صفر و ۲ کار میکنه توضیح بدم؛ این پروژه رو یکی از دوستان گفت انجام بدم ، چیز ساده ای هستش ، ولی برا شروع خیلی عالیه ( من موندم ملت این پروژه ها چطور به ذهنشون میرسه ولی به ذهن ما نمیرسه O_o )
پیشنیاز این مطلب : آموزش وقفه در AVR
اون نمودار هم که تو عکس میبینید ، تغییرات منبع ولـتاژ ac ما هستش (منبع سینوسی) که این منبع سینوسی رو به پایه های وقفه صفر و ۲ وصل کردم و فکر کنم وقفه ۰ رو RISING باشه و وقفه ۲ هم روی FALLING (یا همینه یا برعکس-دقیق خاطرم نیست.>>تو این مسئله مهم هم نیست.) حالا اگه مثلا ولتاژ ۵ ولت بشه کد های تابع وقفه ۰ اجرا میشه و اگه ولتاژ ۰ بشه کد های وقفه ۲ اجرا میشه.
حالا شما میتونید این برنامه رو طوری تغییر بدید که مثلا تو کد های تابع وقفه ۰ ، کاراکتر ها از راست صفحه نمایش دونه دونه وارد بشه و در سمت چپ صفحه قرار بگیرن تا متن ما کامل بشه و برا وقفه ۲ هم از سمت راست صفحه خارج بشه>>> چیز جالبی میشه. حتما درستش کنید.>>> شاید هم خودم درستش کردم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include <mega16.h> #include <delay.h> #include <lcd.h> #asm .equ __lcd_port=0x1B; //PORTA #endasm /////////////////////////////////////////////////تعریف متغییر ها flash char text[]={'w','w','w','.','D','M','F','3','1','3','.','i','r'}; int i; /////////////////////////////////////////////////تعریف توابع وقفه interrupt [EXT_INT0] void exit_vagfe_int0 (void) { lcd_clear(); for(i=0;i<=13;i++) // نمایش کلمه به کلمه از کلمه اول تا آخرین کلمه { lcd_gotoxy(i,0); lcd_putchar(text[i]); delay_ms(50); } } ///////////////////////////////////////////////// interrupt [EXT_INT2] void exit_vagfe_int2 (void) { lcd_clear(); for(i=13;i>=0;i--) // نمایش کلمه به کلمه از کلمه اول تا آخرین کلمه { lcd_gotoxy(i,0); lcd_putchar(text[i]); delay_ms(50); } } ///////////////////////////////////////////////// void main(void) { lcd_init(16); GICR=0x60; // فعال کردن وقفه ۰ و ۲ MCUCR=0x00; // تعیین نحوه فعال و غیر فعال شدن (نحوه تحریک شدن) وقفه ۰ --faling MCUCSR=0x40; // تعیین نحوه فعال و غیر فعال شدن (نحوه تحریک شدن) وقفه ۲ --rising GIFR=0x60; //دادن قدرت تصمیم گیری به وقفه ۰ و ۲ #asm("sei") //فعال کردن وقفه سراسری } |
مهمان
سلام خسته نباشید، فقط میشه در مورد ریجستر GIFR توضیح بدین، دادن قدرت تصمیم گیری به وقفه ۰ و ۲ یعنی چی؟!
مهمان
درود بر شما و خدا قوت , لینک پروژه رو فیلترش کردن…به هیچی رحم نمیکنن..
نویسنده این مطلب
سلام
ممنون از اطلاع رسانیت
فایل رو درست کردم
احتمالا این زیر دامنه قبلی که فایل پروژه این مطلب روش سوار بوده، رو سروری بوده که خلاف قانون عمل کرده و مسئولین فیلترینگ هم زدن کل سرور مورد نظرو مسدود کردن
ok?
مهمان
کارت درسته مهندس علی یارت