skate6526 发表于 2011-4-11 10:42:07

请教老师在线编程的问题,c中插入汇编语句

模拟波特率,发送data数组的数据,延时什么的都没算,只是看看有波形没有结果编译就有个错。
后面把编译结果也发出来,请高手们看看问题在哪里?语法我按照GCC手册上写的,不知道对不对,谢谢了
void   shortdelay()
{   int i,j,k;
          

        asm("L2_%=:"    "ldi %0,$10"         :"=r"(j):);
                               
        asm("LP_%=:"          "dec %0"             :"=r"(j):"0"(i));
        asm("                      ldi %0,$08"          :"=r"(i):);
                               
        asm("L1_%=:"   "ANDl _data+%0,$01"   :"=r"(i):);
                               
        asm("             IF   _data+%0"            :"=r"(i):);
                               
        asm( "             sbi(PORTD,PD2)"   :"=r"(i):);
        asm( "                     LCALL delay_%=");
        asm( "             ELSE");
                               
        asm( "                           cbi(PORTD,PD2)"   :"=r"(i):);
        asm( "             LCALL delay_%=");
        asm( "   ENDIF");
                                                  
        asm(                   "ror _data+%0"      :"=r"(i):"0"(i));
                               
        asm(                   "DJNZ %0,L1_%="          :"=r"(i):"0"(i));                  
                               
        asm(                   "DJNZ %0,LP_%="       :"=r"(j):"0"(j));
                               
        asm( "delay_%=:"          "ldi          %0, $10"    :"=r"(k):);
        asm( "L3_%=:"              "djnz          %0, L3_%=":"=r"(k):);
        asm(                   "ret");
}

编译结果:

Build started 11.4.2011 at 10:01:55
avr-gcc-mmcu=atmega1281 -Wall -gdwarf-2   -DF_CPU=8000000UL -O0 -fsigned-char -MD -MP -MT ok4.o -MF dep/ok4.o.d-c../ok4.c
In file included from ../ok4.c:4:
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
../ok4.c:49: warning: large integer implicitly truncated to unsigned type
../ok4.c:57: warning: excess elements in array initializer
../ok4.c:57: warning: (near initialization for 'table')
../ok4.c: In function 'Write_256byte':
../ok4.c:386: warning: unused variable 'j'
../ok4.c: In function 'Read_256byte':
../ok4.c:442: warning: control reaches end of non-void function
../ok4.c: In function 'Command_data_check':
../ok4.c:476: warning: implicit declaration of function 'Resend'
../ok4.c:450: warning: unused variable 'b'
../ok4.c:450: warning: unused variable 'a'
../ok4.c: In function 'Receive_command_check':
../ok4.c:493: warning: implicit declaration of function 'IOreceive'
../ok4.c:490: warning: unused variable 'j'
../ok4.c: In function 'IOsend':
../ok4.c:642: warning: unused variable 'j'
../ok4.c:642: warning: unused variable 'i'
../ok4.c: In function 'IOsend_256byte':
../ok4.c:739: warning: implicit declaration of function 'WaitTime0'
../ok4.c: At top level:
../ok4.c:775: warning: conflicting types for 'IOreceive'
../ok4.c:493: warning: previous implicit declaration of 'IOreceive' was here
../ok4.c: In function 'IOreceive':
../ok4.c:813: warning: 'return' with a value, in function returning void
../ok4.c: At top level:
../ok4.c:816: warning: conflicting types for 'WaitTime0'
../ok4.c:739: warning: previous implicit declaration of 'WaitTime0' was here
../ok4.c:823: warning: conflicting types for 'Resend'
../ok4.c:476: warning: previous implicit declaration of 'Resend' was here
../ok4.c: In function 'SYNCH_COMMAND':
../ok4.c:1078: warning: unused variable 't'
../ok4.c: In function 'WRITE_COMMAND':
../ok4.c:1115: warning: unused variable 't'
../ok4.c: In function 'DOWNLOAD_COMMAND':
../ok4.c:1153: warning: unused variable 't'
../ok4.c:1343:1: warning: "/*" within comment
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s: Assembler messages:
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8818: Error: junk at end of line, first unrecognized character is `1'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8836: Error: junk at end of line, first unrecognized character is `0'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8844: Error: unknown opcode `andl'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8844: Error: junk at end of line, first unrecognized character is `0'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8852: Error: unknown opcode `if'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8860: Error: missing ')'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8860: Error: constant value required
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8860: Error: constant value required
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8860: Error: garbage at end of line
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8868: Error: unknown opcode `lcall'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8872: Error: unknown opcode `else'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8876: Error: missing ')'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8876: Error: constant value required
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8876: Error: constant value required
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8876: Error: garbage at end of line
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8884: Error: unknown opcode `lcall'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8888: Error: unknown opcode `endif'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8896: Error: constant value required
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8906: Error: unknown opcode `djnz'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8916: Error: unknown opcode `djnz'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8924: Error: junk at end of line, first unrecognized character is `1'
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccDTC03L.s:8932: Error: unknown opcode `djnz'
make: *** Error 1
Build failed with 1 errors and 25 warnings...
页: [1]
查看完整版本: 请教老师在线编程的问题,c中插入汇编语句