邃梦 2021-07-04 11:34 采纳率: 0%
浏览 49

合泰单片机,堆栈溢出

单不进入中断子程序时显示堆栈溢出。

但是直接运行是没有显示溢出,但是也好像进去不了中断程序。因为用的是定时器,感觉好像定时器没发挥作用。

include HT66F0185.inc

 

ds .section 'data'

 

 

 

cs .section at 000h 'code'

MY_DATA .SECTION 'DATA'

DEL1 DB ?

DEL2 DB ?

DEL3 DB ?

DEL4 DB ?

DEL5 DB ?

DEL6 DB ?

 STACK_A DB ?

 STACK_STATUS DB ?

DIGIT DB 2 DUP (?)

SCAN DB ?

SCAN1 DB ?

COUNT DB ?

COUNT1 DB ?

SEG_PORT EQU PC

SEG_PORTC EQU PCC

SCAN_PORT EQU PB

SCAN_PORTC EQU PBC

SCAN1_PORT EQU PD

SCAN1_PORTC EQU PDC

MY_CODE .SECTION AT 0 'CODE'

        ORG 00H

        JMP INIT

        ORG 14H

        MOV A,10101000B

        MOV WDTC,A

        JMP ISR_STM

INIT:

      CLR SCAN_PORTC

      CLR SCAN1_PORTC

          MOV A,10101000B

        MOV WDTC,A

        MOV A,00000000B

        MOV TM2C0,A

        MOV A,11000001B

        MOV TM2C1,A

        MOV A,LOW 1000

        MOV TM2AL,A

        MOV A,HIGH 1000

        MOV TM2AH,A

       

        SET MF0E

        SET T2AE

         SET EMI

         ;SET T2ON 

        MOV A,00010000B

      MOV SCAN,A

     MOV SCAN_PORT,A

       CLR SEG_PORTC  

      

 

        MOV A,OFFSET TAB_7_SEG

        MOV TBLP,A

        MOV A,10

        MOV COUNT,A

        MOV COUNT1,A

RE_START:

        CLR DIGIT[0]

        CLR DIGIT[1]

        

LOOP:

        SET T2ON

        MOV A,OFFSET TAB_7_SEG

        MOV TBLP,A

        MOV A,DIGIT[0]

        ADDM A,TBLP

        TABRDL SEG_PORT

        MOV A,00010000B

        MOV SCAN,A

        MOV SCAN_PORT,A

        MOV A,1

        CALL DELAY1

       CLR SCAN_PORT

        

LOOP1:  

        MOV A,OFFSET TAB_7_SEG

        MOV TBLP,A

        MOV A,DIGIT[1]

        ADDM A,TBLP

        TABRDL SEG_PORT

        MOV A,00000001B

        MOV SCAN1,A

        MOV SCAN1_PORT,A 

        MOV A,1

        CALL DELAY1 

        CLR SCAN1_PORT 

        JMP LOOP

 

ISR_STM:

      MOV STACK_A,A

      MOV A,STATUS

      MO

 MOV STACK_STATUS,A  

      INC DIGIT[0]

    

        SDZ COUNT1

        JMP $+9

        MOV A,10

        MOV COUNT1,A

        CLR DIGIT[0]

        INC DIGIT[1]

        SDZ COUNT 

        JMP $+3  

            MOV A,10

        MOV COUNT,A 

        CLR T2ON 

        CLR T2AF

          MOV A,STACK_STATUS

       MOV STATUS,A

        MOV A,STACK_A

        RETI 

  • 写回答

1条回答 默认 最新

  • Vx cr_8118 2023-06-13 18:04
    关注

    堆栈溢出大概率是数组越界,地址冲突引起的,可以检查一下程序。有用的话望采纳

    评论

报告相同问题?

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题