不知道为什么?程序经过一个乘法( k =((int)tmp)*k;)之后,结果就变为0了?是什么原因呢? 压缩文件是KEIL C51工程文件。
void LCDLineXy(signed char x1,signed char y1,signed char x2,signed char y2) { signed char data bi,s,i,step,f,tmp; volatile int data k; if(cabs(x2-x1)>=cabs(y2-y1)) { bi=x2-x1; s=y2-y1; f=1; } else { bi=y2-y1; s=x2-x1; i=x1; x1=y1; y1=i; f=0; } k= s*256/bi ; step=bi<0?-1:1; for(i=x1;i!=bi-step;i+=step) { tmp=i-x1; k =((int)tmp)*k; //不知道为什么?在这里,运行K后,k总是为0? Print(k); //Print(tmp); if(*((uchar data *)(&k)+1) & 0x80 ) { *((uchar data *)(&k))+=1; } if(f) { LCDPixel(i,*((uchar data *)(&k))+y1,1); } else { LCDPixel(*((uchar data *)(&k))+y1,i,1); } } k=k*1; }
相关链接:https://bbs.21ic.com/upfiles/img/20079/2007928124639962.rar |