C51 COMPILER V8.08 FRACT 10/17/2013 14:06:49 PAGE 1 C51 COMPILER V8.08, COMPILATION OF MODULE FRACT OBJECT MODULE PLACED IN fract.OBJ COMPILER INVOKED BY: C:\Keil51\C51\BIN\C51.EXE fract.c BROWSE DEBUG OBJECTEXTEND line level source 1 #include 2 // #include "inter.c" 3 4 typedef unsigned int u16; 5 typedef unsigned char u8; 6 typedef unsigned long u32; 7 8 u8 fd2( u8 x){ //перевод char-целого 10.2 9 1 10 1 return (((x&0xf0)>>4)*10 + (x&0xf)); 11 1 } 12 u8 f2d(u8 x){ //перевод char-целого 2.10 13 1 return ((x/10)<<4) | (x%10) ; 14 1 } 15 16 u32 trd2() //перевод int-целого 10/2 -> 2/10 17 { u16 N; 18 1 N= fd2(P0)*100 + fd2(P1); 19 1 P2= f2d(N/100); 20 1 P3=f2d((N%100)); 21 1 return (u32)N; 22 1 } 23 u32 M; 24 u32 Z; 25 26 u8 tr2d(u16 x){ //перевод char-дробного 2/10 в формате int 27 1 u16 y=x*10; 28 1 return ((y&0xf00)>>4) |((((y&0xff)*10)&0xf00)>>8); 29 1 } 30 31 u8 i,k; 32 33 main(){ 34 1 //M=(trd2()<<16)/10000; // перевод int-дробного 10/2 в формате long m=2^16 35 1 Z=trd2(); M=(((((Z/100)<<8)+ (((Z%100))<<8)/100))<<8)/100; 36 1 /* 37 1 P2=f2d((M*100)>>16); //перевод int-дробного 2/10 в формате long 38 1 Z=(M&0xffff)*100; 39 1 P3=f2d(Z>>16); 40 1 */ 41 1 i=((M>>8)*100)>>8; 42 1 k=((((M>>8)*100)+(M&0xff))*100)>>8; 43 1 P2=f2d(i); 44 1 P3=f2d(k); 45 1 46 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 352 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 10 ---- IDATA SIZE = ---- ---- C51 COMPILER V8.08 FRACT 10/17/2013 14:06:49 PAGE 2 BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)