پاسخ : سوالات مربوط به LCD های کاراکتری و گرافیکی
ممنون از جوابتون. برنامه طولانیه و نیاز به توضیح داره .
اما این دستوره lcd_gotoxy یک جا از برنامم درست کار میکنه اما باره دوم انگار نه انگار که وجود داره.
قسمتای پیکربندیو حذف کردم که اینجا شلوغ نشه ماهان جان. قضیه ازین قراره که باره اول که تلفن زنگ میخوره و خط وصل میشه درست سطر اول connected و سطر دوم ENTER PASSWORD چاپ میشنو مشکلی نی اما وقتی برنامه به زیر روال وقفه میره و کارای مورد نظرو انجام میده و ارتباط قطع میشه حالا باره دوم که تلفن زنگ میخوره دیگه CONNECTED و ENTER PASSWORD مثل قبل چاپ نمیشن و پشت سر هم چاپ میشن. :angry: :angry: :angry: :angry:
خیلی خلاصه توضیح دادم امیدوارم که تونسته باشم مشکلمو برسونم :cry2:
نوشته اصلی توسط mahan.rafiee

کد:
#include <alcd.h> #include <delay.h> #define RELAY1 PORTD.4 #define RELAY2 PORTD.5 #define cline PORTD.6 #define ringing PIND.7 #define play PORTA.0 int i=0; int A=-1; int C[4]; // External Interrupt 2 service routine interrupt [EXT_INT2] void ext_int2_isr(void) { A=A+1; C[A]= PIND & 0x0F ; if (C[0]==1 & C[1]==2 & C[2]==3 & C[3]==11 ) { i=0; lcd_clear(); PORTC=0b1111000; play=0; delay_ms(5); play=1; lcd_gotoxy(0,1); lcd_putsf("ACCEPTED"); switch(PIND & 0x0F) { case 1: if (RELAY1==1) { RELAY1=0; PORTC=0b110000; play=0; delay_ms(5); play=1; lcd_clear(); lcd_gotoxy(0,1); lcd_putsf("RLY1:OFF"); //delay_ms(300); } else { if (RELAY1==0) { RELAY1=1; PORTC=0b11000; play=0; delay_ms(5); play=1; lcd_clear(); lcd_putsf("RLY1:ON"); //delay_ms(300); } } break; case 2: if (RELAY2==1) { lcd_clear(); RELAY2=0; PORTC=0b1100000; play=0; delay_ms(5); play=1; lcd_putsf("RLY2:OFF"); //delay_ms(300); } else { if (RELAY2==0) { RELAY2=1; PORTC=0b1001000; play=0; delay_ms(5); play=1; lcd_clear(); lcd_putsf("RLY2:ON"); //delay_ms(300); } } break; case 12: lcd_clear(); lcd_putsf("DISCONNECTED"); cline=0; i=10; delay_ms(300); lcd_clear(); break; case 13: lcd_putchar('A'); break; case 14: lcd_putchar('B'); break; case 15: lcd_putchar('C'); } } else { if (A>=3) { lcd_clear(); PORTC=0b10001000; play=0; delay_ms(5); play=1; lcd_putsf("WRONG PASSWORD"); delay_ms(100); lcd_clear(); cline=0; i=10; } }; } lcd_init(16); // Global enable interrupts #asm("sei") lcd_clear(); lcd_putsf("DTMF DECODER"); delay_ms(200); lcd_clear(); lcd_putsf("READY"); //delay_ms(500); while (1) { if(ringing) { lcd_clear(); lcd_putsf("Ringing..."); delay_ms(1000); i=0; cline=1; } if(cline==1) { lcd_clear(); lcd_putsf("CONNECTED"); lcd_gotoxy(0,1); lcd_putsf("enter password"); PORTC=0b00000000; play=0; delay_ms(5); play=1; while(i<10) { i++; delay_ms(500); } lcd_clear(); A=-1; C[0]=0; C[1]=0; C[2]=0; C[3]=0; cline=0; lcd_clear(); lcd_putsf("Ready"); } }; }
خیلی خلاصه توضیح دادم امیدوارم که تونسته باشم مشکلمو برسونم :cry2:
دیدگاه