2020-01-18 18:47发布
ycheng2004 发表于 2016-1-5 13:41 请都坛友, 瑞萨汇编的寄存器位寻址如何写? 或瑞萨汇编的RAM空间位寻址如何写? ...
最多设置5个标签!
瑞萨有几个列的单片机,三凌、NEC等,编译器都不相同。
无论是寄存器或RAM,位寻址都必须先定义再用,也就是先做头文件。就像你一样,也要先取名别人才好称呼你。
寄存器位定义一般编译器的头文件会包含有,当然你也可以自己定义。
看一下我用“High-performance Embedded Workshop”是怎么做头文件的,当然头文件的宏定义,每种编译器都有区别。
P0 =00H ; port 0 status register . P0口的地址是00H
P0D =01H ; port 0 control register,"1" is output,"0" is input. P0口的方向寄存器地址为01H
P00 =0,P0 P00,也就是P0口的BIT0
P01 =1,P0
P02 =2,P0
P03 =3,P0
P04 =4,P0
P05 =5,P0
P06 =6,P0
P07 =7,P0
定义完位之后,就可以直接位操作了。
RAM的位定义和位操作同样道理,当然了,有些MCU会指定那些区域的RAM才能位定义和位操作,像51的00-2FH区域。
如下为《RAM.asm》
.SECTION RAM
.ORG 0040H
:KEYVALUE: .BLKB 1 ;this is scankey output parameter,valid key value.
:OLDKVALUE: .BLKB 1 ;old key.
:M_IR_TYPE: .BLKB 1 ; F_IB/F_HL/F_PU(3BITS).
:F_TYPE_IB .EQU 0,M_IR_TYPE --------------RAM位定义------------------------
:F_TYPE_HL .EQU 1,M_IR_TYPE ;high/low ir,special send it.
:F_TYPE_RI .EQU 2,M_IR_TYPE ;sony type ir.
:F_TYPE_SE .EQU 3,M_IR_TYPE ;serial ir.
:F_TYPE_MP .EQU 4,M_IR_TYPE
:F_TYPE_PU .EQU 5,M_IR_TYPE ;pulse ir!
:F_TYPE_ABCD .EQU 6,M_IR_TYPE ;
还要为《RAM.asm》里的全局变量作包含文件《RAM.h》
.ZEXT KEYVALUE
.ZEXT OLDKVALUE
.ZEXT M_IR_TYPE
.ZBEXT F_TYPE_IB ;------------------位定义的写法与BYTE是有区别的。。。。。。。。。
.ZBEXT F_TYPE_HL
.ZBEXT F_TYPE_RI
.ZBEXT F_TYPE_SE
.ZBEXT F_TYPE_MP
.ZBEXT F_TYPE_PU
.ZBEXT F_TYPE_ABCD
一周热门 更多>