#include<softuart.h> #include<stdio.h> #include<reg51.h> void uart_init(); sbit sw=P1^7; unsigned char rx(); code unsigned char rd[] = "AT+CMGR=1"; code unsigned char ne[] = "AT+CNMI=2,2,0,0,0"; unsigned int r=0,m=0,s1=0,n1=0,f1=0,m2=0; unsigned char gs,mes_dat[]=0,mess[]=0; extern void lcd_init(); void lcd_cmd(unsigned char); void lcd_data(unsigned char); //void wait(); void gsm_delay(unsigned int); unsigned char txt[]="AT+CMGF=1"; unsigned char no[] ="AT+CMGS=\"9940151239\""; unsigned char del[]="AT+CMGDA=\"DEL ALL\""; unsigned char sen[]="SENSOR"; void send_no(); void new_mess(); void gsm_read(); void delete(); void gsm_read(); void mode(); unsigned char rx(); unsigned char w, re,rx_data; void tx(unsigned char); void serial(void) interrupt 4 { if(TI==1) { TI=0; SBUF = '\0'; //ES=0; } else if(RI==1) { rx_data = SBUF; if(rx_data=='+') { do { mess[m2] = rx_data; m2++; RI=0; }while(rx_data=='T'); } RI = 0; } } void main() { uart_init(); lcd_init(); mode(); new_mess(); // delete(); while(1) { IE = 0x90; m = 0; r = 0; s1 = 0; m2 = 0; re = rx_data; if(re=='+') { RI = 0; if(SBUF=='C') { lcd_data('1'); RI = 0; if(re=='M') { RI=0; lcd_data('2'); if(re=='T') { RI=0; do { gs = re; RI = 0; }while(gs!=0x0a); do { gs = re; RI = 0; }while(gs!=0x0a); m=-1; do { m = m+1; mes_dat[m] = re; RI = 0; }while(mes_dat[m]!=0x0d); mes_dat[m] = '\0'; m=0; lcd_cmd(0x01); lcd_cmd(0x80); while(mes_dat[m]!='\0') { lcd_data(mes_dat[m]); m++; } } } } } while(sw==1); m2=0; while(mess[m2]!='T') { //lcd_data(mess[m2]); tx(mess[m2]); m2++; } send_no(); while(sen[s1]!='\0') { putc(sen[s1]); s1++; } putc(0x1a); lcd_data('L'); gsm_delay(1000); gsm_delay(1000); gsm_delay(1000); } } void new_mess() { n1=0; while(ne[n1]!='\0') { putc(ne[n1]); n1++; } putc(0x0a); putc(0x0d); gsm_delay(1000); } void mode() { f1 = 0; while(txt[f1]!='\0') { putc(txt[f1]); f1++; } putc(0x0a); putc(0x0d); gsm_delay(1000); } void uart_init() { TMOD = 0x20; TH1 = -3; SCON = 0x50; TR1 = 1; //IE = 0x90; } /*unsigned char rx() { unsigned char rec; while(RI==0); rec = SBUF; RI = 0; return rec; } void delete() { unsigned int d ; d=0; while(del[d]!='\0') { putc(del[d]); d++; } putc(0x0a); putc(0x0d); gsm_delay(1000); } */ void send_no() { unsigned int s=0; while(no[s]!='\0') { putc(no[s]); s++; } putc(0x0a); putc(0x0d); } /*void gsm_read() { m=0; r=0; lcd_data('R'); while(rd[r]!='\0') { putc(rd[r]); r++; } putc(0x0a); putc(0x0d); } */ void gsm_delay(unsigned int k) { unsigned int i,j; for(i=0;i<=k;i++) for(j=0;j<=1273;j++); } void tx(unsigned char tx_data) { SBUF = tx_data; while(TI==0); TI=0; }
This is a duplicate of http://www.keil.com/forum/19961/ - isn't it?
Do you really think that code is clear and easy to read?
Do you think anynody will bother to read it if you can't even be bothered to describe exactly what you think it should be doing, exactly what does happen when you run it, and what attempts you have made to debug it?
At the very least, you need to comment your code.
Debugging tips: www.8052.com/.../120313
See also: www.techonlineindia.com/.../Developing_a_good_bedside_manner.aspx
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
Taken from www.murphys-laws.com/.../murphy-computer.html
If it's hard to understand, then one should certainly not expect anyone to look at it for free!