Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.21 KB | None | 0 0
  1. #include <built_in.h>
  2. char keypadPort at PORTD;
  3.  
  4. sbit LCD_RS at RB4_bit;
  5. sbit LCD_EN at RB5_bit;
  6. sbit LCD_D4 at RB0_bit;
  7. sbit LCD_D5 at RB1_bit;
  8. sbit LCD_D6 at RB2_bit;
  9. sbit LCD_D7 at RB3_bit;
  10. sbit LCD_RS_Direction at TRISB4_bit;
  11. sbit LCD_EN_Direction at TRISB5_bit;
  12. sbit LCD_D4_Direction at TRISB0_bit;
  13. sbit LCD_D5_Direction at TRISB1_bit;
  14. sbit LCD_D6_Direction at TRISB2_bit;
  15. sbit LCD_D7_Direction at TRISB3_bit;
  16.  
  17.  
  18. unsigned timer = 0, masa_flag = 0, masa_popust[10];
  19. char masa[10][4]; //neka ima vk 10 masi vo restoranot, toa se 4 cifri(binarno)
  20. int masa_i = 0; //masa_i broj na masa po red kako doshla
  21. int mi = 0, pom = 0; //broi char za masata
  22. //primer
  23. // bukva0 bukva1 bukva2
  24. // masa0 0 0 1
  25.  
  26.  
  27.  
  28.  
  29. void interrupt() {
  30. if (TMR0IF_bit) {
  31. for(pom = 0; pom < masa_i; pom++){ // pom < masa_i prai popust za site postoechki mas shto chekaat, masata shto momentalno se usluzuva kje se chuva vo promenliva
  32. masa_popust[masa_i]+=10; //vajda ne mora da se incijalizira int e na int default mu e 0
  33. timer++;
  34. }
  35. TMR0IF_bit = 0;
  36. TMR0 = 245;
  37.  
  38. }
  39.  
  40. if(INTF_bit){
  41. while (1) {
  42. if (UART1_Data_Ready()) {
  43. uart_rd = UART1_Read();
  44. masa[masa_i][mi] = uart_rd;
  45. mi++;
  46. }
  47. }
  48. masa_i++; //ja prochtachtavme masa idi na sledna
  49. INTF_bit = 0;
  50.  
  51. }
  52. }
  53.  
  54. char uart_rd;
  55. void main() {
  56. char restoran[6] = {'D', 'A', 'L', 'G', 'A', '\0'}, promenliva[6] = {'n','e','s','h','t','o'};
  57. //id na sekoj kelner ke mu e j
  58. /*char kelneri[5][5] = {{'I', 'g', 'o', 'r'},{'A', 'n', 'a'}}, proba[5][5] = {{'a','a','a','a'},{'a','a','a'}};*/
  59. char kelner1[] = {'1', 'I', 'g', 'o', 'r', '\0'}, kelner2[] = {'2', 'A', 'n', 'a','\0','\0'};
  60. int i=0, j=0, keypadcount = 0, flag =0;
  61. char kp, potvrdi, cifri[20] = {' ', ' ', ' '};
  62. int cnt =0;
  63.  
  64.  
  65. ANSEL = 0;
  66. ANSELH = 0;
  67. TRISB = 0x00; //B da e izlezna
  68.  
  69. C1ON_bit = 0;
  70. C2ON_bit = 0;
  71. UART1_Init(9600);
  72. Delay_ms(50);
  73.  
  74.  
  75. OPTION_REG = 0x84;
  76. ANSEL = 0;
  77. ANSELH = 0;
  78. C1ON_bit = 0;
  79. C2ON_bit = 0;
  80. //PORTB = 0xFF;
  81. TMR0 = 245;
  82. INTCON = 0xA0;
  83.  
  84.  
  85.  
  86.  
  87.  
  88. Lcd_Init();
  89. Lcd_Cmd(_LCD_CURSOR_OFF);
  90. Lcd_Cmd(_LCD_CLEAR);
  91.  
  92. Keypad_Init();
  93.  
  94.  
  95. Lcd_Out(1,1, "Nema za naplata");
  96.  
  97. if(flag){
  98.  
  99.  
  100.  
  101. }
  102.  
  103.  
  104.  
  105. //Lcd_Out(2, 1, cifri);
  106.  
  107. for(i=0; i<6; i++){
  108. EEPROM_Write(10+i, restoran[i]);
  109. //Delay_ms(10);
  110. //Lcd_Out(1,1, "");
  111. //Lcd_Out(1,1, "Prv for");
  112. }
  113.  
  114. for(i=0; i<6; i++){
  115. EEPROM_Write(15+i, kelner1[i]);
  116. //Delay_ms(10);
  117. //Lcd_Out(1,1, "Vtor for");
  118. }
  119.  
  120. for(i=0; i<6; i++){
  121. EEPROM_Write(20+i, kelner2[i]);
  122. //Delay_ms(10);
  123. //Lcd_Out(1,1, "Tret for");
  124. }
  125.  
  126. //while(1){
  127. // se resetira kodot za pritisnatiot taster
  128.  
  129. /* for(i=0; i<=15; i++){
  130. Lcd_Out(1,i," ");
  131. } */
  132.  
  133.  
  134. if(timer){
  135. masa_popust[i] = (float)timer/100;
  136. timer = 0;
  137. masa[masa_i] = '';
  138.  
  139. if(masa == ''){
  140. TMR0 = 0;
  141. }
  142. }
  143.  
  144.  
  145.  
  146.  
  147. Lcd_Out(1,1, "Naplata: ");
  148. Lcd_Out(2,1, "Bakshish: ");
  149. while(1) {
  150. kp = 0;
  151.  
  152. while(!kp){
  153.  
  154.  
  155. kp = Keypad_Key_Click();
  156.  
  157. } //se cheka da se pritisne taster
  158. //Lcd_Out(2,1, " ");
  159.  
  160. //Lcd_Out(2,1, "ok");
  161.  
  162. /*switch(kp){
  163. case 1: cifri[cnt]='1'; //break; // 1
  164. case 2: cifri[cnt]='4'; //break; // 4
  165. case 3: cifri[cnt]='7'; //break; // 7
  166. case 4: cifri[cnt]=' '; //break;//DEL (BACK)
  167. case 5: cifri[cnt]='2'; //break;// 2
  168. case 6: cifri[cnt]='5'; //break; // 5
  169. case 7: cifri[cnt]='8'; //break; // 8
  170. case 8: cifri[cnt]='0'; //break; // 0
  171. case 9: cifri[cnt]='3'; //break; // 3
  172. case 10: cifri[cnt]='6'; //break; // 6
  173. case 11: cifri[cnt]='9'; //break; // 9
  174. case 12: kp = 6; break; //Acknowledgement (OK)
  175.  
  176. }
  177.  
  178. cnt++; */
  179. if(kp == 1){
  180. cifri[cnt] = '1';
  181. Lcd_Out(1, 9, cifri);
  182. cnt++;
  183. }
  184.  
  185. if(kp == 2){
  186. cifri[cnt] = '4';
  187. Lcd_Out(1, 9, cifri);
  188. cnt++;
  189. }
  190.  
  191. if(kp == 3){
  192. cifri[cnt] = '7';
  193. Lcd_Out(1, 9, cifri);
  194. cnt++;
  195. }
  196.  
  197.  
  198. if(kp == 5){
  199. cifri[cnt] = '2';
  200. Lcd_Out(1, 9, cifri);
  201. cnt++;
  202. }
  203. if(kp == 6){
  204. cifri[cnt] = '5';
  205. Lcd_Out(1, 9, cifri);
  206. cnt++;
  207. }
  208. if(kp == 7){
  209. cifri[cnt] = '8';
  210. Lcd_Out(1, 9, cifri);
  211. cnt++;
  212. }
  213. if(kp == 8){
  214. cifri[cnt] = '0';
  215. Lcd_Out(1, 9, cifri);
  216. cnt++;
  217. }
  218. if(kp == 9){
  219. cifri[cnt] = '3';
  220. Lcd_Out(1, 9, cifri);
  221. cnt++;
  222. }
  223. if(kp == 10){
  224. cifri[cnt] = '6';
  225. Lcd_Out(1, 9, cifri);
  226. cnt++;
  227. }
  228. if(kp == 11){
  229. cifri[cnt] = '9';
  230. Lcd_Out(1, 9, cifri);
  231. cnt++;
  232. }
  233.  
  234. if(kp == 13){
  235. cifri[cnt-1] = ' ';
  236. cifri[cnt] = ' ';
  237. Lcd_Out(1, 9, cifri);
  238. cnt--;
  239. }
  240.  
  241. if(kp == 12) //stegnal ACK i na LCD da se prikaze
  242. break;
  243.  
  244. }
  245.  
  246.  
  247. for(i=0; i<sizeof(cifri); i++){
  248. cifri[i] = ' ';
  249. }
  250. cnt=0;
  251.  
  252.  
  253. while(1) {
  254. kp = 0;
  255. while(!kp){
  256. kp = Keypad_Key_Click();
  257.  
  258. }
  259. if(kp == 1){
  260. cifri[cnt] = '1';
  261. Lcd_Out(2, 10, cifri);
  262. cnt++;
  263. }
  264.  
  265. if(kp == 2){
  266. cifri[cnt] = '4';
  267. Lcd_Out(2, 10, cifri);
  268. cnt++;
  269. }
  270.  
  271. if(kp == 3){
  272. cifri[cnt] = '7';
  273. Lcd_Out(2, 10, cifri);
  274. cnt++;
  275. }
  276.  
  277.  
  278. if(kp == 5){
  279. cifri[cnt] = '2';
  280. Lcd_Out(2, 10, cifri);
  281. cnt++;
  282. }
  283. if(kp == 6){
  284. cifri[cnt] = '5';
  285. Lcd_Out(2, 10, cifri);
  286. cnt++;
  287. }
  288. if(kp == 7){
  289. cifri[cnt] = '8';
  290. Lcd_Out(2, 10, cifri);
  291. cnt++;
  292. }
  293. if(kp == 8){
  294. cifri[cnt] = '0';
  295. Lcd_Out(2, 10, cifri);
  296. cnt++;
  297. }
  298. if(kp == 9){
  299. cifri[cnt] = '3';
  300. Lcd_Out(2, 10, cifri);
  301. cnt++;
  302. }
  303. if(kp == 10){
  304. cifri[cnt] = '6';
  305. Lcd_Out(2, 10, cifri);
  306. cnt++;
  307. }
  308. if(kp == 11){
  309. cifri[cnt] = '9';
  310. Lcd_Out(2, 10, cifri);
  311. cnt++;
  312. }
  313.  
  314. if(kp == 13){
  315. cifri[cnt-1] = ' ';
  316. cifri[cnt] = ' ';
  317. Lcd_Out(2, 10, cifri);
  318. cnt--;
  319. }
  320.  
  321. if(kp == 12) //stegnal ACK i na LCD da se prikaze
  322. break;
  323.  
  324. }
  325.  
  326.  
  327. kp = 0;
  328. potvrdi = 0;
  329.  
  330. while(!kp || !potvrdi){ // posle vneseni naplata i bakshish kelnerot si vnesuva id, OK
  331. kp = Keypad_Key_Click();
  332. potvrdi = Keypad_Key_Click();
  333. }
  334.  
  335. if(kp == 1){
  336. //zapishi mu ja vo eeprom na igor
  337. }
  338.  
  339. if(kp == 2){
  340. //zapish i ja vo eeprom na ana
  341. }
  342.  
  343.  
  344.  
  345.  
  346.  
  347. /*if(kp != oldstate){ //ako pritisnatiot taster e razlichen od prethodniot
  348. keypadcount = 1;
  349. oldstate = kp;
  350. }
  351. else{
  352. keypadcount++;
  353. }*/
  354. //}
  355.  
  356. /* PROVERKA DALI E ZACHUVAN RESTORANOT VO EEPROM
  357. for(i=0; i<6; i++){
  358. promenliva[i] = EEPROM_Read(10+i);
  359. }
  360.  
  361. Lcd_Cmd(_LCD_CLEAR);
  362. Lcd_Out(1,1,promenliva);
  363. */
  364.  
  365. /* //GRESHKA VO ZAPISHUVANJE VO EEPROM
  366. //for (i=0;i <5; i++){
  367. // for (j=0; j<5;j++){
  368. // EEPROM_Write(15+i, kelneri[i][j]);
  369. // Delay_ms(10);
  370. // }
  371. // }
  372.  
  373. //for (i=0;i <5; i++){
  374. // for (j=0; j<5;j++){
  375. // proba[i][j] = EEPROM_Read(15+i);
  376. // }
  377. //}
  378.  
  379. // Lcd_Cmd(_LCD_CLEAR);
  380. // Lcd_Out(1,1,proba);
  381. */
  382. //Ako nema RB0 prekin
  383. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement