请教:有关寄存器的调用

[复制链接]
3065|7
 楼主| feelingme 发表于 2008-12-7 21:52 | 显示全部楼层 |阅读模式
在使用designer开发时,发现好多寄存器名即使从datasheet中看到也不能直接使用,因为在m8c中可能定义的名字不一致,所以我想请教一下它的定义规则是什么?
比如
CMP_CR0:      equ 64h          ; Analog Comparator Bus 0 Register         (#)
CMP_CR0_COMP1:        equ 20h    ; MASK: Column 1 comparator state        (R)
CMP_CR0_COMP0:        equ 10h    ; MASK: Column 0 comparator state        (R)
CMP_CR0_AINT1:        equ 02h    ; MASK: Column 1 interrupt source        (RW)
CMP_CR0_AINT0:        equ 01h    ; MASK: Column 0 interrupt source        (RW)

另外如果想使用寄存器中某一位,该怎么调用?谢谢 
 楼主| feelingme 发表于 2008-12-7 21:54 | 显示全部楼层

举个例子

如果我想使用比较器CompBus对应的寄存器,该怎么做?
 楼主| feelingme 发表于 2008-12-8 09:24 | 显示全部楼层

在线等,请技术给予指导!!

PSoC_Rock 发表于 2008-12-8 15:30 | 显示全部楼层

回LZ:

对:
CMP_CR0:      equ 64h          
表示 64h是CMP_CR0的地址.

如果设置CMP_CR0的bit0可以:
or reg[CMP_CR0],0x01

如果清除CMP_CR0的bit0可以:
and reg[CMP_CR0],~0x01

不过要注意这样的寄存器分布在两页中(bank0 and bank1),在操作之前要先设置页,通过调用宏:
M8C_SetBank0
M8C_SetBank1
来实现.
PSoC_Rock 发表于 2008-12-8 15:36 | 显示全部楼层

tst reg[CMP_CR0],0x01
jz  ...
 楼主| feelingme 发表于 2008-12-8 19:23 | 显示全部楼层

十分感谢!

非常感谢!由于刚接触PSOC,所有还不熟悉!

那我想知道,在C编译环境中,能否直接调用CMP_CR0_COMP0?

如果我想让比较器模块的输出端做标记符直接调用,我该选择哪一个寄存器,

怎么操作?谢谢?
PSoC_Rock 发表于 2008-12-9 15:15 | 显示全部楼层

C 可以直接引用

如:

CMP_CR0 |= 0x01;
 楼主| feelingme 发表于 2008-12-9 17:15 | 显示全部楼层

谢谢!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部