打印

请教:有关寄存器的调用

[复制链接]
2085|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
来实现.

使用特权

评论回复
5
PSoC_Rock| | 2008-12-8 15:36 | 只看该作者

tst reg[CMP_CR0],0x01
jz  ...

使用特权

评论回复
6
feelingme|  楼主 | 2008-12-8 19:23 | 只看该作者

十分感谢!

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

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

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

怎么操作?谢谢?

使用特权

评论回复
7
PSoC_Rock| | 2008-12-9 15:15 | 只看该作者

C 可以直接引用

如:

CMP_CR0 |= 0x01;

使用特权

评论回复
8
feelingme|  楼主 | 2008-12-9 17:15 | 只看该作者

谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

0

粉丝