谁能详细讲解下51单片机程序讲解中查表的概念?

51单片机指令详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
51单片机指令详解
&&单片机指令
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩12页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢51单片机查表的问题??? - 嵌入式系统编程 - 电子工程世界-论坛
后使用快捷导航没有帐号?
查看: 3077|回复: 11
51单片机查表的问题???
在线时间2 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
题目:设有一个巡回检测报警设置,需对16路输入进行测量控制,每路有一个最大允许值,它为双字节字数.控制时根据测量的路数,找出该路的最大允许值,判断输入值是否大雨最大允许值,如大于则报警.取路数为x(0&=x&=15),y为最大允许值放在程序存贮器的常数表,在查表之前路数x存放R2,查表的结果y放在R3R4中,则查表程序如下
LTB1:MOV A,R2
& && && & ADD A,R2& && && & ;R2*2-&A
& && && & MOV R3,A& && && & ;保存指针
& && && & ADD A,#(TAB1-LTB2)& &;加上偏移量
& && && & MOVC A,@A+PC& && && & ;查第一字节
LTB2: XCH A,R3& && && && && && && & ;单字节指令
& && && &ADD A,#(TAB1-LTB3)& &;双字节指令
& && &&& MOVC A,@A+PC& && && & ;查第二个字节,单字节指令
LTB3:MOV R4,A& && && && && && && &;单字节指令
& && && &RET& && && && && && && && && && && && &
TAB1:DW 645,7850
& && && & DW ,883,9943
请问上面查询第二个字节指令是怎么查找的,不应该再加上A的内容再加上1才是第二个字节的地址吗????
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
一粒金砂(初级), 积分 2, 距离下一级还需 3 积分
你这应该是单片机里&&的偏移值(或者叫修正值)的错误。用pc时有用到。& &这个书本上写的很清楚&&那个需要计算。DPTR 则只需加1就可以。
在线时间3 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 1 楼 qingfeng200634 的回复:
你这应该是单片机里&&的偏移值(或者叫修正值)的错误。用pc时有用到。& &这个书本上写的很清楚&&那个需要计算。DPTR 则只需加1就可以。
&&ADD A,#(TAB1-LTB3) ;双字节指令
&&MOVC A,@A+PC ;
&&ADD A,#(TAB1-LTB2) ;加上偏移量
&&MOVC A,@A+PC ;查第一字节
不是查询地址的位置是一样的吗??不也是双字节数的首地址吗???
可以讲清楚点,可以吗??我知道dptr只需要加一就可以了呀,但是
ADD A,#(TAB1-LTB3) ;双字节指令
&&MOVC A,@A+PC ;这两条指令不也需要加上1才能得到双字节第二个字节的地址呀....
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
求高手指导一下了呀
在线时间1 小时
TA的帖子TA的资源
一粒金砂(高级), 积分 220, 距离下一级还需 280 积分
一粒金砂(高级), 积分 220, 距离下一级还需 280 积分
汇编我不经常用,不敢发表任何意见,呵呵,帮顶。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
CCCCCCCCCCCCC
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
看了感觉应该加1啊
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
ADD A,#(TAB1-LTB2) ;加上偏移量
&&MOVC A,@A+PC ;查第一字节
LTB2: XCH A,R3 ;单字节指令
&&ADD A,#(TAB1-LTB3) ;双字节指令
&&MOVC A,@A+PC ;查第二个字节,单字节指令
PC已经变了。。。
执行到第二个MOVC A,@A+PC ;查第二个字节,单字节指令的时候
PC已经比之前的PC加二了
所以程序是正确的。。。
不过这么写有点装,没啥事用DPRT来读写ROM好一些,如果指令系统支持的话
这样可读性要高
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 7 楼 lbing7 的回复:
PC的增加值跟偏移量的减小值不一样么
还用是DPTR吧
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 7 楼 lbing7 的回复:
ADD A,#(TAB1-LTB2) ;加上偏移量
&&MOVC A,@A+PC ;查第一字节
LTB2: XCH A,R3 ;单字节指令
&&ADD A,#(TAB1-LTB3) ;双字节指令
&&MOVC A,@A+PC ;查第二个字节,单字节指令
PC已经变了。。。
执行到第二个MOVC A,@A+PC ;查第二个字节,单字节指令的时候
PC已经比之前的PC加二了……
#(TAB1-LTB3)和
#(TAB1-LTB2)是什么地址呀???
ADD A,#(TAB1-LTB3) ;双字节指令
&&MOVC A,@A+PC ;不就是相当于((A)+(PC))-&A,pc内容不就是#LTB3?而A的内容就是#(TAB1-LBT3)
ADD A,#(TAB1-LTB2) ;加上偏移量
&&MOVC A,@A+PC ;不就是相当于((A)+(PC))-&A,pc内容不就是#LTB2?而A的内容就是#(TAB1-LBT2)
算下来结果不是应该是一样的吗????不应该需要A加上1吗???
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
引用 8 楼 sytu_chyq 的回复:
引用 7 楼 lbing7 的回复:
PC的增加值跟偏移量的减小值不一样么
还用是DPTR吧
我也觉得有些问题...
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
有人详细讲解下吗???求救了呀.....
EEWORLD 官方微信
EE福利 唾手可得
Powered by

我要回帖

更多关于 15单片机pwm讲解 的文章

 

随机推荐