level 1
zs1540
楼主
程序主要实现当有烟雾时通过GSM模块发短信到手机上
程序有错求改正!!!!!谢谢
#include <ioCC2530.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0//LED1为P1.0口控制
#define AIR P2_0 //光敏为P2.0口控制
unsigned char str1[]="AT\n\r";//握手指令
unsigned char str2[]="AT+CMGF=0\n\r";//设置成pdu模式
unsigned char str3[]="AT+CMGS=27\n\r";//使用gsm字符集
unsigned char str4[]="0891685631225812F2011000D9168\n\r";//短信内容
unsigned char str5[]="0x1a\n\r";
unsigned char *Date[]={str1,str2,str3,str4,str5};
void InitUART(void); //串口初始化
void Delayms(uint);//延时函数
void InitLed(void);//初始化LED1
void AirInit(); //光敏初始化
uchar AirScan(); //烟雾扫描程序
void UartSend_String(char *Date,int len);
char Txdate[5];
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=587;j>0;j--)
;
}
void InitLed(void)
{
P1DIR |= 0x01; //P1_0定义为输出
LED1 = 1; //LED1灯熄灭
}
void AirInit()
{
P2SEL &= ~0X01; //设置P20为普通IO口
P2DIR &= ~0X01; // 在P20口,设置为输入模式
P2INP &= ~0x01; //打开P20上拉电阻,不影响
}
uchar AirScan(void)
{
if(AIR==0)
{
Delayms(10);
if(AIR==0)
{
return 1; // 无烟雾
}
}
return 0; //有烟雾
}
void InitUART(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为 32MHZ 晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为 32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为 32MHZ
PERCFG = 0x00; //位置 1 P0 口
P0SEL = 0x0c; //P0_2,P0_3 用作串口(外部设备功能)
P2DIR &= ~0XC0; //P0 优先作为 UART0
U0CSR |= 0x80; //设置为 UART 方式
U0GCR |= 11;
U0BAUD |= 59; //波特率设为 6900
UTX0IF = 0; //UART0 TX 中断标志初始置位 0
}
void UartSend_String(char *date,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF=*date++;
while(UTX0IF==0);
UTX0IF=0;
}
}
void main(void)
{
InitLed(); //调用初始化函数
AirInit();
while(1)
{
int i;
if(AirScan()) //按键改变LED状态
LED1=1; //无烟雾,LED1灭掉
else
strcpy(Txdate,Date[0]); //将发送内容copy到Txdata;
for(i=0;i<5;i++)
{
LED1=0; //有烟雾,LED1点亮
UartSend_String(Txdate,sizeof(Date)); //串口发送数据
Delayms(500);
}
}
}
2014年09月06日 09点09分
1
程序有错求改正!!!!!谢谢
#include <ioCC2530.h>
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0//LED1为P1.0口控制
#define AIR P2_0 //光敏为P2.0口控制
unsigned char str1[]="AT\n\r";//握手指令
unsigned char str2[]="AT+CMGF=0\n\r";//设置成pdu模式
unsigned char str3[]="AT+CMGS=27\n\r";//使用gsm字符集
unsigned char str4[]="0891685631225812F2011000D9168\n\r";//短信内容
unsigned char str5[]="0x1a\n\r";
unsigned char *Date[]={str1,str2,str3,str4,str5};
void InitUART(void); //串口初始化
void Delayms(uint);//延时函数
void InitLed(void);//初始化LED1
void AirInit(); //光敏初始化
uchar AirScan(); //烟雾扫描程序
void UartSend_String(char *Date,int len);
char Txdate[5];
void Delayms(uint xms) //i=xms 即延时i毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=587;j>0;j--)
;
}
void InitLed(void)
{
P1DIR |= 0x01; //P1_0定义为输出
LED1 = 1; //LED1灯熄灭
}
void AirInit()
{
P2SEL &= ~0X01; //设置P20为普通IO口
P2DIR &= ~0X01; // 在P20口,设置为输入模式
P2INP &= ~0x01; //打开P20上拉电阻,不影响
}
uchar AirScan(void)
{
if(AIR==0)
{
Delayms(10);
if(AIR==0)
{
return 1; // 无烟雾
}
}
return 0; //有烟雾
}
void InitUART(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为 32MHZ 晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为 32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为 32MHZ
PERCFG = 0x00; //位置 1 P0 口
P0SEL = 0x0c; //P0_2,P0_3 用作串口(外部设备功能)
P2DIR &= ~0XC0; //P0 优先作为 UART0
U0CSR |= 0x80; //设置为 UART 方式
U0GCR |= 11;
U0BAUD |= 59; //波特率设为 6900
UTX0IF = 0; //UART0 TX 中断标志初始置位 0
}
void UartSend_String(char *date,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF=*date++;
while(UTX0IF==0);
UTX0IF=0;
}
}
void main(void)
{
InitLed(); //调用初始化函数
AirInit();
while(1)
{
int i;
if(AirScan()) //按键改变LED状态
LED1=1; //无烟雾,LED1灭掉
else
strcpy(Txdate,Date[0]); //将发送内容copy到Txdata;
for(i=0;i<5;i++)
{
LED1=0; //有烟雾,LED1点亮
UartSend_String(Txdate,sizeof(Date)); //串口发送数据
Delayms(500);
}
}
}