1.程序存储空间 数据存储空间 I/O地址空间 与Flash DARAM SARAM 的区别。 不同的存储空间用不同的总线读写。 Flash DARAM SARAM是物理上的存储器,而映射是把这些存储器做为某个存储空间的实际的存储单元。 空间是概念上的,存储器是物理上的。 LF240X有544字的DARAM B0、B1、B2,映射为数据存储空间,当CNF=1时,B0为程序存储空间。2K字的SARAM可以通过软件配置为数据存储空间或程序存储空间。FLASH则为永久的程序存储模块。 程序存储空间是〔B0、〕FLASH、外部存储器(LF2406没有)。 数据存储空间是〔B0、〕B1、B2、SARAM、外设寄存器。 2.什么是I/O地址空间?I/O地址空间的外部扩展空间与程序或数据存储空间的外部存储器又有什么区别? I/O空间用IN OUT指令访问。I/O空间访问有程序存储器和数据存储器访问两种。可以由IS信号高低来区分。访问外部并行I/O端口与访问程序、数据存储器复用相同的地址、数据总线。 2008-2-26 上电时DP值不定,所以所有的程序都要初始化DP。 2008-2-26 外部符号:在一个模块中定义,而在另一个模块中引用的符号。 .def 在当前模块中定义,并可在别的模块中引用的符号。相当于C中的定义全局变量。 .ref 在当前模块中引用,但在别的模块中定义的符号。相当于C中的声明外部变量。 .global 可以是以上的随便一种。即如果符号未被定义,则定义符号,并可以别的模块中引 用。如果符号已经定义,则在当前模块中引用。 2008-2-26 常用的汇编伪指令 .end 汇编程序结束 .include 包括一个已编了的汇编程序,一般为.H的头文件 .copy 包括一个已编了的汇编程序,一般为.ASM的汇编文件 .title 打印一个文件标题,一般紧跟其后为用双引号引起来的源程序名 .int 用来设置一个或多个16位无符号整型常数 .int value[,…,valuen] .word value[,…,valuen] .set 赋给符号一个常数。DATA .set 0001b .def .ref .global .bss .data .sect .usect .text .asect 条件汇编: .if .elseif .else .endif .loop表达式表示要按照表达式所指定的次数进行重复汇编的代码块。 .break表达式为假继续重复汇编,为真时,直接跳到.endloop后面的代码。 .endloop表示可重复代码块的结束。 这三条条件汇编伪指令有什么用处? 2008-2-27 在.gel文件里有GEL_WatchAdd("*0x70A8,x","RESULT0"); 还是否要建个头文件,RESULT0 .set 70A8H来定义寄存器地址? .gel文件起什么作用? 2008-2-27 编译项目时,出再没有源文件,删除工程里的源文件再添加,还是出现同样的错误。 打开Build Options->Compiler->Files 里的Obj Directory有文件路径,删除后,错误消失。 2008-2-27 关于.end是要在每个汇编文件的结尾?如果没有写的话也不会出错,为什么? 2008-2-27 宏定义 Macname .macro[parameter1][,parameter2][…] Model statements [.mexit] .endm 相当于C的:#define Macname ( parameter1, parameter2,…) Model statements Macname :宏名,前32位有效。 .macro:宏定义伪指令 Parameter:宏定义的参数 Model statements:宏程序语句 .mexit:跳到.endm伪指令语句 .endm:终止宏定义 例如: SBIT0 .macro DMA, MASK ;Clear bit Macro LACC DMA AND #(0FFFFh-MASK) SACL DMA .endm 宏调用: SBIT0 X,Y 2008-2-27 编译连接都通过,为什么生成的.out文件无法下载,提示0x0地址数据确认错误。 查看Disassembly,8000h前面的数据全为FF,8000h~87ffh即SARAM区里有程序PRG_inti,8800H后的数据全和87FFH里的数据相同。 (是否因为没有外部存储器,所以一往下拉,87FFH后面的数据就和87FFH里的数据一样。但从最后面向上翻,数据又都成了0FFFFH) .map文件又正确。 8000h~87ffh里的程序是否是用来清除、擦除、烧写FLASH用的?其只要打开CSS就存在。 刚打开,8800H后面不存在地址,这是LF2406A芯片。
一周热门 更多>