📄 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 + -