我在将微芯片pic的汇编代码转换为C语言时遇到问题 这是两部分 第一部分是
movlw HIGH RevTable ; get MS byte of table
,表格是
RevTable
retlw B’00000000’ ; invalid
retlw B’00100001’ ; phase /6
retlw B’00000110’ ; phase /4
retlw B’00100100’ ; phase /5
retlw B’00011000’ ; phase /2
retlw B’00001001’ ; phase /1
retlw B’00010010’ ; phase /3
retlw B’00000000’ ; invalid
那是什么意思?我无法理解
第二个问题是
incfsz ADC,w ; if ADC is 0xFF we’re at full speed - skip timer add
如何在C中 非常感谢
答案 0 :(得分:4)
您的代码示例不足,所以我无法告诉您所有关于:
movlw HIGH RevTable ; get MS byte of table
这只是计算表跳转的一部分。 您的asm代码必须类似于:
movlw HIGH RevTable
movwf PCLATH ;set high byte RevTable address
movf TableIndex, w
movwf PCL ;set low byte RevTable address this is computed table jump
;The return value is in wreg so one from RevTable table depend of TableIndex value
类似于:
char RevTable[] = {'0','6','4','5','2','1','3','0'};
char TableIndex = 1;
char ValueFromTable;
ValueFromTable = RevTable[TableIndex] ;
代码的第二部分:
incfsz ADC,w ; if ADC is 0xFF we’re at full speed - skip timer add
这里缺少第二个asm指令,它执行或不依赖于ADC值,如:
if (ADC != 255) ...