Rev 238 Rev 239
Line 10... Line 10...
10   10  
11 #include "mylcd.c" 11 #include "mylcd.c"
12   12  
13 void main() 13 void main()
14 { 14 {
15 char odp[96]; 15 char odp[40];
16 int pom,pom2,pom3,odkl,odkl2,maskovadlo,status; 16 int pom,pom2,pom3,odkl,odkl2,maskovadlo,status;
17   17  
18 setup_adc_ports(NO_ANALOGS); 18 setup_adc_ports(NO_ANALOGS);
19 setup_adc(ADC_OFF); 19 setup_adc(ADC_OFF);
20 setup_spi(SPI_SS_DISABLED); 20 setup_spi(SPI_SS_DISABLED);
Line 23... Line 23...
23 setup_timer_2(T2_DISABLED,0,1); 23 setup_timer_2(T2_DISABLED,0,1);
24 setup_comparator(NC_NC_NC_NC); 24 setup_comparator(NC_NC_NC_NC);
25 setup_vref(FALSE); 25 setup_vref(FALSE);
26 setup_wdt(WDT_2304MS); 26 setup_wdt(WDT_2304MS);
27 lcd_init(); 27 lcd_init();
28 28  
29 /* -  
30 delay_us(10); -  
31 lcd_gotoxy(1,1); -  
32 printf(lcd_putc," Ovladani mobilem"); -  
33 lcd_gotoxy(1,2); -  
34 printf(lcd_putc,""); -  
35 lcd_gotoxy(1,3); -  
36 printf(lcd_putc," autor: Tomas Kapl"); -  
37 lcd_gotoxy(1,4); -  
38 printf(lcd_putc," www.kapl.cz"); -  
39 delay_ms(5000); -  
40 */ -  
41 -  
42 while(TRUE) 29 while(TRUE)
43 { 30 {
44 restart_wdt(); 31 restart_wdt();
45 32  
46 output_low(PIN_A4) ; 33 output_low(PIN_A4) ;
47 delay_ms(150); 34 delay_ms(150);
48 output_high(PIN_A4); 35 output_high(PIN_A4);
49 delay_ms(150); 36 delay_ms(150);
50 output_low(PIN_A4) ; 37 output_low(PIN_A4) ;
51 delay_ms(150); 38 delay_ms(150);
52 output_high(PIN_A4); 39 output_high(PIN_A4);
53 delay_ms(150); 40 delay_ms(150);
54 41  
55 /* 42 /*
56 while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku 43 while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku
57 fprintf(MOBIL,"AT\r"); //vycti prijate SMS 44 fprintf(MOBIL,"AT\r"); //vycti prijate SMS
58 while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi 45 while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi
59   46  
Line 71... Line 58...
71 fgetc(MOBIL); 58 fgetc(MOBIL);
72   59  
73 delay_ms(1000); 60 delay_ms(1000);
74 continue; 61 continue;
75 */ 62 */
76 fprintf(MOBIL,"AT+CMGL=1\r"); //vycti prijate SMS (0=nove;1=vsechny) 63 fprintf(MOBIL,"AT+CMGL=1\r"); //vycti prijate SMS (0=nove;1=vsechny)
77 //SPEN=1; 64 //SPEN=1;
78 65  
79 66  
80 while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi 67 while(fgetc(MOBIL)!=0x0A); // predkoc prvni radek odpovedi
81   68  
82 odp[0]=fgetc(MOBIL); // Nacti prvni dva znaky druheho radku odpovedi 69 odp[0]=fgetc(MOBIL); // Nacti prvni dva znaky druheho radku odpovedi
83 odp[1]=fgetc(MOBIL); 70 odp[1]=fgetc(MOBIL);
84 while(fgetc(MOBIL)!=0x0A); // Preskoc zbytek radku 71 while(fgetc(MOBIL)!=0x0A); // Preskoc zbytek radku
85   72  
86 while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku 73 // while(kbhit(MOBIL)) {fgetc(MOBIL); delay_ms(100);} // Preskoc zbytek radku
87 output_high(PIN_A4) ; 74 output_high(PIN_A4);
88   75  
89   76  
90 if(odp[0] == 79 && odp[1] ==75) // Je odpoved "OK"? 77 if(odp[0] == 79 && odp[1] ==75) // Je odpoved "OK"?
91 { 78 {
92 lcd_gotoxy(1,1); 79 lcd_gotoxy(1,1);
Line 96... Line 83...
96 lcd_gotoxy(1,3); 83 lcd_gotoxy(1,3);
97 printf(lcd_putc,"Zaslete SMS na cislo"); 84 printf(lcd_putc,"Zaslete SMS na cislo");
98 lcd_gotoxy(1,4); 85 lcd_gotoxy(1,4);
99 printf(lcd_putc," 736 655 250"); 86 printf(lcd_putc," 736 655 250");
100 delay_ms(5000); 87 delay_ms(5000);
101 } 88 }
102 else 89 else
103 { 90 {
104 //!!!KAKL for(pom=0;pom<55;pom++) //preskoc nedulezite informace 91 //!!!KAKL for(pom=0;pom<55;pom++) //preskoc nedulezite informace
105 for(pom=0;pom<54;pom++) //preskoc nedulezite informace 92 for(pom=0;pom<54;pom++) //preskoc nedulezite informace
106 { 93 {
107 fgetc(MOBIL); 94 fgetc(MOBIL);
108 } 95 }
109 96  
110 //gets(odp); //uloz zakodovany text SMS 97 //gets(odp); //uloz zakodovany text SMS
111 98  
112 odp[0]=fgetc(MOBIL); 99 odp[0]=fgetc(MOBIL);
113 odp[1]=fgetc(MOBIL); 100 odp[1]=fgetc(MOBIL);
114 odp[2]=fgetc(MOBIL); 101 odp[2]=fgetc(MOBIL);
115 odp[3]=fgetc(MOBIL); 102 odp[3]=fgetc(MOBIL);
116 odp[4]=fgetc(MOBIL); 103 odp[4]=fgetc(MOBIL);
Line 118... Line 105...
118 odp[6]=fgetc(MOBIL); 105 odp[6]=fgetc(MOBIL);
119 odp[7]=fgetc(MOBIL); 106 odp[7]=fgetc(MOBIL);
120   107  
121 /*lcd_gotoxy(1,1); 108 /*lcd_gotoxy(1,1);
122 printf(lcd_putc,"\f%s\n",odp);*/ 109 printf(lcd_putc,"\f%s\n",odp);*/
123 110  
124 if(odp[0]==0) odp[1]='0'; // Prevod z ASCII do BIN 111 if(odp[0]==0) odp[1]='0'; // Prevod z ASCII do BIN
125 odp[0]=odp[0] - '0'; 112 odp[0]=odp[0] - '0';
126 odp[1]=odp[1] - '0'; 113 odp[1]=odp[1] - '0';
127 if(odp[0]>9) odp[0]=odp[0]-7; 114 if(odp[0]>9) odp[0]=odp[0]-7;
128 if(odp[1]>9) odp[1]=odp[1]-7; 115 if(odp[1]>9) odp[1]=odp[1]-7;
129 odp[0]=odp[0] << 4; 116 odp[0]=odp[0] << 4;
130 odp[0] |= odp[1]; 117 odp[0] |= odp[1];
131 118  
132 if(odp[2]==0) odp[3]='0'; 119 if(odp[2]==0) odp[3]='0';
133 odp[2]=odp[2] - '0'; 120 odp[2]=odp[2] - '0';
134 odp[3]=odp[3] - '0'; 121 odp[3]=odp[3] - '0';
135 if(odp[2]>9) odp[2]=odp[2]-7; 122 if(odp[2]>9) odp[2]=odp[2]-7;
136 if(odp[3]>9) odp[3]=odp[3]-7; 123 if(odp[3]>9) odp[3]=odp[3]-7;
137 odp[2]=odp[2] << 4; 124 odp[2]=odp[2] << 4;
138 odp[2] |= odp[3]; 125 odp[2] |= odp[3];
139 126  
140 if(odp[4]==0) odp[5]='0'; 127 if(odp[4]==0) odp[5]='0';
141 odp[4]=odp[4] - '0'; 128 odp[4]=odp[4] - '0';
142 odp[5]=odp[5] - '0'; 129 odp[5]=odp[5] - '0';
143 if(odp[4]>9) odp[4]=odp[4]-7; 130 if(odp[4]>9) odp[4]=odp[4]-7;
144 if(odp[5]>9) odp[5]=odp[5]-7; 131 if(odp[5]>9) odp[5]=odp[5]-7;
145 odp[4]=odp[4] << 4; 132 odp[4]=odp[4] << 4;
146 odp[4] |= odp[5]; 133 odp[4] |= odp[5];
147 134  
148 if(odp[6]==0) odp[7]='0'; 135 if(odp[6]==0) odp[7]='0';
149 odp[6]=odp[6] - '0'; 136 odp[6]=odp[6] - '0';
150 odp[7]=odp[7] - '0'; 137 odp[7]=odp[7] - '0';
151 if(odp[6]>9) odp[6]=odp[6]-7; 138 if(odp[6]>9) odp[6]=odp[6]-7;
152 if(odp[7]>9) odp[7]=odp[7]-7; 139 if(odp[7]>9) odp[7]=odp[7]-7;
Line 154... Line 141...
154 odp[6] |= odp[7]; 141 odp[6] |= odp[7];
155   142  
156 odp[1]=odp[2]; 143 odp[1]=odp[2];
157 odp[2]=odp[4]; 144 odp[2]=odp[4];
158 odp[3]=odp[6]; 145 odp[3]=odp[6];
159 odp[4],odp[5],odp[6]=""; 146 odp[4]=odp[5]=odp[6]=0;
160 147  
161 /*lcd_gotoxy(1,2); 148 /*lcd_gotoxy(1,2);
162 printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2]odp[3]); */ 149 printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2]odp[3]); */
163 150  
164 pom3=0; 151 pom3=0;
165 for (pom = 0; pom < 4;pom++) 152 for (pom = 0; pom < 4;pom++)
166 { 153 {
167 maskovadlo = maskovadlo >> 1; //rotace promene urcene pro maskovani 154 maskovadlo = maskovadlo >> 1; //rotace promene urcene pro maskovani
168 maskovadlo = maskovadlo | 0x80; 155 maskovadlo = maskovadlo | 0x80;
169 odkl = odp[pom] & maskovadlo; //odlozeni "prenosu" do odkl pomoci maskovadla 156 odkl = odp[pom] & maskovadlo; //odlozeni "prenosu" do odkl pomoci maskovadla
170 odp[pom] = odp[pom] << pom3; //rotace znaku 157 odp[pom] = odp[pom] << pom3; //rotace znaku
171 for (pom2 = 0; pom2 < (8-pom3);pom2++) //rotace odkl2 158 for (pom2 = 0; pom2 < (8-pom3);pom2++) //rotace odkl2
172 { 159 {
173 odkl2 = odkl2 >> 1; 160 odkl2 = odkl2 >> 1;
174 odkl2 = odkl2 & 127; 161 odkl2 = odkl2 & 127;
175 } 162 }
176 odp[pom] = odp[pom] | odkl2; //pridani odkl2 ke znaku 163 odp[pom] = odp[pom] | odkl2; //pridani odkl2 ke znaku
177 odp[pom] = odp[pom] & 127; //smazani nejvysiho bitu 164 odp[pom] = odp[pom] & 127; //smazani nejvysiho bitu
178 odkl2 = odkl; //ulozeni odlk na dalsi pruchod 165 odkl2 = odkl; //ulozeni odlk na dalsi pruchod
179 pom3++; //inkrementace citace rotace 166 pom3++; //inkrementace citace rotace
Line 182... Line 169...
182 pom3 = 0; //smaz citac 169 pom3 = 0; //smaz citac
183 odp[pom+1] = odkl2; //uloz 8my znak vznikly z "prenosu" 170 odp[pom+1] = odkl2; //uloz 8my znak vznikly z "prenosu"
184 maskovadlo = 0; //smaz maskovadlo 171 maskovadlo = 0; //smaz maskovadlo
185 } 172 }
186 } 173 }
187 odp[pom]='\0'; 174 odp[pom]='\0';
188 175  
189 /*lcd_gotoxy(1,3); 176 /*lcd_gotoxy(1,3);
190 printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2],odp[3]); */ 177 printf(lcd_putc,"%u %u %u %u",odp[0],odp[1],odp[2],odp[3]); */
191 lcd_init(); 178 lcd_init();
192 lcd_gotoxy(1,1); 179 lcd_gotoxy(1,1);
193 printf(lcd_putc,"\fPrijata SMS s textem",); 180 printf(lcd_putc,"\fPrijata SMS s textem");
194 lcd_gotoxy(9,3); 181 lcd_gotoxy(9,3);
195 printf(lcd_putc,"%s",odp); 182 printf(lcd_putc,"%s",odp);
196 output_low(PIN_A4) ; 183 output_low(PIN_A4) ;
197 delay_ms(1000); 184 delay_ms(1000);
198 output_high(PIN_A4); 185 output_high(PIN_A4);
199   186  
200 //!!! fprintf(MOBIL,"AT+CMGD=1\r"); //smaz prijatou SMSku 187 //!!! fprintf(MOBIL,"AT+CMGD=1\r"); //smaz prijatou SMSku
201 188  
202 if (odp[0] > 64 && odp[0] < 91 ) 189 if (odp[0] > 64 && odp[0] < 91 )
203 { 190 {
204 odp[0] += 32; 191 odp[0] += 32;
205 } 192 }
206 193  
207 if (odp[1] > 64 && odp[1] < 91 ) 194 if (odp[1] > 64 && odp[1] < 91 )
208 { 195 {
209 odp[1] += 32; 196 odp[1] += 32;
210 } 197 }
211 198  
212 if (odp[2] > 64 && odp[2] < 91 ) 199 if (odp[2] > 64 && odp[2] < 91 )
213 { 200 {
214 odp[2] += 32; 201 odp[2] += 32;
215 } 202 }
216 203  
217 if (odp[3] > 64 && odp[3] < 91 ) 204 if (odp[3] > 64 && odp[3] < 91 )
218 { 205 {
219 odp[3] += 32; 206 odp[3] += 32;
220 } 207 }
221 208  
222 lcd_gotoxy(1,1); 209 lcd_gotoxy(1,1);
223 printf(lcd_putc,"\f Odstraneni velkych",); 210 printf(lcd_putc,"\f Odstraneni velkych");
224 lcd_gotoxy(1,2); 211 lcd_gotoxy(1,2);
225 printf(lcd_putc," pismen"); 212 printf(lcd_putc," pismen");
226 lcd_gotoxy(9,4); 213 lcd_gotoxy(9,4);
227 printf(lcd_putc,"%s",odp); 214 printf(lcd_putc,"%s",odp);
228 output_low(PIN_A4) ; 215 output_low(PIN_A4) ;
229 delay_ms(1000); 216 delay_ms(1000);
230 output_high(PIN_A4); 217 output_high(PIN_A4);
231 218  
232   219  
233 //!!!KAKL 220 //!!!KAKL
234 fprintf(VRTULE,"%s",odp); 221 fprintf(VRTULE,"%s",odp);
235   222  
236   223  
237 if (odp[0] == 122 && odp[1] == 97 && odp[2] == 112 && odp[3] == 49) //odp=="zap1" 224 if (odp[0] == 122 && odp[1] == 97 && odp[2] == 112 && odp[3] == 49) //odp=="zap1"
238 { 225 {
239 status=1; 226 status=1;
240 } 227 }
241 228  
242 if (odp[0] == 118 && odp[1] == 121 && odp[2] == 112 && odp[3]== 49) //odp=="vyp1" 229 if (odp[0] == 118 && odp[1] == 121 && odp[2] == 112 && odp[3]== 49) //odp=="vyp1"
243 { 230 {
244 status=2; 231 status=2;
245 } 232 }
246 233  
247 if (odp[0] == 97 && odp[1] == 104 && odp[2] == 111 && odp[3]== 106) //odp=="ahoj" 234 if (odp[0] == 97 && odp[1] == 104 && odp[2] == 111 && odp[3]== 106) //odp=="ahoj"
248 { 235 {
249 status=3; 236 status=3;
250 } 237 }
251 238  
252 switch (status) 239 switch (status)
253 { 240 {
254   241  
255 case 1: output_low(zar1); 242 case 1: output_low(zar1);
256 printf(lcd_putc,"\f"); 243 printf(lcd_putc,"\f");
257 lcd_gotoxy(1,2); 244 lcd_gotoxy(1,2);
Line 261... Line 248...
261 case 2: output_high(zar1); 248 case 2: output_high(zar1);
262 printf(lcd_putc,"\f"); 249 printf(lcd_putc,"\f");
263 lcd_gotoxy(1,2); 250 lcd_gotoxy(1,2);
264 printf(lcd_putc," Vypnuto zarizeni 1"); 251 printf(lcd_putc," Vypnuto zarizeni 1");
265 break; 252 break;
266 253  
267 case 3: printf(lcd_putc,"\f"); 254 case 3: printf(lcd_putc,"\f");
268 lcd_gotoxy(1,2); 255 lcd_gotoxy(1,2);
269 printf(lcd_putc," Preji hezky den!"); 256 printf(lcd_putc," Preji hezky den!");
270 break; 257 break;
271 258  
272 default: printf(lcd_putc,"\f"); 259 default: printf(lcd_putc,"\f");
273 lcd_gotoxy(1,2); 260 lcd_gotoxy(1,2);
274 printf(lcd_putc," Prikaz nebyl"); 261 printf(lcd_putc," Prikaz nebyl");
275 lcd_gotoxy(1,3); 262 lcd_gotoxy(1,3);
276 printf(lcd_putc," rozeznan"); 263 printf(lcd_putc," rozeznan");
277 break; 264 break;
278 } 265 }
279 delay_ms(1000); 266 delay_ms(1000);
280 } 267 }
281   268  
282 } 269 }