سلام مهندسان و دوستان عزیز.
من به یه مشکل برخوردم.برنامه خوندن sms رو از روی مجله شماره10 نوشتم.ولی اجرا نمیشه.
هرچقدر هم گشتم همه راهنمایی ها مثل برنامه خودم بود و مجبور شدم این تاپیک رو جدید باز کنم.
فقط مشکل من در خوندن پیامک..انگار برنامه تا یه جای درسته..چون وقتی پایه RI ماژول رو به PIND.2میکرو وصل میکنم..وقتی smsمیدم فقط پیغام مبنی بر دریافت sms جدید روی lcd میاد و خبری از متن sms نیست
و همچنین وقتی پایه PIND.2 رو خودم 0 میکنم تا برنامه وارد شرط if بشه و دستور خوندن sms رو برای پورت سریال بفرسته و sms رو بگیره و رو LCD نمایش بده،به جای متن sms همون دستور من رو یعنی AT+CMGR=2 که فرستادم رو نمایش میده.
ممنون میشم دوستان راهنمایی کنن که مشکل از چیه؟؟
اینم برنامم:
#include <mega32a.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h>
void main(void)
{
char double_quote=34;
char Ctrlz=26;
char Enter=13;
char sms[250];
char B;
char k=0;
int j=0;
int i=0;
for (k=0;k<250;k++){
sms[k]=0;
};
PORTC=0x00;
DDRC=0xFF;
PORTD=0x04;
DDRD=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x33;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Get sms..."
;
delay_ms(1000);
lcd_clear();
while (1)
{
if (PIND.2==0){
printf("AT+CMGR=2%c",Enter);
while(j==0){
B=getchar();
switch(B){
case 0:
break;
case 10:
if(sms[0]!=0){
j=1;
};
break;
case 13:
if(sms[0]!=0){
j=1;
};
break;
default:
sms[i]=B;
i++;
};
};
lcd_puts(sms);
delay_ms(500);
};
};
}
من به یه مشکل برخوردم.برنامه خوندن sms رو از روی مجله شماره10 نوشتم.ولی اجرا نمیشه.
هرچقدر هم گشتم همه راهنمایی ها مثل برنامه خودم بود و مجبور شدم این تاپیک رو جدید باز کنم.
فقط مشکل من در خوندن پیامک..انگار برنامه تا یه جای درسته..چون وقتی پایه RI ماژول رو به PIND.2میکرو وصل میکنم..وقتی smsمیدم فقط پیغام مبنی بر دریافت sms جدید روی lcd میاد و خبری از متن sms نیست
و همچنین وقتی پایه PIND.2 رو خودم 0 میکنم تا برنامه وارد شرط if بشه و دستور خوندن sms رو برای پورت سریال بفرسته و sms رو بگیره و رو LCD نمایش بده،به جای متن sms همون دستور من رو یعنی AT+CMGR=2 که فرستادم رو نمایش میده.
ممنون میشم دوستان راهنمایی کنن که مشکل از چیه؟؟
اینم برنامم:
#include <mega32a.h>
#include <delay.h>
#include <alcd.h>
#include <stdio.h>
void main(void)
{
char double_quote=34;
char Ctrlz=26;
char Enter=13;
char sms[250];
char B;
char k=0;
int j=0;
int i=0;
for (k=0;k<250;k++){
sms[k]=0;
};
PORTC=0x00;
DDRC=0xFF;
PORTD=0x04;
DDRD=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x06;
UBRRH=0x00;
UBRRL=0x33;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("Get sms..."

delay_ms(1000);
lcd_clear();
while (1)
{
if (PIND.2==0){
printf("AT+CMGR=2%c",Enter);
while(j==0){
B=getchar();
switch(B){
case 0:
break;
case 10:
if(sms[0]!=0){
j=1;
};
break;
case 13:
if(sms[0]!=0){
j=1;
};
break;
default:
sms[i]=B;
i++;
};
};
lcd_puts(sms);
delay_ms(500);
};
};
}
دیدگاه