搜索
bottom↓
回复: 5

[求助]汇编指令解释

[复制链接]

出0入0汤圆

发表于 2011-8-15 18:13:04 | 显示全部楼层 |阅读模式
; Compiled with: PIC Simulator IDE v6.80
; Microcontroller model: PIC16F877
; Clock frequency: 4.0 MHz
;
;       The address of 'ad_action' (bit) (global) is 0x1F,2
;       The address of 'display' (byte) (global) is 0x6
        display EQU 0x6
; Begin
        R0L EQU 0x20
        R0H EQU 0x21
        R1L EQU 0x22
        R1H EQU 0x23
        R2L EQU 0x24
        R2H EQU 0x25
        R3L EQU 0x26
        R3H EQU 0x27
        R4L EQU 0x28
        R4H EQU 0x29
        R5L EQU 0x2A
        R5H EQU 0x2B
        ORG 0x0000
        BCF PCLATH,3
        BCF PCLATH,4
        GOTO L0003
        ORG 0x0004
        RETFIE
L0003:
; 1: Symbol ad_action = ADCON0.GO_DONE 'set new name for A/D conversion start bit
; 2: Symbol display = PORTB 'set new name for PORTB used to display the conversion result
; 3:
; 4: TRISB = %00000000 'set PORTB pins as outputs
        BSF STATUS,RP0
        CLRF 0x06
; 5: TRISA = %111111 'set PORTA pins as inputs
        MOVLW 0x3F
        MOVWF 0x05
; 6: ADCON0 = 0xc0 'set A/D conversion clock to internal source
        BCF STATUS,RP0
        MOVLW 0xC0
        MOVWF 0x1F
; 7: ADCON1 = 0 'set PORTA pins as analog inputs
        BSF STATUS,RP0
        CLRF 0x1F
; 8: High ADCON0.ADON 'turn on A/D converter module
        BCF STATUS,RP0
        BSF 0x1F,0
; 9:
; 10: main:
L0001:
; 11: Gosub getadresult 'go to conversion routine
        CALL L0002
; 12: display = ADRESH 'display the result of the conversion
        MOVF 0x1E,W                                      <----------------------此处W是什么?
        MOVWF 0x06
; 13: Goto main 'repeat forever
        GOTO L0001
; 14: End
L0004:        GOTO L0004
; 15:
; 16: getadresult: 'conversion routine
L0002:
; 17: High ad_action 'start the conversion
        BSF 0x1F,2
; 18: While ad_action 'wait until conversion is completed
L0005:
        BTFSS 0x1F,2
        GOTO L0006
; 19: Wend
        GOTO L0005
L0006:        MOVLW 0x1F               
        ANDWF STATUS,F                                 <----------------------此处F是什么?
; 20: Return
        RETURN
; End of program
L0007:        GOTO L0007
; End of listing
        END

刚学PIC,请学长释疑。谢谢

出0入42汤圆

发表于 2011-8-15 19:21:42 | 显示全部楼层
MOVF 0x1E,W     ;传送寄存器地址为0x1E中的内容到工作寄存器(累加器)

ANDWF STATUS,F   ;工作寄存器(累加器)和STATUS寄存器做逻辑与运算,结果放入STATUS.

出0入0汤圆

 楼主| 发表于 2011-8-16 08:42:46 | 显示全部楼层
MOVF f,d
ANDWF f,d

Destination select; d = 0: store result in W,
d = 1: store result in file register f.
Default is d = 1.
-------------------------------------------
MOVLW 0x1F                 
ANDWF STATUS,F            <----------------------此处F=1? 为什么不写成ANDWF STATUS,1

接着执行

MOVF 0x1E,W     ;从上面两个指令看出 W = 0x1F。那就不是"传送寄存器地址为0x1E中的内容到工作寄存器(累加器)"

出0入0汤圆

 楼主| 发表于 2011-8-17 08:53:24 | 显示全部楼层
沉下去了。 请学长们指教一下。谢谢

出0入0汤圆

发表于 2017-3-5 20:32:19 | 显示全部楼层
wangjiati 发表于 2011-8-15 19:21
MOVF 0x1E,W     ;传送寄存器地址为0x1E中的内容到工作寄存器(累加器)

ANDWF STATUS,F   ;工作寄存器(累加 ...

高手是否知道PIC的MPY指令结果为什么会加倍?

出0入0汤圆

发表于 2017-9-21 09:16:30 | 显示全部楼层
   MOVWF PCLATH    请问这个语句什么意思呢?楼主!?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 14:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表