打印

我看datasheet了,但操作起来却不对

[复制链接]
2175|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 电子write_cai 于 2011-5-28 11:33 编辑

movia   0x10
             movar   38h
             movia   0x0A
             movar   39h
             movr    38h,0     //把38h地址的值给ACC
             movar   fsr        //acc的值给FSR
             movr    indf,0    //读indf的值
     ///读到的INDF值(给ACC了)不是10,而是6E了

还是请高手解释下INDF和FSR的关系吧。

未命名.JPG (60.7 KB )

未命名.JPG

未命名1.JPG (106.21 KB )

未命名1.JPG

相关帖子

沙发
电子write_cai|  楼主 | 2011-5-28 12:33 | 只看该作者
顶。。。。。。等。。。。。。。。

使用特权

评论回复
板凳
lyjian| | 2011-5-28 14:45 | 只看该作者
你在哪里看到ACC的值是6E了?

使用特权

评论回复
地板
电子write_cai|  楼主 | 2011-5-28 15:29 | 只看该作者
我用仿真器看的啊

使用特权

评论回复
5
电子write_cai|  楼主 | 2011-5-28 15:30 | 只看该作者
你在哪里看到ACC的值是6E了?
lyjian 发表于 2011-5-28 14:45

图上的左下角落有ACC的显示

使用特权

评论回复
6
lyjian| | 2011-5-28 15:45 | 只看该作者
你的程序跑到哪里了你才看ACC的值?
从你图上看的话,FSR=D0,也就是说你要读的是10H地址的数据而不是38H地址的数据。
你自己的问题而已。

使用特权

评论回复
7
lyjian| | 2011-5-28 15:49 | 只看该作者
movr    38h,0     //把38h地址的值给ACC
***************************
38h地址的值是10H,把38h地址的值给ACC的话就是把10H给ACC
如果你是要把38H这个地址给ACC的话,你要写
movia   0x38

使用特权

评论回复
8
电子write_cai|  楼主 | 2011-5-28 15:53 | 只看该作者
你的程序跑到哪里了你才看ACC的值?
从你图上看的话,FSR=D0,也就是说你要读的是10H地址的数据而不是38H地址的数据。
你自己的问题而已。
lyjian 发表于 2011-5-28 15:45

我又看了下,FSR的寄存器高两位是空的,默认为1 1 ,我写了0x10,所以FSR的数据就变为D0了   1 1 0 1 0 0 0 0

使用特权

评论回复
9
电子write_cai|  楼主 | 2011-5-28 16:01 | 只看该作者
movr    38h,0     //把38h地址的值给ACC
***************************
38h地址的值是10H,把38h地址的值给ACC的话就是把10H给ACC
如果你是要把38H这个地址给ACC的话,你要写
movia   0x38 ...
lyjian 发表于 2011-5-28 15:49
我一楼的程序是不是写绕路子了?

使用特权

评论回复
10
电子write_cai|  楼主 | 2011-5-28 16:14 | 只看该作者
movr    38h,0     //把38h地址的值给ACC
***************************
38h地址的值是10H,把38h地址的值给ACC的话就是把10H给ACC
如果你是要把38H这个地址给ACC的话,你要写
movia   0x38 ...
lyjian 发表于 2011-5-28 15:49


请问这次我写没问题了,可是读到的indf的值在ACC上显示可不是D1啊 ??? 可能我哪边由错了?

未命名.JPG (69.22 KB )

未命名.JPG

使用特权

评论回复
11
lyjian| | 2011-5-28 16:33 | 只看该作者
你实际要读的是11H的值,很对呀
因为D1H和11H是同一个地址
把movr    38h,0 改成movia   0x38,读出来就是D1了。
仔细看看7楼的意思

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
电子write_cai + 1
12
电子write_cai|  楼主 | 2011-5-28 17:06 | 只看该作者
你实际要读的是11H的值,很对呀
因为D1H和11H是同一个地址
把movr    38h,0 改成movia   0x38,读出来就是D1了。
仔细看看7楼的意思
lyjian 发表于 2011-5-28 16:33

明白了,我又搞了。

使用特权

评论回复
13
jack_shine| | 2011-5-28 21:08 | 只看该作者
lz现在还在用汇编呀

使用特权

评论回复
14
邪恶猛男| | 2011-5-29 17:11 | 只看该作者
寄存器访问的是地址空间,不是你的数
你的寻址方式不对,如果你要对数据操作的话就立即数操作
图上你的对寄存器直接取址,
汇编在我脑海留下就是这些了。
希望对你有帮助

使用特权

评论回复
15
邪恶猛男| | 2011-5-29 17:13 | 只看该作者
1楼的 call  time 2个 下面哪个CALL 估计是到不了了

使用特权

评论回复
16
电子write_cai|  楼主 | 2011-5-30 08:06 | 只看该作者
lz现在还在用汇编呀
jack_shine 发表于 2011-5-28 21:08

汇编和C语言是两码事,学点东西不是坏事

使用特权

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

本版积分规则

个人签名:只要你是拼多多新用户就可以加我微信,微信号772880135验证您是新用户后立刻微信转你20元。欢迎朋友加我微信,多年21ic用户,诚信为本!

157

主题

1534

帖子

3

粉丝