找回密码
 立即注册
查看: 26|回复: 1

调试STC32G144K246的xdata诡异现象

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-11-05 23:49:13
已绑定手机

1

主题

0

回帖

11

积分

新手上路

积分
11
发表于 前天 23:49 | 显示全部楼层 |阅读模式
      把变量用xdata定义,然后赋值,打印出来,居然全部是0,如果把变量定义成edata,数据就正常


     KEIL配置如下:
          截图202511052344555338.jpg          截图202511052345417910.jpg


      部分程序:


    变量用xdata定义,打印是橙色部分,edata定义,打印出是绿色部分。



        gucTemp = 0x59;
        ucData  = gucTemp;

       
        if(0x59 != ucData)
        {
                Print("\r\n not ok,data = 0x%x!!!!!!!!\r\n",&ucData,0,0,0);
        }
        else
        {
                Print("\r\n ok,data = 0x%x\r\n",&ucData,0,0,0);
        }
       


        if(0x59 != gucTemp)
        {               
                Print("\r\n not ok,datax = 0x%x!!!!!!!!\r\n",&gucTemp,0,0,0);
        }
        else
        {
                Print("\r\n ok,datax = 0x%x\r\n",&gucTemp,0,0,0);
        }




      


   单步调试,无论哪种定义,都会跳到绿色部分,所以程序是没有问题,猜测芯片运行的时候出现了问题


   161:         gucTemp = 0x59;
0xFCDC85   7459        MOV      A,#0x59
0xFCDC87   90796C      MOV      DPTR,#0x796C
0xFCDC8A   F0          MOVX     @DPTR,A
   162:         ucData  = gucTemp;
   163:  
   164:         
0xFCDC8B   90796C      MOV      DPTR,#0x796C
0xFCDC8E   E0          MOVX     A,@DPTR
0xFCDC8F   90794F      MOV      DPTR,#0x794F
0xFCDC92   F0          MOVX     @DPTR,A
   165:         if(0x59 != ucData)
   166:         {
0xFCDC93   90794F      MOV      DPTR,#0x794F
0xFCDC96   E0          MOVX     A,@DPTR
0xFCDC97   BEB059      CMP      R11,#0x59
0xFCDC9A   6818        JE       FCDCB4
   167:                 Print("\r\n not ok,data = 0x%x!!!!!!!!\r\n",&ucData,0,0,0);
0xFCDC9C   9F11        SUB      DR4,DR4
0xFCDC9E   7A1F0436    MOV      0x0436,DR4
0xFCDCA2   7A1F043A    MOV      0x043A,DR4
0xFCDCA6   7A1F043E    MOV      0x043E,DR4
0xFCDCAA   7E1445C2    MOV      WR2,#0x45C2
0xFCDCAE   7E0400FD    MOV      WR0,#0x00FD
   168:         }
   169:         else
   170:         {
0xFCDCB2   8016        SJMP     FCDCCA
   171:                 Print("\r\n ok,data = 0x%x\r\n",&ucData,0,0,0);
0xFCDCB4   9F11        SUB      DR4,DR4
0xFCDCB6   7A1F0436    MOV      0x0436,DR4
0xFCDCBA   7A1F043A    MOV      0x043A,DR4
0xFCDCBE   7A1F043E    MOV      0x043E,DR4
0xFCDCC2   7E1445AE    MOV      WR2,#0x45AE
0xFCDCC6   7E0400FD    MOV      WR0,#0x00FD
0xFCDCCA   7E34794F    MOV      WR6,#0x794F
0xFCDCCE   7E240001    MOV      WR4,#0x0001
0xFCDCD2   9AFD1112    ECALL    Print(FD1112)
   172:         }
   173:         
   174:  
   175:  
   176:         if(0x59 != gucTemp)
   177:         {               
0xFCDCD6   90796C      MOV      DPTR,#0x796C
0xFCDCD9   E0          MOVX     A,@DPTR
0xFCDCDA   BEB059      CMP      R11,#0x59
0xFCDCDD   6818        JE       FCDCF7
   178:                 Print("\r\n not ok,datax = 0x%x!!!!!!!!\r\n",&gucTemp,0,0,0);
0xFCDCDF   9F11        SUB      DR4,DR4
0xFCDCE1   7A1F0436    MOV      0x0436,DR4
0xFCDCE5   7A1F043A    MOV      0x043A,DR4
0xFCDCE9   7A1F043E    MOV      0x043E,DR4
0xFCDCED   7E14458D    MOV      WR2,#0x458D
0xFCDCF1   7E0400FD    MOV      WR0,#0x00FD
   179:         }
   180:         else
   181:         {
0xFCDCF5   8016        SJMP     FCDD0D
   182:                 Print("\r\n ok,datax = 0x%x\r\n",&gucTemp,0,0,0);
0xFCDCF7   9F11        SUB      DR4,DR4
0xFCDCF9   7A1F0436    MOV      0x0436,DR4
0xFCDCFD   7A1F043A    MOV      0x043A,DR4
0xFCDD01   7A1F043E    MOV      0x043E,DR4
0xFCDD05   7E144578    MOV      WR2,#0x4578
0xFCDD09   7E0400FD    MOV      WR0,#0x00FD
0xFCDD0D   7E34796C    MOV      WR6,#0x796C
0xFCDD11   7E240001    MOV      WR4,#0x0001
0xFCDD15   9AFD1112    ECALL    Print(FD1112)
   183:         }









  

1.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:219
  • 最近打卡:2025-11-06 21:59:58

83

主题

6828

回帖

1万

积分

超级版主

积分
14660
发表于 昨天 21:59 | 显示全部楼层
我测试没您说的问题:

变量定义为xdata:
截图202511062158091983.jpg

按您的要求使用printf函数打印变量内容:
截图202511062159135663.jpg

串口助手接收正确:
截图202511062159514209.jpg

回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-11-7 09:11 , Processed in 0.563007 second(s), 52 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表