找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5040|回复: 1
打印 上一主题 下一主题
收起左侧

STC单片机xdata变量下使用结构体

[复制链接]
跳转到指定楼层
楼主
最近没事看着手头不少闲置的STC的单片机,拿来捣鼓下.之前一直用PIC的单片机,使用结构体变量没出现什么问题,这次换成STC的单片机发现编译没问题,运行起来确不正常,百度一下发现也有人遇到类似的问题,但是按照他们的方法也没能解决.                                                                                                下图是网上的提问:


按照他的方法依然运行不正常,这个问题一直困扰着我,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,如下:

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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