控制GPIO的代码

[复制链接]
1012|13
 楼主| dengdc 发表于 2014-9-19 12:15 | 显示全部楼层 |阅读模式
我写了个控制GPIO的代码,就是控制灯闪烁,可是调用子程序后就回不来了
heweibig 发表于 2014-9-19 12:15 | 显示全部楼层
怎么回事?
 楼主| dengdc 发表于 2014-9-19 12:16 | 显示全部楼层
PC指针跳到空白段去了
 楼主| dengdc 发表于 2014-9-19 12:16 | 显示全部楼层
PC指针的当前值显示为0
zhenykun 发表于 2014-9-19 12:17 | 显示全部楼层
程序看看
 楼主| dengdc 发表于 2014-9-19 12:17 | 显示全部楼层
.title  "gpio.asm"
             .mmregs   
             .def  CodeStart
.stack    .usect  ".stack",100h
IODIR    .set  3400h                ;IODIR的地址为0x3400
IODATA .set  3401h                ;IODATA的地址为0x3401
   
            .text
CodeStart:

             MOV    #0ffh,port(#IODIR)        ;将gpio配置为输出
LOOP0:  MOV    #000h,port(#IODATA)    ;gpio输出全0,灯亮
             CALL   DELAY1                         ;延时
             MOV    #0FFh,port(#IODATA)    ;gpio输出全1,灯灭
             CALL   DELAY1                         ;延时
             B        LOOP0                           ;跳转到LOOP0
DELAY1:
             MOV    #999,AR0                     
             MOV    #499,AR1
LOOP1:  BANZ   LOOP1,*AR1-                 ;如果AR1不等于0,跳转到LOOP1
LOOP2:  BANZ   LOOP2,*AR0-                 ;如果AR0不等于0,跳转到LOOP2
             RET                                         ;执行完这条后就跳转到空白段了
             .end
jiaxw 发表于 2014-9-19 12:19 | 显示全部楼层
看这段程序,好像没问题啊,是不是还有其他的配置没有配,导致程序跑飞了呢
 楼主| dengdc 发表于 2014-9-19 12:19 | 显示全部楼层
这是.cmd文件里的,不知道有没有问题
MEMORY
{
    PAGE 0:

        MMR        : origin = 0000000h, length = 00000c0h
        SPRAM     : origin = 00000c0h, length = 0000040h
        VECS       : origin = 0000100h, length = 0000100h
        DARAM0  : origin = 0000200h, length = 0003E00h
        DARAM1  : origin = 0004000h, length = 0004000h
        DARAM2  : origin = 0008000h, length = 0004000h
        DARAM3  : origin = 000c000h, length = 0004000h

        SARAM0  : origin = 0010000h, length = 0004000h
        SARAM1  : origin = 0014000h, length = 0005000h
        SARAM2  : origin = 0019000h, length = 0003000h
        SARAM3  : origin = 001c000h, length = 0004000h
        SARAM4  : origin = 0020000h, length = 0004000h
        SARAM5  : origin = 0024000h, length = 0004000h
        SARAM6  : origin = 0028000h, length = 0004000h
        SARAM7  : origin = 002c000h, length = 0004000h
        SARAM8  : origin = 0030000h, length = 0004000h
        SARAM9  : origin = 0034000h, length = 0004000h
        SARAM10 : origin = 0038000h, length = 0004000h
        SARAM11 : origin = 003c000h, length = 0004000h
        SARAM12 : origin = 0040000h, length = 0004000h
        SARAM13 : origin = 0044000h, length = 0004000h
        SARAM14 : origin = 0048000h, length = 0004000h
        SARAM15 : origin = 004c000h, length = 0004000h

        CE0     : origin = 0050000h, length = 03b0000h
        CE1     : origin = 0400000h, length = 0400000h
        CE2     : origin = 0800000h, length = 0400000h
        CE3     : origin = 0c00000h, length = 03f8000h

        PDROM   : origin = 0ff8000h, length = 07f00h
   /*   VECS    : origin = 0ffff00h, length = 00100h */ /* reset vector */
}      


SECTIONS
{
        vectors  : {} > VECS   PAGE 0         /* interrupt vector table */
        .cinit      : {} > SARAM0 PAGE 0
        .text      : {} > SARAM1 PAGE 0
        isrs        : {} > SARAM2 PAGE 0

        .stack       : {} > DARAM0 PAGE 0
        .sysstack  : {} > DARAM0 PAGE 0
        .sysmem   : {} > DARAM1 PAGE 0
        .data        : {} > DARAM1 PAGE 0
        .bss          : {} > DARAM1 PAGE 0
        .const       : {} > DARAM1 PAGE 0

        .cio     : {} > DARAM1 PAGE 0
        .csldata:  {} > DARAM0 PAGE 0
  

}
spark周 发表于 2014-9-19 12:21 | 显示全部楼层
CMD文件的问题?
 楼主| dengdc 发表于 2014-9-19 12:21 | 显示全部楼层
检查说是,越界了,不知道怎么改
liliang9554 发表于 2014-9-19 12:23 | 显示全部楼层
开始处把堆栈设置好
wyjie 发表于 2014-9-19 12:23 | 显示全部楼层
楼上正解
 楼主| dengdc 发表于 2014-9-19 12:24 | 显示全部楼层
OK ,搞定
 楼主| dengdc 发表于 2014-9-19 12:25 | 显示全部楼层
多谢几位了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

892

主题

13885

帖子

7

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