C51 COMPILER V9.56.0.0 CODE 04/07/2017 19:07:00 PAGE 1 C51 COMPILER V9.56.0.0, COMPILATION OF MODULE CODE OBJECT MODULE PLACED IN .\Objects\code.obj COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.exe code.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\code -.lst) TABS(2) OBJECT(.\Objects\code.obj) line level source 1 #include 2 #include 3 4 unsigned char x, y, i, w, digit, j = 0; 5 char mas[10]; 6 float numb, m = 0; 7 //char scancode[] = {0x7f,0xbf,0xff}; 8 9 Delay(int t) 10 { 11 1 while(t--); 12 1 } 13 14 char what(void); 15 16 scan() interrupt 2 17 { 18 1 w=P2; 19 1 j++; 20 1 if(j == 3) 21 1 j = 0; 22 1 P3=w; 23 1 Delay(100); 24 1 what(); 25 1 Delay(100); 26 1 } 27 28 main () 29 { 30 1 x = 0xFE; 31 1 numb = 0; 32 1 i = 0; 33 1 m = 0; 34 1 IT1 = 1; 35 1 EX1 = 1; 36 1 EA = 1; 37 1 while (digit != 'e') Delay(100); 38 1 while(1); 39 1 40 1 } 41 char what(void) 42 { 43 1 if(i == 0) // clear all 44 1 { 45 2 numb = 0; 46 2 m = 0; 47 2 } 48 1 49 1 switch (w) // check value of button 50 1 { 51 2 52 2 case 0x77: digit='9'; break; 53 2 case 0x6f: digit='8'; break; 54 2 C51 COMPILER V9.56.0.0 CODE 04/07/2017 19:07:00 PAGE 2 55 2 case 0xbd: digit='7'; break; 56 2 case 0xbb: digit='6'; break; 57 2 case 0xb7: digit='5'; break; 58 2 case 0xaf: digit='4'; break; 59 2 60 2 case 0xdd: digit='3'; break; 61 2 case 0xdb: digit='2'; break; 62 2 case 0xd7: digit='1'; break; 63 2 case 0xcf: digit='0'; break; 64 2 65 2 case 0xed: digit='e'; break; 66 2 case 0xe7: digit=','; break; 67 2 case 0xdf: digit='-'; break; 68 2 69 2 default: digit=0xff; 70 2 } 71 1 72 1 if(digit == 0xff) // exit if default 73 1 { 74 2 goto exit; 75 2 } 76 1 77 1 if(digit == ',') // if , is readed 78 1 { 79 2 m = 1; // need to divide 80 2 mas[i++] = digit; // write , to massive 81 2 goto exit; 82 2 } 83 1 84 1 if(digit == 'e') // if end 85 1 { 86 2 if(m) 87 2 { 88 3 numb = numb / m; //divide 89 3 } 90 2 i = 0; // clear all 91 2 m = 0; 92 2 goto exit; //and exit 93 2 } 94 1 else // in other cases 95 1 { 96 2 mas[i++] = digit; // write digit to massive 97 2 if (mas[i - 1] != '-') // if digit 98 2 { 99 3 100 3 numb = numb * 10 + (digit & 0xf); 101 3 if (i == 2 && mas[0] == '-') // if negative 102 3 { 103 4 numb = -numb; // negative 104 4 } 105 3 106 3 if (m) // id we divide 107 3 { 108 4 m *= 10; // numbers after 109 4 } 110 3 } 111 2 } 112 1 exit: 113 1 return digit; 114 1 } *** WARNING C290 IN LINE 12 OF code.c: missing return value C51 COMPILER V9.56.0.0 CODE 04/07/2017 19:07:00 PAGE 3 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 500 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 24 ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)