for(j=249;j>0;j--)
;//什么也不做等待一个机器周期
}
/*****************************************************
函数功能:
主函数
***************************************************/
voidmain(void)
{
unsignedinti;
TMOD=0x20;//TMOD=00100000B,定时器T1工作于方式2
SCON=0x40;//SCON=01000000B,串口工作方式11起始位8数据位1停止位
PCON=0x00;//PCON=00000000B,波特率9600晶振11.0592
TH1=0xfd;//根据规定给定时器T1赋初值
TL1=0xfd;//根据规定给定时器T1赋初值
TR1=1;//启动定时器T1
while
(1)
{i=0;
while(zifuchuan[i]!
='\0')//循环发送字节数组中的数据
{
fasong(zifuchuan[i]);//调用发送函数发送数据
i++;//指向下个字符
yanshi
(1);//150ms发送一次数据
}
yanshi(1000);//150ms发送一次数据
}
}
1#include
2#include
3#include
4#include
5
6/*******************************************************
7*宏定义数据类型
8********************************************************/
9
10#defineUCHARunsignedchar
11#defineUINTunsignedint
12#defineTRUE1
13#defineFALSE0
14#defineENABLE1
15#defineDISABLE0
16
17
18/*******************************************************
19*宏定义常量
20********************************************************/
21
22#defineXTAL11059200
23#defineBAUTERATE9600L
24#defineBUTTON_ACCESS1
25#defineBUTTON_NOT_ACCESS2
26#defineBUTTON_FLASHED3
27#defineBUTTON_STOPED4
28
29/********************************************************
30*宏定义名称
31*********************************************************/
32
33#defineSTATIONIDS1
34
35/********************************************************
36*定义变量(永久变量区)
37*********************************************************/
38
39UINTBt_R_State=ENABLE;
40UINTBt_A_State=DISABLE;
41UINTBt_C_State=DISABLE;
42UINTHave_Bt_R_Pressed=FALSE;
43UINTHave_Agree=FALSE;
44UINTHave_Choiced=FALSE;
45
46/********************************************************
47*临时变量区
48*********************************************************/
49UCHARcode*message_request="DATA-2-S1-1-0-1-0-DATA";
50UCHARcode*message_agree="DATA-2-S1-1-0-2-0-DATA";
51UCHARcode*message_cancel="DATA-2-S1-1-0-3-DATA";
52UCHARcode*next_line="\r\n";
53UCHARcode*slider="-";
54UCHARcode*slider2=",";
55UCHARre;
56UCHARstring[30]={0};
57UINTledPre=0;
58UINTtype=0;
59UINTrequest_type;
60UCHARdata_seg[10]={0};
61
62/********************************************************
63*函数定义
64*********************************************************/
65
66//初始化串口
67voidInitUART(UINTbits);
68
69//用串口发送一个字符串
70voidUartSend(UCHAR*Data,intLen);
71
72//用串口接收一个字符串,收到"\0"说明字符串接收完毕
73voidUartRead();
74
75//初始化中断
76voidinitInterrupt();
77
78UINTgetDistancePre();
79
80//普通延时函数
81voidDelay(UINTtimes);
82
83//特殊延时函数
84voidSpecialDelay(UINTtimes);
85
86//根据IO口编号和给定的操作数点亮或熄灭相应的LED状态灯
87voidOperateStatusLed(UINTio_num,UINTstatus);
88
89//根据给定的距离对应的编号使相应的灯亮
90voidOperateDistanceLed(UINTdistancePre);
91
92//根据获取到的串口数据来获取请求类型和数据
93voidGetInfo(UCHAR*info);
94
95
96//根据返回的数据取得请求类型
97UINTgetRequestType(UCHAR*message);
98
99voidFinishFlash();
100
101
102
103
104
105
106/*********************************************************
107*主函数
108**********************************************************/
109
110
111voidmain(){
112P1=0x00;
113initInterrupt();
114IP=0x01;
115InitUART(9600);
116while
(1){
117Bt_R_State=ENABLE;
118Bt_A_State=DISABLE;
119Bt_C_State=DISABLE;
120P1=0x00;
121P2_3=0;
122P2_4=0;
123P2_5=0;
124Have_Agree=FALSE;
125Have_Choiced=FALSE;
126Have_Bt_R_Pressed=FALSE;
127while(!
Have_Bt_R_Pressed);
128Have_Bt_R_Pressed=FALSE;
129UartSend(message_request,strlen(message_request));
130UartRead();
131UartSend("*",1);
132UartSend(string,strlen(string));
133GetInfo(string);
134type=request_type;
135if(type==1){
136OperateStatusLed(1,1);
137ledPre=getDistancePre();
138OperateDistanceLed(ledPre);
139Bt_A_State=ENABLE;
140Bt_C_State=ENABLE;
141SpecialDelay(10000);
142Bt_A_State=DISABLE;
143Bt_C_State=DISABLE;
144if(Have_Agree){
145UartSend(message_agree,strlen(message_agree));
146FinishFlash();
147}else{
148UartSend(message_cancel,strle