?? main.c
字號:
#include "STC12C2052AD.H"
#include <string.h>
sbit TC35_KEY = P1^7;
sbit BEEP = P1^0;
sbit TC35_IGT = P1^1;
/********************************************
延時5MS程序
********************************************/
void DELAY_5ms(unsigned int delay_num)
{
TMOD=TMOD | 0x01;//設置為方式
ET0=0; //關定時器0中斷
TL0=0x0; //裝載數 定時 5ms
TH0=0xEE;
TR0=1;
while (delay_num--)
{ while (!TF0);
TH0 = 0xEE;
TF0 = 0; }
TR0 = 0;
}
void TC35_poweron()
{
TC35_KEY=0; // 打開TC35供電部分
DELAY_5ms(10);
TC35_IGT=0;
DELAY_5ms(40); //
TC35_IGT=1;
}
void UART_init()
{
SCON=0x50;
TMOD=TMOD | 0x20;
TH1=TL1=0xFD;
TR1=1;
}
/*************************發送字符函數***********************/
void UART_send_char(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
/*************************發送字符串函數**********************/
void UART_send_string(unsigned char *str,unsigned int strlen)
{
unsigned int k=0;
do
{
UART_send_char(*(str + k));
k++;
//delay_ms(1);
} while(k < strlen);
//delay_ms(1);
}
TC35_send_chinese_message(char *p_target_phone_number,char *p_message_center_number)
{
unsigned int i;
// unsigned int TEXT_length;
char j;
// char temp[13];
unsigned char temp[2];
char abc[]="0891"; //短信中心號碼長度(固定)
char message_center_number[]="6813800755500F"; //信息中心號碼
char pdu_message_type[]="11000D91"; //信息類型 (固定)
char target_phone_number[]="6800000000000F";//目標手機號碼
char pdu_message_id[]="000800";//信息標示(固定)
char message_length[3]="00"; //正文長度
// char message_text[]="4E3B4EBAFF0C63077EB995018BE5636275356C604E8630024E86";//短信正文
char message_text[]="4E3B4EBAFF0C67094EBA975E6CD5752894A553195F0095E8FF0C5FEB62A58B665440FF01";//短信正文
message_length[0]=strlen(message_text)/2/16+0x30;
message_length[1]=strlen(message_text)/2%16+0x30;
if(message_length[1]>0x39)
{
message_length[1]=message_length[1]%16+0x37;
}
//UART_send_char(message_length[0]);
//UART_send_char(message_length[1]);
for(i=0;i<11;i++) //接收傳入得目標號碼
{
message_center_number[2+i]=*(p_message_center_number+i);
}
for(i=0;i<6;i++) //轉換短信中心號碼號碼
{
j = message_center_number[2+2*i];
message_center_number[2+2*i] = message_center_number[2+2*i+1];
message_center_number[2+2*i+1] = j;
}
for(i=0;i<11;i++) //接收傳入得目標號碼
{
target_phone_number[2+i]=*(p_target_phone_number+i);
}
for(i=0;i<6;i++) //轉換目標手機號碼
{
j = target_phone_number[2+2*i];
target_phone_number[2+2*i] = target_phone_number[2+2*i+1];
target_phone_number[2+2*i+1] = j;
}
temp[0]=(strlen(message_text)/2+15)/10+0x30;
temp[1]=(strlen(message_text)/2+15)%10+0x30;
// UART_send_char(temp[0]);
// UART_send_char(temp[1]);
//合并需要發送得字符串
strcat(abc,message_center_number);
strcat(abc,pdu_message_type);
strcat(abc,target_phone_number);
strcat(abc,pdu_message_id);
strcat(abc,message_length);
strcat(abc,message_text);
UART_send_string("at+cmgf=0",9);
UART_send_char(0x0d); //回車
UART_send_char(0x0a); //換行
DELAY_5ms(100);
UART_send_string("at+cmgs=",8); //發送前計算長度
UART_send_char(temp[0]);
UART_send_char(temp[1]);
UART_send_char(0x0d); //回車
UART_send_char(0x0a); //換行
DELAY_5ms(100);
UART_send_string(abc,strlen(abc));
UART_send_char(0x1a);//CZ回車
/* //測試參考代碼 可發送短信
unsigned int i;
char j;
char temp[13];
char abc[]="0891"; //短信中心號碼長度(固定)
char message_center_number[]="683108705505F0"; //信息中心號碼
char pdu_message_type[]="11000D91"; //信息類型 (固定)
char target_phone_number[]="683114005163F0";//目標手機號碼
char pdu_message_id[]="000800";//信息標示(固定)
char message_length[]="02"; //短信正文長度
char message_text[]="4E2D";//短信正文
strcat(abc,message_center_number);
strcat(abc,pdu_message_type);
strcat(abc,target_phone_number);
strcat(abc,pdu_message_id);
strcat(abc,message_length);
strcat(abc,message_text);
UART_send_string("at+cmgf=0",9);
UART_send_char(0x0d); //回車
UART_send_char(0x0a); //換行
DELAY_5ms(100);
UART_send_string("at+cmgs=17",10); //發送前計算長度
UART_send_char(0x0d); //回車
UART_send_char(0x0a); //換行
DELAY_5ms(100);
UART_send_string(abc,52);
UART_send_char(0x1a);//CZ回車
*/
}
TC35_read_message_center()
{
unsigned int i;
char receive_temp;
//unsigned char receive_buffer[27];
UART_send_string("at+csca=?",9); //發送讀取短信中心號碼命令
DELAY_5ms(10);
for(i=0;i<35;i++)
{
while(!RI);
receive_temp = SBUF;
if(i>10 && i< 22 )
//receive_buffer[i] = SBUF;
RI=0;
}
}
TC35_send_message()
{
// UART_send_string("at",2);
// UART_send_char(0x0d);
// UART_send_char(0x0a);
//delay_ms(1000);
// DELAY_5ms(200);
UART_send_string("at+cmgf=1",9);
UART_send_char(0x0d); //回車
UART_send_char(0x0a); //換行
DELAY_5ms(200);
//delay_ms(1000);
UART_send_string("at+cmgs=\"+8613410015360\"",24);
UART_send_char(0x0d);
UART_send_char(0x0a);
DELAY_5ms(200);
//delay_ms(1000);
UART_send_string("hello",5);
UART_send_char(0x1a);//CZ回車
}
//鑰匙開鎖報警
void TC35_key_warm()
{
unsigned int i;
//讀取號碼5個號碼
for(i=0;i<5;i++) // 發送5條短信給讀取得號碼
{
TC35_send_message(); //傳入號碼
//等待發送成功
}
//打電話報警循環撥號5次
}
//欠壓報警
void TC35_lowpower()
{
unsigned int i;
//發送5條短信報告欠壓
for(i=0;i<5;i++) // 發送5條短信給讀取得號碼
{
TC35_send_message(); //傳入號碼
//等待發送成功
}
//亮一個指示燈提示電壓低
}
void main()
{
TC35_KEY=1; //關閉電源
EX0=1; //允許外部中斷
EX1=1;
UART_init();
EA=1; //允許外部總中斷
PCON=0x02; //進入休眠
while(1);
}
void Eint0() interrupt 0 //外部中斷0程序
{
EA=0; //禁止中斷
DELAY_5ms(10); //延時去抖動
TC35_poweron();
// UART_send_string(receive_buffer,15);
/* BEEP=0;
DELAY_5ms(10); //延時去抖動
DELAY_5ms(10); //延時去抖動'
DELAY_5ms(10); //延時去抖動
BEEP=1;
DELAY_5ms(10); //延時去抖動'
DELAY_5ms(10); //延時去抖動
BEEP=0;
DELAY_5ms(10); //延時去抖動
DELAY_5ms(10); //延時去抖動'
DELAY_5ms(10); //延時去抖動
BEEP=1;
DELAY_5ms(10); //延時去抖動'
DELAY_5ms(10); //延時去
// TC35_KEY=0;//TC35電源啟動
*/
EA=1;
PCON=0x02; //進入休眠
}
void Eint1() interrupt 2 //外部中斷0程序
{// unsigned char code num[]="13410015360";
code char TC35_target_phone_number[]="13798233255";
code char TC35_message_center_number[]="13800755500";
EA=0; //禁止中斷
DELAY_5ms(500); //延時去抖動
// TC35_read_message_center();
TC35_send_chinese_message(TC35_target_phone_number,TC35_message_center_number);
//TC35_send_message();
//TC35_KEY=1;//TC35電源啟動
EA=1;
PCON=0x02; //進入休眠
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -