в основной программе вызывается функция Bin2BCD16(), и компилятор выдает ошибки syntax erroк к примеру на строчку asm("swapf _ValLo,w,0");
В чем ошибка, или может у кого есть функция перевода двухбайтного значения в двоично-десятичное, желательно с небольшим верменем исполнения (этот исходник конвертит 0xffff в 65535 меньше чем за 200 циклов CPU)
переманные объявлены след. образом: near unsigned char ValLo, ValHi, TenK, Thou, Hund, Tens, Ones; <code> //////////////////////////////////////////////////////////////////////// // Binary-to-BCD. Written by John Payson. // Take number in AARGB0:AARGB1; Result decimal in TenK:Thou:Hund:Tens:Ones /////////////////////////////////////////////////////////////////////// void Bin2BCD16() { //TenK ds 1 ;яЁхфёЄртыхэшх 1-Єш сшЄ-юую ўшёыр т ЇюЁьрЄх 2.5 //Thou ds 1 ;срщЄ фтюшўэю-фхё Єшўэюую //Hund ds 1 //Tens ds 1 //Ones ds 1
asm("swapf _ValLo,w,0"); asm("iorlw 0xf0"); asm("movwf _Thou,0"); asm("addwf _Thou,f,0"); asm("addlw 0xE2"); asm("movwf _Hund,0"); asm("addlw 0x32"); asm("movwf _Ones,0");
asm("movf _ValLo,w,0"); asm("andlw 0x0F"); asm("addwf _Hund,f,0"); asm("addwf _Hund,f,0"); asm("addwf _Ones,f,0"); asm("addlw 0xE9"); asm("movwf _Tens,0"); asm("addwf _Tens,f,0"); asm("addwf _Tens,f,0");
asm("swapf _ValHi,w,0"); asm("andlw 0x0F"); asm("addwf _Tens,f,0"); asm("addwf _Ones,f,0");
asm("rlncf _Tens,f,0"); asm("rlncf _Ones,f,0"); asm("comf _Ones,f,0"); asm("rlncf _Ones,f,0");
asm("movf _ValHi,w,0"); asm("andlw 0x0F"); asm("addwf _Ones,f,0"); asm("rlncf _Thou,f,0");
asm("movlw 0x07"); asm("movwf _TenK,0");
//; At this point, the original number is equal TenK*10000+Thou*1000+Hund*100+Tens*10+Ones //;if those entities are regarded as two's compliment binary. To be precise, all of //;them are negative except TenK. Now thenumber needs to be normal- ized, but this //;can all be done with simple byte ; arithmetic. asm("movlw 0x0A"); //; Ten //Lb1: asm("_Lb1: "); asm("addwf _Ones,f,0"); asm("decf _Tens,f,0"); asm("btfss status,c"); asm("goto _Lb1"); //Lb2: asm("_Lb2: "); asm("addwf _Tens,f,0"); asm("decf _Hund,f,0"); asm("btfss status,c"); asm("goto _Lb2"); //Lb3: asm("_Lb3: "); asm("addwf _Hund,f,0"); asm("decf _Thou,f,0"); asm("btfss status,c"); asm("goto _Lb3"); //Lb4: asm("_Lb4: "); asm("addwf _Thou,f,0"); asm("decf _TenK,f,0"); asm("btfss status,c"); asm("goto _Lb4"); // asm("retlw 0"); }
</code>
|