📄 gs__.c
字号:
#include<mega8535.h>
#include<delay.h>
#include<string.h>
#define RS PORTA.1
#define RW PORTA.2
#define EN PORTA.3
#define LCD_DATA PORTC
unsigned int flag_get_sms = 0;
unsigned char loop =0;
unsigned char flag = 0;
unsigned char temp,flag1;
unsigned int msgno;
unsigned char recv_num[50];
unsigned char recv_buf[50];
void lcd_cwrt(unsigned char ch);
void init_lcd(void)
{
lcd_cwrt(0x38); // 2 lines
lcd_cwrt(0x0E); // display on ,cursor blinking
lcd_cwrt(0x01); //clear display screen
lcd_cwrt(0x80); //force cursor to beginning f 1st ine
lcd_cwrt(0x06);
delay_ms(5);
}
void lcd_data(unsigned char ch)
{
RS = 1;
LCD_DATA = ch;
EN = 1; //E=1;R/W=0;RS=1
delay_ms(5); //DELAY
EN = 0; //E=0;R/W=0;RS=1
delay_ms(5);
}
void lcd_cwrt(unsigned char ch)
{
RS = 0;
LCD_DATA = ch;
EN = 1; // //E=1;R/W=0;RS=0
delay_ms(5);
EN = 0; //E=0;R/W=0;RS=0
delay_ms(5);
}
void Clear_Lcd()
{
lcd_cwrt(0x01);
delay_ms(5);
}
void Lcd_Send_String(unsigned char *str)
{
while(*str != '\0')
{
lcd_data(*str++);
delay_ms(2);
}
}
interrupt[USART_RXC] void Recive_interrupt(void)
{
temp = UDR;
flag1 =1;
}
void init_uart(void)
{
UCSRB = 0x98;
UCSRC = 0x06;
UBRRH = 0x00;
UBRRL = 0x33;
SREG = 0x80;
}
void send_uart1(unsigned char data)
{
UDR = data;
while((UCSRA & 0x40) == 0);
UCSRA = 0;
}
void get_sms(unsigned int num)
{
unsigned char *r="AT+CMGR=";
while(*r)
{
send_uart1(*r++);
delay_ms(2);
}
send_uart1(num);
delay_ms(2);
send_uart1(13);
//delay_ms(2);
flag1 = 0;
UCSRA = 0;
do
{
while(flag1 != 1);
flag1 = 0;
UCSRA = 0;
}while(temp != ',');
loop = 0;
//UCSR0A = 0;
while(flag1 != 1);
while(temp != 10)
{
recv_num[loop++] = temp;
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
}
flag1 = 0;
loop = 0;
UCSRA = 0;
while(flag1 != 1);
while(temp != 13)
{
recv_buf[loop++] = temp;
//LCD_DAT(recv_buf[loop]);
//loop++;
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
}
flag1 = 0;
UCSRA = 0;
recv_buf[loop] = '\0';
flag1 = 0;
UCSRA = 0;
flag_get_sms = 1;
}
void wait_for_sms(void)
{
if(flag == 1)
{
flag = 0;
while(flag == 0)
{
flag1 =0;
UCSRA = 0;
while(flag1 != 1);
if(temp == '+')
{
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
if(temp == 'C')
{
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
if(temp == 'M')
{
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
if(temp == 'T')
{
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
if(temp == 'I')
{
for(loop =0;temp != ',';loop++)
{
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
}
flag1 = 0;
UCSRA = 0;
while(flag1 != 1);
msgno = temp;
flag = 1;
flag1 = 0;
UCSRA =0;
}
else
{
flag1 = 0;
UCSRA = 0;
}
}
else
{
flag1 = 0;
UCSRA = 0;
}
}
else
{
flag1 = 0;
UCSRA = 0;
}
}
else
{
flag1 = 0;
UCSRA = 0;
}
}
else
{
flag1 = 0;
UCSRA = 0;
}
}
}
}
void del_sms(unsigned char num)
{
while(num != '0')
{
unsigned char *d ="AT+CMGD=";
while(*d)
{
send_uart1(*d++);
delay_ms(2);
}
send_uart1(num--);
send_uart1(13);
delay_ms(2);
}
}
void main()
{
//char *ph="9849111633";
//char *p1="ON";
//char *p2="OFF";
//int i=0;
DDRA = 0xFF;
PORTA = 0x00;
DDRC = 0xFF;
PORTC = 0x00;
init_uart();
init_lcd();
//delay_ms(100);
while(1)
{
PORTA = 0x01;
flag1 = 0;
UCSRA = 0;
flag = 1;
//init_LCD();
wait_for_sms();
get_sms(msgno);
if(flag_get_sms == 1)
{
flag_get_sms = 0;
Clear_Lcd();
Lcd_Send_String(recv_buf);
delay_ms(2);
}
del_sms(msgno);
//while(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -