|
本帖最后由 fc23fcevff23 于 2013-1-22 22:55 编辑
我用的是CC2530芯片,内核是增强型8051。
用C语言编程毫无问题,在C语言编程时,插入__asm("MOV A,#88H");也没问题。javascript:;
但是,纯粹用汇编语言编程时,IAR就不认识基本的8051汇编指令了。
解决办法:
按照这样的格式去写:
public __program_start
__program_start:
org 0000h
mov A,#88H
end
我必须要指出:IAR这家公司的确是吃屎吃坏脑子了。
请大家注意:
public __program_start、org 0000h、mov A,#88H、end前面都有一段空白,它是TAB键生成的,而且是必需的。除了程序标号__program_start:前面可不用TAB键生成一段空白外,所有别的程序段都需要TAB键生成一段空白,否则一律当作Error[40]: Bad instruction来处理。
补充1:public __program_start也可以不用,只要进行如下设置即可:
那么,用IAR编写8051的汇编语言就会同一般的书本里面写的格式一样了,也就是:
org 0000h
mov A,#88H
end
补充2:
迪加的zigbee核心板闪光灯程序:
#include <ioCC2530.h>
ORG 0000H
MOV P1DIR,#0FFH
FLASH:
CLR P1_0
CALL DELAY_1S
SETB P1_0
CLR P1_1
CALL DELAY_1S
SETB P1_1
JMP FLASH
DELAY_1S:
MOV R1,#8
DELAY_1S_C_3_1:
MOV R2,#244
DELAY_1S_C_3_2:
MOV R3,#254
DJNZ R3,$
DJNZ R2,DELAY_1S_C_3_2
DJNZ R1,DELAY_1S_C_3_1
MOV R2,#5
DELAY_1S_C_2:
MOV R3,#248
DJNZ R3,$
DJNZ R2,DELAY_1S_C_2
MOV R3,#1
DJNZ R3,$
RET
END
DELAY_1S已经失效,只对传统8051是1S(分毫不差)
至此,我终于可以将CC2530当成是可以硬件仿真的8051单片机来用了,省去了购买C8051F的钱。
干杯,庆祝!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|