繁体   English   中英

指向PIC 16F和Hitech C的嵌入式asm标签的指针

[英]Pointer to inline asm label for PIC 16F and Hitech C

我正在编程16F886,这是嵌入式汇编的示例:

#asm
psect TxtData,class=CODE,delta=2
global _text1,_text2
_text1:   dw    'T','E','X','T','1',0
_text2:   dw    'T','E','X','T','2',0
#endasm

我需要将EEADR和EEADRH指向每个标签以读取闪存。 在纯asm中,我只使用Low / High操作数来获取每个标签的地址,例如movlw low Text1 在C语言中,每个标签都需要类似“ const指针”的东西,但是我无法使其正常工作。 我正在为PIC 10/12/16使用Hitech C编译器。

感谢大家的支持。 我在Microchip论坛上发布了这个问题,有几个人对此进行了尝试,结果发现编译器中存在一些错误,错误为10/12/16 mcus。 在C18编译器或Hitech C18中,当将其设置为18F单片机时,以上提出的解决方案可以完美地工作。 我设法找到的唯一解决方法是使用内联汇编来获取asm地址标签的高字节并以这种方式设置适当的寄存器。

asm 
    EEADRH EQU  0x10F
    movlw high _text1
    banksel EEADRH
    movwf EEADRH
endasm

字符串标签一个指针-您不必使用&来指定其地址。 您必须先写地址的MS部分

unsigned short address = text;
EEADRH = (address >> 8) & 0xF;
EEADR = address & 0xFF;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM