智能车制作

标题: 怎么读取十六位的寄存器呢? [打印本页]

作者: "沉沉睡去.    时间: 2013-11-19 20:55
标题: 怎么读取十六位的寄存器呢?
就比如TCNTH和TCNTL,如果不是同时读取的话,可能数据已经变了,那要怎么同时读取两个寄存器呢?,书本上说要按字访问,请问什么叫按字访问呢,求教!!
作者: "沉沉睡去.    时间: 2013-11-19 20:56
忘记说,是S12XS的芯片!!
作者: ww1993    时间: 2013-11-19 21:00
一个字即两个字节,一个字节有八位,共计16位,按字访问即一次访问十六位
作者: "沉沉睡去.    时间: 2013-11-19 21:07
ww1993 发表于 2013-11-19 21:00
一个字即两个字节,一个字节有八位,共计16位,按字访问即一次访问十六位

嗯,这个我知道,可是要怎么才能一次访问十六位呢?

作者: a1005020208    时间: 2013-11-19 21:16
ulong  Cba;
Cba = TCNT;
作者: ww1993    时间: 2013-11-19 21:20
"沉沉睡去. 发表于 2013-11-19 21:07
嗯,这个我知道,可是要怎么才能一次访问十六位呢?

xs128是16位单片机,应该有16位的数据寄存器,直接一次读出十六位应该没问题,不分高低字节,具体实现不知道,还没用过,呵呵

作者: ww1993    时间: 2013-11-19 21:22
ww1993 发表于 2013-11-19 21:20
xs128是16位单片机,应该有16位的数据寄存器,直接一次读出十六位应该没问题,不分高低字节,具体实现不知 ...

附加一句TCNTH和TCNTL不是两个寄存器,是一个,只是人为的说成是高八位和低八位

作者: 安安安然。    时间: 2013-11-19 21:25
学习了!
作者: "沉沉睡去.    时间: 2013-11-19 21:37
本帖最后由 "沉沉睡去. 于 2013-11-19 21:48 编辑
ww1993 发表于 2013-11-19 21:22
附加一句TCNTH和TCNTL不是两个寄存器,是一个,只是人为的说成是高八位和低八位



作者: 机遇    时间: 2013-11-19 21:45
"沉沉睡去. 发表于 2013-11-19 21:37
TCNTH和TCNTL是两个八位寄存器啊=。=,哪里是一个十六位寄存器呢

看底层可以变成TCNT的  就像SCI0BD一样的

作者: ww1993    时间: 2013-11-19 21:56
"沉沉睡去. 发表于 2013-11-19 21:37
TCNTH和TCNTL是两个八位寄存器啊=。=,哪里是一个十六位寄存器呢

TCNT是一个16位寄存器,可以把它分成TCNTH和TCNTL两个字节,那么这两个字节可以分别看成两个八位寄存器,现在的问题是单片机可以一次处理十六位,那可以直接一次读出TCNT,不用分开读,如果一次只能处理八位数据,那就必须且只能分两次,如果一次只能处理四位,那就必须处理四次。

作者: rubick    时间: 2013-11-19 23:01
由编译器实现的,跟C语言没关系。
word x;
x = TCNT;
就可以了。
作者: 中华旺仔    时间: 2013-11-20 15:18
学习了
作者: yy_tmbh    时间: 2013-11-20 22:20





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2