[STM8] stm8s汇编编译出错

[复制链接]
2121|7
 楼主| lwag 发表于 2015-9-6 14:07 | 显示全部楼层 |阅读模式
如下:Error 56: unrecognised opcode '#include "mapping.inc"'


程序如下:
stm8/

#include "mapping.inc"

PB_ODR EQU $5005
PB_IDR EQU $5006
PB_DDR EQU $5007
PB_CR1 EQU $5008
PB_CR2 EQU $5009

stack_start.w EQU $stack_segment_start
stack_end.w   EQU $stack_segment_end

segment 'rom'
main.l
ldw X, #stack_end
ldw SP, X

ld A, #$20
ld PB_DDR, A        ;Set to Output
ld A, #$20
ld PB_CR1, A        ;Set to PushPull
ld A, #$00
ld PB_CR2, A        ;2MHz

main_loop.l
ld A, #$20
ld PB_ODR, A        ;PB.5 set to 1
ld A, #100
call delay_ms
ld A, #$00
ld PB_ODR, A        ;PB.5 set to 0
ld A, #100
call delay_ms
jra main_loop

delay_ms.l
push A
ld A, #250
delay_ms_1.l
nop
nop
nop
nop
nop
dec a
jrne delay_ms_1
pop a
dec a
jrne delay_ms
ret

interrupt NonHandledInterrupt
NonHandledInterrupt.l
iret

segment 'vectit'
dc.l {$82000000+main}                                                                        ; reset
dc.l {$82000000+NonHandledInterrupt}        ; trap
dc.l {$82000000+NonHandledInterrupt}        ; irq0
dc.l {$82000000+NonHandledInterrupt}        ; irq1
dc.l {$82000000+NonHandledInterrupt}        ; irq2
dc.l {$82000000+NonHandledInterrupt}        ; irq3
dc.l {$82000000+NonHandledInterrupt}        ; irq4
dc.l {$82000000+NonHandledInterrupt}        ; irq5
dc.l {$82000000+NonHandledInterrupt}        ; irq6
dc.l {$82000000+NonHandledInterrupt}        ; irq7
dc.l {$82000000+NonHandledInterrupt}        ; irq8
dc.l {$82000000+NonHandledInterrupt}        ; irq9
dc.l {$82000000+NonHandledInterrupt}        ; irq10
dc.l {$82000000+NonHandledInterrupt}        ; irq11
dc.l {$82000000+NonHandledInterrupt}        ; irq12
dc.l {$82000000+NonHandledInterrupt}        ; irq13
dc.l {$82000000+NonHandledInterrupt}        ; irq14
dc.l {$82000000+NonHandledInterrupt}        ; irq15
dc.l {$82000000+NonHandledInterrupt}        ; irq16
dc.l {$82000000+NonHandledInterrupt}        ; irq17
dc.l {$82000000+NonHandledInterrupt}        ; irq18
dc.l {$82000000+NonHandledInterrupt}        ; irq19
dc.l {$82000000+NonHandledInterrupt}        ; irq20
dc.l {$82000000+NonHandledInterrupt}        ; irq21
dc.l {$82000000+NonHandledInterrupt}        ; irq22
dc.l {$82000000+NonHandledInterrupt}        ; irq23
dc.l {$82000000+NonHandledInterrupt}        ; irq24
dc.l {$82000000+NonHandledInterrupt}        ; irq25
dc.l {$82000000+NonHandledInterrupt}        ; irq26
dc.l {$82000000+NonHandledInterrupt}        ; irq27
dc.l {$82000000+NonHandledInterrupt}        ; irq28
dc.l {$82000000+NonHandledInterrupt}        ; irq29
end


大家帮忙看看?万分感谢。
 楼主| lwag 发表于 2015-9-6 14:10 | 显示全部楼层
补充一下,用的是ST官方的汇编编译器
bobo5650 发表于 2015-9-6 14:42 | 显示全部楼层
#号不要顶最左边写
 楼主| lwag 发表于 2015-9-6 15:04 | 显示全部楼层
我把#include前加Tab,指令前加Tab,标号顶格写,程序如下:
stm8s/

        #include "mapping.inc"

PB_ODR EQU $5005
PB_IDR EQU $5006
PB_DDR EQU $5007
PB_CR1 EQU $5008
PB_CR2 EQU $5009

stack_start.w EQU $stack_segment_start
stack_end.w   EQU $stack_segment_end

        segment 'rom'
main.l
        LDW X, #stack_end
        LDW SP, X

        ld A, #$20
        ld PB_DDR, A        ;Set to Output
        ld A, #$20
        ld PB_CR1, A        ;Set to PushPull
        ld A, #$00
        ld PB_CR2, A        ;2MHz

main_loop.l
        ld A, #$20
        ld PB_ODR, A        ;PB.5 set to 1
        ld A, #100
        call delay_ms
        ld A, #$00
        ld PB_ODR, A        ;PB.5 set to 0
        ld A, #100
        call delay_ms
        jra main_loop

