打印

感到疑惑的代码

[复制链接]
1953|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwg998|  楼主 | 2011-8-7 16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lwg998 于 2011-8-7 16:12 编辑

最近看了一个产品的程序,有几段一直没看明白,请高手指点。里面打问号的,看代码0X59,0X62似乎是一个寄存器,但看了该单片机的DATASHEET却没有找到是哪个?很是纳闷,使用PIC16F72的单片机,程序是好用的,已经验证过了。

Label_002C CLRF    STATUS         
            BCF     PORTB     , 00
            NOP
            BSF     PORTB     , 00
            RETURN
Label_009C  BCF STATUS  , RP0   
            BCF     0x62  , 03    ;??
            BTFSC  0x59   , 04    ;???
            RETURN
            BSF     0x59      , 04
            MOVLW   0x0C
            MOVWF   0x61
            RETURN
Label_0095  BCF   STATUS , RP0   
            BSF     0x62    , 03  ;???
            BTFSS   0x59   , 04    ;???
            RETURN
            BCF     0x59     , 04
            MOVLW   0x0C
            MOVWF   0x61
            RETURN


另外请教这个子函数的功能

Label_001B  CLRF    STATUS     
            BCF     PORTB     , 06
            BSF     STATUS    , RP0
            BCF     TRISB     , 06
            BSF     TRISB     , 07
            MOVLW   0x05
            CALL    Label_0012
            BSF     TRISB     , 06
            MOVLW   0x05
            CALL    Label_0012
            MOVLW   0x00
            BTFSC   TRISB     , 07  这一句是什么意思呢?
            MOVLW   0x01
            MOVWF   0x3C
            BCF     TRISB     , 06
            RETURN
沙发
yewuyi| | 2011-8-8 11:45 | 只看该作者
RAM空间,你到寄存器空间找肯定是找不到的。

这是用户定义的变量,你这程序应该是反汇编搞出来的吧,否则怎么又人直接写变量的地址?

使用特权

评论回复
板凳
lwg998|  楼主 | 2011-8-8 12:35 | 只看该作者
楼上说的对,这个程序是反汇编过来的,主要是想了解原作者的编程思想,程序里面有很多这样的,实在很难猜出这个地址的实际意义。BTFSC   TRISB     , 07  这一句是对TRISB的第7位做判断的,但这样做有什么意义呢?TRISB是数据方向寄存器啊

使用特权

评论回复
地板
yewuyi| | 2011-8-8 20:48 | 只看该作者
楼上说的对,这个程序是反汇编过来的,主要是想了解原作者的编程思想,程序里面有很多这样的,实在很难猜出这个地址的实际意义。BTFSC   TRISB     , 07  这一句是对TRISB的第7位做判断的,但这样做有什么意 ...
lwg998 发表于 2011-8-8 12:35


你说操作IO的方向寄存器有什么意义呢?

对于MCU来说,很简单,就是设置为输出,对于用户,很复杂,具体有什么作用和你具体的外部电路有关系.

使用特权

评论回复
5
lwg998|  楼主 | 2011-8-9 14:51 | 只看该作者
BTFSC   TRISB     , 07   这一句是判断方向寄存器中的第7为时否为0,就是判断07这个接口是输出还是输入,对吧。但还是没想明白为何要这么判断,直接判定07口的电平不就行了吗

使用特权

评论回复
6
yewuyi| | 2011-8-9 16:22 | 只看该作者
BTFSC   TRISB     , 07   这一句是判断方向寄存器中的第7为时否为0,就是判断07这个接口是输出还是输入,对吧。但还是没想明白为何要这么判断,直接判定07口的电平不就行了吗 ...
lwg998 发表于 2011-8-9 14:51



判断IO方向和判断IO电平能一样吗?

显然是不一样。

至于原作者为什么要判断,这是他的设计需要,俺就不想去猜了。

另外,本版为出于对广大设计者权益的保护需要,不支持讨论反汇编的问题。

使用特权

评论回复
7
lwg998|  楼主 | 2011-8-13 10:45 | 只看该作者
是啊,那么什么情况下才回去判读端口的方向呢?

使用特权

评论回复
8
lwg998|  楼主 | 2011-8-13 10:46 | 只看该作者
反汇编只是出于学习里面的算法而已,刚接触PIC单片机,没有任何别的目的

使用特权

评论回复
9
NE5532| | 2011-8-13 14:00 | 只看该作者
1.不支持研究反汇编的,要研究的靠自己。
2.会变写出来的程序没说啥复杂算法,复杂算法使用C实现的。
3.单片机任何对外操作都要操作IO,无法通过简单判断知道作者意思。
4.初学单片机,要研究算法去厂家找例程

使用特权

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

本版积分规则

个人签名:OLED显示模块淘宝专卖:http://shop33090300.taobao.com OLED显示技术QQ群:81786560 加入本QQ群请输入验证:OLED

13

主题

143

帖子

0

粉丝