**********************************************************************************
* 工程名 :
* 描述 :通过手机控制LED
* 实验平台:STC12XX
* QQ:184164353
* : ***********************************************************************************/
#include "string.h"
#include "delay.h"
无纺布折叠机
#include "uart.h"
#define Buf2_Max 200 //串口2缓存长度 /************* 本地常量声明 **************/
sbit RUNING_LED = P2^1; //运行指示灯
大聚合/************* 本地变量声明 **************/
xdata u8 Uart2_Buf[Buf2_Max];
u8 Times=0,First_Int = 0,shijian=0;
//u8 Time_count=0;
bdata u8 Flag;//定时器标志位
sbit Timer0_start =Flag^0; //定时器0延时启动计数器
static unsigned char *phone = "ATD10086;\r\n"; //,修改这里可以修改拨打的电话。
/************* 本地函数声明 **************/ void GPIO_config(void);
保护层垫块void Timer0Init(void);
void CLR_Buf2(void);
void Wait_CREG(void);
/************* 外部函数和变量声明*****************/
/*******************************************************************************
* 函数名 : main
* 描述 : 主函数
* 输入 :
* 输出 :
* 返回 :
录播
服务* 注意 : 串口2负责与GPRS模块通信,串口1用于下载程序或串口调试,可以避免在下载程序时数据
还发送到模块
*******************************************************************************/
void main(void)
{
GPIO_config();
Uart2Init();
Timer0Init();
Wait_CREG(); //查询模块是否注册成功
UART2_SendString(phone); //
while(1)
{
;
}
}
/*******************************************************************************
* 函数名 : Uart1
* 描述 : 串口1中断服务入口函数
* 输入 :
* 输出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Uart1() interrupt 4
{
if (RI)
{
RI = 0; //清除RI位
}
if (TI)
{
TI = 0; //清除TI位
}
}
/*******************************************************************************
* 函数名 : Uart2
* 描述 : 串口2中断服务入口函数
* 输入 :
* 输出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Uart2() interrupt 8
{
IE2 &= ~0x01; //关闭串口2中断
if (S2CON & S2RI)
{
S2CON &= ~S2RI; //清除S2RI位
Uart2_Buf[First_Int] = S2BUF; //将接收到的字符串存到缓存中
First_Int++; //缓存指针向后移动
if(First_Int > Buf2_Max) //如果缓存满,将缓存指针指向缓存的首地址
{
First_Int = 0;
}
}
if (S2CON & S2TI)
{
S2CON &= ~S2TI; //清除S2TI位
}
IE2 |= 0x01; //使能串口2中断
}
/*******************************************************************************
* 函数名 : Timer0_ISR
* 描述 : 定时器0中断服务入口函数,20ms中断一次
刻字笔* 输入 :
* 输出 :
* 返回 :
* 注意 :
*******************************************************************************/
void Timer0_ISR() interrupt 1
{
static u8 Time_count=0;
TR0=0;//关定时器
Time_count++;
if(Time_count>=50)
{
Time_count = 0;
RUNING_LED =~RUNING_LED;
}
TR0=1;//开定时器
}
/*******************************************************************************
* 函数名 : GPIO_config
* 描述 : IO口配置函数
* 输入 :
* 输出 :
* 返回 :
* 注意 :
*******************************************************************************/
void GPIO_config(void)
{
P3M1 &= 0XC3; //配置P32~P35为推挽输出
P3M0 |= ~0XC3;
RUNING_LED=0;
}
void Timer0Init(void) //20毫秒@22.1184MHz
{
AUXR &= 0x7F; //12T模式
TMOD &= 0xF0; //设置定时器模式 16位重载
TL0 = 0x00; //设定定时器初值
TH0 = 0x70; //设定定时器初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
}
/*******************************************************************************
* 函数名 : CLR_Buf2
* 描述 : 清除串口2缓存数据
* 输入 :
* 输出 :
* 返回 :
* 注意 :
*******************************************************************************/
>珠片绣