delay_ms.l
        push A
        ld A, #250
        delay_ms_1.l
        nop
        nop
        nop
        nop
        nop
        dec a
        jrne delay_ms_1
        pop a
        dec a
        jrne delay_ms
        ret

        interrupt NonHandledInterrupt
NonHandledInterrupt.l
        iret

        segment 'vectit'
        dc.l {$82000000+main}                                                                        ; reset
        dc.l {$82000000+NonHandledInterrupt}        ; trap
        dc.l {$82000000+NonHandledInterrupt}        ; irq0
        dc.l {$82000000+NonHandledInterrupt}        ; irq1
        dc.l {$82000000+NonHandledInterrupt}        ; irq2
        dc.l {$82000000+NonHandledInterrupt}        ; irq3
        dc.l {$82000000+NonHandledInterrupt}        ; irq4
        dc.l {$82000000+NonHandledInterrupt}        ; irq5
        dc.l {$82000000+NonHandledInterrupt}        ; irq6
        dc.l {$82000000+NonHandledInterrupt}        ; irq7
        dc.l {$82000000+NonHandledInterrupt}        ; irq8
        dc.l {$82000000+NonHandledInterrupt}        ; irq9
        dc.l {$82000000+NonHandledInterrupt}        ; irq10
        dc.l {$82000000+NonHandledInterrupt}        ; irq11
        dc.l {$82000000+NonHandledInterrupt}        ; irq12
        dc.l {$82000000+NonHandledInterrupt}        ; irq13
        dc.l {$82000000+NonHandledInterrupt}        ; irq14
        dc.l {$82000000+NonHandledInterrupt}        ; irq15
        dc.l {$82000000+NonHandledInterrupt}        ; irq16
        dc.l {$82000000+NonHandledInterrupt}        ; irq17
        dc.l {$82000000+NonHandledInterrupt}        ; irq18
        dc.l {$82000000+NonHandledInterrupt}        ; irq19
        dc.l {$82000000+NonHandledInterrupt}        ; irq20
        dc.l {$82000000+NonHandledInterrupt}        ; irq21
        dc.l {$82000000+NonHandledInterrupt}        ; irq22
        dc.l {$82000000+NonHandledInterrupt}        ; irq23
        dc.l {$82000000+NonHandledInterrupt}        ; irq24
        dc.l {$82000000+NonHandledInterrupt}        ; irq25
        dc.l {$82000000+NonHandledInterrupt}        ; irq26
        dc.l {$82000000+NonHandledInterrupt}        ; irq27
        dc.l {$82000000+NonHandledInterrupt}        ; irq28
        dc.l {$82000000+NonHandledInterrupt}        ; irq29
        end
这次汇编报错:
The command: "asm -sym -li=Debug\main.lsr main.asm -I="C:\Program Files\STMicroelectronics\st_toolset\asm\include"  -obj=Debug\main.obj -I="C:\Program Files\STMicroelectronics\st_toolset\stvd"" has failed, the returned value is: 2
exit code=2.

a1.s19 - 1 error(s), 0 warning(s)
bobo5650 发表于 2015-9-6 15:32 | 显示全部楼层
STMicroelectronics\st_toolset\asm\include下没有mapping.inc
要在工程设置里添加额外的include路径
 楼主| lwag 发表于 2015-9-6 16:03 | 显示全部楼层
本帖最后由 lwag 于 2015-9-6 16:11 编辑

怎么设置呢?还请帮一下忙。
amanda_s 发表于 2015-9-7 10:51 | 显示全部楼层
看这提示内容,是不认识操作符。
楼主换个编译环境试试看。
或者去掉前面的”#“号,用INCLUDE xxx.inc试试看
 楼主| lwag 发表于 2015-9-8 09:18 | 显示全部楼层
现在又出现提示错误:

----------- Project a0 - ST Assembler Linker - Configuration Debug -------------

Assembling main.asm...
asm -sym -li=Debug\main.lsr main.asm -I="C:\Program Files\STMicroelectronics\st_toolset\asm\include"  -obj=Debug\main.obj -I=..\include

STMicroelectronics assembler v4.52

      No errors on assembly of 'c:\program files\stmicroelectronics\st_toolset\asm\a_1\main.asm'

Running ST linker
lyn Debug\mapping.obj+Debug\stm8s103f.obj+Debug\main.obj, Debug\a0.cod, " "

STMicroelectronics - Linker - rel 3.19

        200K namespace for approx 8150 publics
**        No Errors found on Link.

obsend Debug\a0.cod,f,Debug\a0.s19,s

STMicroelectronics - Obsend - rel 2.15


Running Post-Link step
?

Error creating process for executable ?参数错误。

Failed to create process.

a0.s19 - 1 error(s), 0 warning(s)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

163

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部