登录|立即注册|使用QQ帐号登录
论坛 > 51单片机
发帖|
看4943|回1|收藏
楼主 ID:78835 只看他
2020-2-22 09:34
最近没事看着手头不少闲置的STC的单片机,拿来捣鼓下.之前一直用PIC的单片机,使用结构体变量没出现什么问题,这次换成STC的单片机发现编译没问题,运行起来确不正常,百度一下发现也有人遇到类似的问题,但是按照他们的方法也没能解决.                                                                                                下图是网上的提问:
1582333841(1).jpg 51hei截图_20200222092837.png

按照他的方法依然运行不正常,这个问题一直困扰着我,STC的规格书也是写的不清楚,后面我就猜想会不会启动文件STARTUP.A51的问题,于是我仔细看了一下,发现有这么一段代码:

代码:

  1. STARTUP1:

  2. IF IDATALEN <> 0
  3.                 MOV     R0,#IDATALEN - 1
  4.                 CLR     A
  5. IDATALOOP:      MOV     @R0,A
  6.                 DJNZ    R0,IDATALOOP
  7. ENDIF

  8. IF XDATALEN <> 0
  9.                 MOV     DPTR,#XDATASTART
  10.                 MOV     R7,#LOW (XDATALEN)
  11.   IF (LOW (XDATALEN)) <> 0
  12.                 MOV     R6,#(HIGH (XDATALEN)) +1
  13.   ELSE
  14.                 MOV     R6,#HIGH (XDATALEN)
  15.   ENDIF
  16.                 CLR     A
  17. XDATALOOP:      MOVX    @DPTR,A
  18.                 INC     DPTR
  19.                 DJNZ    R7,XDATALOOP
  20.                 DJNZ    R6,XDATALOOP
  21. ENDIF
找出这一句IF XDATALEN <> 0,会不会是这里导致的?我把0改成1,IF XDATALEN <> 1,结果正常了.
还有就是结构体要加上关键字xdata,如下:
沙发 ID:78835 只看他
2020-2-22 09:39
补充:
//*******************声明变量***********************//
typedef struct   
{
    uint8_t     DisplayMode;
    uint8_t     DisplayTemp;
    uint16_t    LcdShow_10ms;
    char    Buf[17];
}idata My_Lcd1602;
//*******************定义变量***********************//
My_Lcd1602          MyLcd1602;

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版