سلام
من با میکروکنترلر ATMega32 یک شمارنده ساده نوشتم که وقتی سنسور سنس کرد یک واحد به شمارنده اضافه بشه و زمانی که به ست پوینت رسید خروجی یک رله فرمان بده و شمارشگر صفر بشه و متوقف بشه .
متن برنامه اینه :
حالا مشکلی که هست اینه که من وقفه خارجی را هر صورتی که تنظیم میکنم تا برق میکرو وصل میشه با سرعت بالا شروع به شمارش میکنه و زمانی که به 0 وصل میشه می ایسته .
باید چیکارش کنم که هم حساس به لبه باشه(که در صورت سنس یک واحد به متغیر اضافه بشه) و هم زمانی که صفر شد وقفه رخ بده (ینی سنسور به زمین وصل باشه و هرگاه سنس کرد و 0 شد اضافه بشه . برعکس این الان داره اجرا میشه)
ممنون میشم راهنمایی کنید.
با تشکر
من با میکروکنترلر ATMega32 یک شمارنده ساده نوشتم که وقتی سنسور سنس کرد یک واحد به شمارنده اضافه بشه و زمانی که به ست پوینت رسید خروجی یک رله فرمان بده و شمارشگر صفر بشه و متوقف بشه .
متن برنامه اینه :
کد:
#include <mega32.h> #include <stdio.h> #asm .equ __lcd_port=0x18 #endasm #include <lcd.h> int x=0,s=10; interrupt[EXT_INT0] void num0 (void){ s++; } interrupt[EXT_INT1] void num1 (void){ x++; if(x==s){ x=0; PORTC.0=1; } else{ PORTC.0=0; } } void main(void){ char str[20]; char str2[20]; DDRA=0x00;//0000 0000 PORTA=0x03;//0000 0011 DDRC=0x01;//0000 0001 PORTC=0x00; GICR=0xC0;//1100 0000 MCUCR=0x0F;//0000 1010 #asm("sei") lcd_init(16); while(1){ sprintf(str,"Number=%4d",x); lcd_gotoxy(0,0); lcd_puts(str); sprintf(str2,"SetPoint=%4d",s); lcd_gotoxy(0,1); lcd_puts(str2); } }
باید چیکارش کنم که هم حساس به لبه باشه(که در صورت سنس یک واحد به متغیر اضافه بشه) و هم زمانی که صفر شد وقفه رخ بده (ینی سنسور به زمین وصل باشه و هرگاه سنس کرد و 0 شد اضافه بشه . برعکس این الان داره اجرا میشه)
ممنون میشم راهنمایی کنید.
با تشکر
دیدگاه