?? cheshi.lst
字號:
1000 2 case PHONE_READ: //讀電話本
1001 2 strcpy(uart_buff,"AT+CPBR=");
1002 2 strcat(uart_buff,&read_tmp);
1003 2 uart_buff[9]=0x0d; uart_buff[10]=0x0a;
1004 2 uart_buff[11]=0x00; uart_buff[12]=0x00;
1005 2 break;
1006 2 case SMS_CMGR: //讀一個短信
1007 2 strcpy(uart_buff,"AT+CMGR=");
1008 2 strcat(uart_buff,para_temp);
1009 2 break;
1010 2 case SMS_CMGS: //寫一個短信
1011 2 strcpy(uart_buff,"AT+CMGS="); //AT+CMGS= "13818120592"
1012 2 strcat(uart_buff,para_temp);
1013 2
1014 2 break;
1015 2 case SMS_CMGD: //刪除一個短信
1016 2 strcpy(uart_buff,"AT+CMGD=");
1017 2 strcat(uart_buff,para_temp);
1018 2 break;
1019 2 case CMGS_MUB: //發報警短信內容
1020 2 strcpy(uart_buff,para_temp);
1021 2 break;
1022 2 case AT_CPMS:
1023 2 strcpy(uart_buff,"ATE0V0+CPMS=\x22SM\x22");
1024 2 break; //AT_CPMS
1025 2 case PICK_UP: //摘機
1026 2 strcpy(uart_buff,"ATA");
1027 2
1028 2 case AT_COMMAND:
1029 2 break;
1030 2 default:
1031 2 receive_count=0;
1032 2 return(TRUE);
1033 2 }
1034 1 ES=1;
1035 1 strcat(uart_buff,"\x0d\x00");//在命令后加入CR
1036 1 send_count=0; //設置發送指針
1037 1 receive_count=0; //設置接送指針
1038 1 AT_Command_Status=COMMAND_WAIT; //設置接收成功標志
1039 1 timer_S_cnt=0;
1040 1 txd_rxd_bit=0;//
1041 1 at_send_bit=0; //
1042 1 TI=1; //開始發送數據
1043 1 RI=0; //清除接收標志
1044 1
1045 1
1046 1 // if(type==AT_COMMAND)
1047 1 // {
C51 COMPILER V7.50 CHESHI 11/16/2008 00:57:23 PAGE 18
1048 1 // return(TRUE);
1049 1 // }
1050 1 // else
1051 1 if (type==TC35_INIT )
1052 1 {
1053 2 while (timer_S_cnt<6)
1054 2 {
1055 3
1056 3 if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1) //等待接收回應
1057 3 return(TRUE);
1058 3 }
1059 2 }
1060 1
1061 1 else if((type==SMS_CMGR))
1062 1 {
1063 2 while (timer_S_cnt<6)
1064 2 {
1065 3
1066 3 if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1) //等待接收回應
1067 3 return(TRUE);
1068 3 }
1069 2 }
1070 1 else if((type==CALL_ID))
1071 1 {
1072 2 while (timer_S_cnt<2)
1073 2 {
1074 3 if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1) //等待接收回應
1075 3 return(TRUE);
1076 3 }
1077 2 }
1078 1
1079 1
1080 1 else
1081 1 {
1082 2 while (timer_S_cnt<6)
1083 2 {
1084 3
1085 3 if (AT_Command_Status!=COMMAND_WAIT||txd_rxd_bit==1) //等待接收回應
1086 3 {
1087 4 return(TRUE); }
1088 3 }
1089 2 }
1090 1 // eer_int++;
1091 1 return(FALSE);
1092 1 }
1093
1094 //****************************************************************
1095 // ** 撥打電話 ***
1096 //****************************************************************
1097 void tel_diat() //報警時撥打前三個電話,時間設為40秒,
1098 { uchar ii,j,t,r=0;
1099 1 t=0x01; //可以用一個電話//為沒有打通電話時做臨時存儲 0000 0111, 可以撥打3個電話,分別是1,2,3
1100 1 do
1101 1 { ii=ii+1;
1102 2 if(ii>=3) ii=0; // 最大值,不能起過三個電話
1103 2 TMP_BUF=0;
1104 2 if(t==0) return ;
1105 2 if( (t>>ii-1)&0x01!=0)
1106 2 { read_tmp=0x30+ii; }
1107 2 else { continue; }
1108 2 j=PHONE_RD(); //讀電話號碼
1109 2 r++;
C51 COMPILER V7.50 CHESHI 11/16/2008 00:57:23 PAGE 19
1110 2 if(j>5)
1111 2 { para_temp[j++]=';';para_temp[j++]=0x0d;para_temp[j++]=0x00;
1112 3 if(!Send_AT_Command(VOICE_DIAL));
1113 3 { ES=1; RI=0 ; //設置發送指針
1114 4 receive_count=0; send_count=0xff;
1115 4 timer_S_cnt=0;
1116 4 while(timer_S_cnt<40&&(AT_Command_Status==COMMAND_WAIT))
1117 4 { if(((uart_buff[0]=='0')&&(uart_buff[0]=='6'))&&uart_buff[1]==0x0d)
1118 5 break;
1119 5 }
1120 4 }
1121 3 if((((uart_buff[0]=='0')&&uart_buff[1]==0x0d))) //撥號成功
1122 3 {
1123 4 t&=~(1<<ii-1) ;
1124 4
1125 4 ES=1; //設置發送指針
1126 4 receive_count=0;send_count=0xffff; RI=0 ;
1127 4 timer_S_cnt=0; AT_Command_Status=COMMAND_WAIT;
1128 4 while(timer_S_cnt<30&&(AT_Command_Status==COMMAND_WAIT)) ;
1129 4 Send_AT_Command(HOOKOFF);
1130 4 if(t==0) return ;
1131 4 }
1132 3
1133 3
1134 3 Send_AT_Command(HOOKOFF);
1135 3
1136 3
1137 3 }else
1138 2 t&=~(1<<ii-1) ;
1139 2
1140 2
1141 2
1142 2
1143 2 }while(r<30);
1144 1
1145 1
1146 1 }
1147
1148 void main(void)
1149 {
1150 1 Initialize_Model(); P0=1;
1151 1
1152 1 system_server=SYS_SMSR;
1153 1 receive_count=0;
1154 1 sms_tmp=0;
1155 1
1156 1 LED_INT7=0;
1157 1
1158 1
1159 1 while(1)
1160 1 {
1161 2 //-----------查詢1到20條中的短信,只要有短信就處理------------------------------------------
1162 2 if(system_server==SYS_SMSR) //讀1-20條短信
1163 2 { // Send_AT_Command(SIM_ID);
1164 3 system_server=SYS_SMSR;
1165 3 read_sms(); //timer_S_cnt=0;
1166 3 //P0=0;
1167 3
1168 3 }
1169 2 //----------------一些短信的發送---------------------------------------------------
1170 2
1171 2 else if(system_server==SYS_SMSS) //發送信息
C51 COMPILER V7.50 CHESHI 11/16/2008 00:57:23 PAGE 20
1172 2 { send_sms();system_server=SYS_SMSR;
1173 3
1174 3 }
1175 2
1176 2 else if(system_server==SYS_START) // 硬件中斷處理 發中文
1177 2
1178 2 { int_p02();
1179 3 system_server=SYS_SMSR;
1180 3
1181 3 }
1182 2 else if(system_server==SYS_SBC) // // 硬件中斷處理 //發英文
1183 2 { int_p03();
1184 3 system_server=SYS_SMSR;
1185 3
1186 3 }
1187 2 //---===============外部中斷進行 報警狀態===============================================================
-==
1188 2
1189 2 else if(system_server==SYS_ALARM) // //回中文短信處理
1190 2 {
1191 3 sms_tmp=smss_para;//
1192 3 system_server=SYS_SMSS;
1193 3 }
1194 2
1195 2
1196 2 //==========================進行電話號碼和手機號的設置==================================================
-=========
1197 2 else if(system_server==SYS_TEL) //回英文短信處理
1198 2 {
1199 3 sms_tmp=smss_tel;
1200 3 system_server=SYS_SMSS;
1201 3
1202 3 }
1203 2 else if(system_server==SYS_RING) //來電處理
1204 2 {
1205 3 ring_auto();
1206 3 system_server=SYS_SMSR;
1207 3
1208 3 }
1209 2 else if(system_server==SYS_DIAL) //打電話處理
1210 2 {
1211 3 tel_diat();
1212 3 system_server=SYS_SMSR;
1213 3 }
1214 2
1215 2
1216 2 else system_server=SYS_SMSR;
1217 2
1218 2 }
1219 1
1220 1
1221 1 }
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
C51 COMPILER V7.50 CHESHI 11/16/2008 00:57:23 PAGE 21
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -