Chào các bác. Thấy cái này cũng được khá nhiều người quan tâm nên em chia sẻ cho mọi người tham khảo.Đk thiết bị qua tin nhắn điện thoại (Hơi tốn tiền tin nhắn chút nhưng cũng thấy hay hay).
đây là code em xây dựng.
Code:
#include <REGX52.H>
#include <string.h>
#include "stdio.h"
#include "math.h"
// Define Macro
#define RL1 P2_0
#define RL2 P2_1
#define RL3 P2_2
#define RL4 P2_3
//--------------------------------------------------------
// Global variable
#define BUFF_SIZE 20
unsigned char buffer[BUFF_SIZE];
//unsigned char dl_rv;
unsigned char timer_count;
bit flag__;
bit ok;
char dem;
//-------------------------------------------------------------
// Function Static
void truyen_mang(char *s);
void xu_ly_tin_nhan(void);
void Process_mess(char *dtin);
//---------------------------------------------------------------------
// ctrinh delay
void delay(unsigned int ms)
{
unsigned int i;
for(i=0;i<ms;i++);
}
//-------------------------- chuong trinh ngat nhan byt co tin nhan gui toi
// khi co tin nhan gui toi thi thuc hien doc tin nhan
void isr_tinnhan() interrupt 0
{
truyen_mang("AT+CMGR=1\r"); // doc tin nhan tai o nho thu 1 cua SIM.
delay(2000);
}
//-------------------------------------------------------
// ham xu ly du lieu nhan duoc
//-----------------------------------------------------------------
// khoi tao UART
void khoitao_uart(void)
{
SCON=0x52;
TMOD=0x21; // khoi tao 2 timer time1 dung cho UART, timer0 dùng de tao time doc tin nhan
TH1=TH1=-3; // baud = 9600
//TH0 = -10000/256; // 10ms
//TL0 = -10000%256;
TR1=1;
// ES = 1;
//TR0 = 1;
// ET0 = 1;
EX0 = 1;
IT0 = 1;
EA =1;
}
//---------------------------------clear buff------------
//
void clear_buffer(void)
{
unsigned char i;
for(i = 0 ; i< BUFF_SIZE ; i++)
{
buffer[i] = '\0';
}
}
//--------------------------------------------------------------------------
// Chuong trinh ngat UART nhan du lieu tu sim
void isr_interrup() interrupt 4
{ char dl_rv;
if(RI)
{
dl_rv=SBUF;
switch (dl_rv)
{
case '\*':
clear_buffer();
dem = 0;
break;
case '#':
Process_mess(buffer);
break;
default:
buffer[dem] = dl_rv;
dem++;
if(dem>BUFF_SIZE)
dem=0;
break;
}
RI = 0;
}
}
//--------------------------------------------------------
//+CMGR: "REC READ","+841653263756","","13/05/20,19:49:22+28"TB1 ON 1234>
//>
//OK
//--------------------------------------------------
//----------------------------------------------------------------
// truyen mang dl xuong sim
void truyen_mang(char *s)
{
// putchar(0x0d); //xuong dong
while(*s)
{
putchar(*s);
s++;
delay(1000);
}
}
//----------------------------------------------------------------
// Khoi tao Sim 900
void khoitao_sim(void)
{
delay(4000);
truyen_mang("AT\n\r");
delay(10000);
truyen_mang("AT+CMGF=1\n\r");
delay(10000);
}
//----------------------------------------------------------
// xu ly tin nhan nhan duoc
void Process_mess(char *dtin)
{
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '1') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL1 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 1 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '2') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL2 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 2 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '3') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL3 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 3 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '4') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'N') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL4 = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 4 da duoc bat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '1') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL1 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 1 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '2') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL2 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 2 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '3') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL3 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 3 da duoc tat");
putchar(0x1A);
}
if((*(dtin) == 'T') && (*(dtin+1)== 'B') && (*(dtin+2)== '4') && (*(dtin+3)== ' ') && (*(dtin+4)== 'O') && (*(dtin+5)== 'F') && (*(dtin+6)== ' ') && (*(dtin+7)== '1') && (*(dtin+8)== '2') && (*(dtin+9)== '3') && (*(dtin+10)== '4'))
{
RL4 = 1;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Thiet Bi 4 da duoc bat");
putchar(0x1A);
}
}
//------------------ chuong trinh chinh----------------
//
void main(void)
{
khoitao_uart();
//PS=1;
khoitao_sim();
delay(10000);
flag__ = 0;
ok = 0;
truyen_mang("AT+CMGD=1\r");
delay(10000);
truyen_mang("AT+CMGS=\"+841649802694\"\r");
delay(10000);
delay(10000);
truyen_mang("Do an tot nghiep svth: Nguyen Huy Bien k12D He Thong Da Duoc Khoi Dong");
putchar(0x1A);
delay(10000);
ES=1;
while(1)
{
;
}
}
kiếm hoài không ra. 

Comment