2013-08-29 1 views
1

У меня есть дело в AVR программированияСоздание функции и назвав его в основной программе

case (0xe7): keyPressed="."; 

во время этого я хочу назвать заранее определенная функция

switch (keyCode)    //generating key characetr to display on LCD 
{ 

case (0xee): keyPressed="1"; 
      b=1; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xed): keyPressed="4"; 
      b=4; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xeb): keyPressed="7"; 
      b=7; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xde): keyPressed="2"; 
      b=2; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xdd): keyPressed="5"; 
      b=5; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xdb): keyPressed="8"; 
      b=8; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xd7): keyPressed="0"; 
      b=0; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xbe): keyPressed="3"; 
      b=3; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xbd): keyPressed="6"; 
      b=6; 
      a=a*10+b; 
      i=i++; 
      break; 
case (0xbb): keyPressed="9"; 
      b=9; 
      a=a*10+b; 
      i=i++; 
      break; 
} 

Как сделать функцию ?? и назовите его во время моего дела в основной программе? Пожалуйста, наставит меня Я новичок на все это ... Помогите мне пожалуйста ..

+4

Не выполняйте 'i = i ++', его поведение не определено. –

+0

На самом деле я хочу, чтобы целое число «а» хранилось как целое число, а затем разделило его на 10^i, чтобы получить его в десятичной форме. I представляет общее количество нажатий клавиш. Пожалуйста, направляйте мне правильный путь ? –

+0

'i ++;' эквивалентно 'i = i + 1;' Joachim is right –

ответ

0

Предполагая, В вашем случае когда-либо при нажатии клавиши с АВР вы получите KEYCODE значение, например, при нажатии кнопки 1 вы получаете адрес 1 , когда вы нажмете 2, вы получите адрес 2, когда вы нажмете 3, вы получите адрес 3 и так далее, когда вы нажмете 9, вы получите адрес 9. и когда вы нажмете. вы получите адрес 10. , но в c вы не получили ввода типа this.used scanf для чтения из stdin. и повторить цикл до нажатия '.'

каждое нажатие клавиши ae удерживает нажатой клавишу и добавляет эту клавишу к последовательности нажатых клавиш и не нажимает на клавиши.

b=whichkeypressed; 
a=a*10+b; 
i++; 

если нажать 3,2,1, и. затем a = 321, b = 1, i = 3

После нажатия кнопки '.' вы вызываете predifined функцию там вы подсчитывают

c=pow(10,i); 
i=3 => c=1000 
and d=a/c; 
a=321 ,c=1000 
d=0.321 

код, который выполняет операцию, как выше:

#include<stdio.h> 
#include<math.h> 
int a,b,i; 
double c,d; 


void function() 
{ 
c= pow(10,i); 
d=a/c; 
} 


main() 
{ 

int keyCode; 
char keyPressed; 

while(1) 
{ 
printf("Enter Keycode: "); 
scanf("%d",&keyCode); 

switch (keyCode)    //generating key characetr to display on LCD 
{ 

case 1: keyPressed='1'; 
      b=1; 
      a=a*10+b; 
      i++; 
      break; 
case 4: keyPressed='4'; 
      b=4; 
      a=a*10+b; 
      i++; 
      break; 
case 7: keyPressed='7'; 
      b=7; 
      a=a*10+b; 
      i++; 
      break; 
case 2: keyPressed='2'; 
      b=2; 
      a=a*10+b; 
      i++; 
      break; 
case 5: keyPressed='5'; 
      b=5; 
      a=a*10+b; 
      i++; 
      break; 
case 8: keyPressed='8'; 
      b=8; 
      a=a*10+b; 
      i++; 
      break; 
case 0: keyPressed='0'; 
      b=0; 
      a=a*10+b; 
      i++; 
      break; 
case 3: keyPressed='3'; 
      b=3; 
      a=a*10+b; 
      i++; 
      break; 
case 6: keyPressed='6'; 
      b=6; 
      a=a*10+b; 
      i++; 
      break; 
case 9: keyPressed='9'; 
      b=9; 
      a=a*10+b; 
      i++; 
      break; 

case 10: keyPressed='.'; 
      printf("No of Times Keys Pressed are = %d\n",i); 

      function(); 
       printf("sequence of keys pressed=%d \nlast key pressed=%d\npower value of Keys=%lf\n The decimal valueof given sequence of keys=%6.10lf\n",a,b,c,d); //use c and d with the values what you required. 

           break; 

     } 

     if (keyPressed=='.') 
     break; 

     } 
getchar(); 
} 

ВЫВОД:

Enter Keycode: 1 
Enter Keycode: 2 
Enter Keycode: 3 
Enter Keycode: 4 
Enter Keycode: 5 
Enter Keycode: 6 
Enter Keycode: 7 
Enter Keycode: 8 
Enter Keycode: 9 
Enter Keycode: 10 
No of Times Keys Pressed are = 9 
sequence of keys pressed=123456789 
last key pressed=9 
power value of Keys=1000000000.000000 
The decimal valueof given sequence of keys=0.1234567890 

Для АВР вам нужно сделать некоторые требуемые изменения, по адресам случая и следующему нажатому оператору и некоторым дополнительным.

+0

извините, но я не могу получить желаемый результат:/ –

+0

@ MohitGoyal отредактировал ответ. Если мое предположение верно, вы получите то, что требуется от этого. – Gangadhar

Смежные вопросы