搜索
bottom↓
回复: 2

帮忙解释一下

[复制链接]

出0入0汤圆

发表于 2009-7-18 15:36:34 | 显示全部楼层 |阅读模式
;*********************寄存器定义*********************
TEMP       EQU    20H      ;临时寄存器
BAI        EQU    21H      ;转换结果的百位
SHI        EQU    22H      ;转换结果的十位
GE         EQU    23H      ;转换结果的个位
;****************************************************
  ORG       00H             ;复位入口地址
  NOP                       ;ICD需要的空指令
  GOTO      MAIN            ;跳转到主程序入口
  ORG       04H             ;中断入口地址
  RETFIE                    ;放置一条中断返回指令,防止以外中断发生
;***********************主程序***********************
MAIN
  MOVLW     30H
  MOVWF     FSR             ;转换结果存放起始地址         
LOOP
  BSF       STATUS,RP0      ;选择体1
  MOVLW     7H              ;A口高3位为输出,低3位输入
  MOVWF     TRISA
  CLRF      TRISD           ;D口设为输出
  MOVLW     8EH
  MOVWF     ADCON1          ;结果右对齐,只选择RA0做ADC口,其余做普通数字口
  BCF       STATUS,RP0      ;回体0
  MOVLW     41H
  MOVWF     ADCON0          ;选择时钟源为fosc/8,允许ADC工作
  CALL      DELAY           ;调用延时程序,保证足够的采样时间
  BSF       ADCON0,GO       ;启动ADC转换
WAIT
  BTFSS     PIR1,ADIF       ;转换是否完成
  GOTO      WAIT            ;等待转换的完成
  BSF       STATUS,RP0
  MOVFW     ADRESL          ;读取转换的结果
  BCF       STATUS,RP0
  MOVWF     INDF            ;保存到临时寄存器里
  INCF      FSR,1
  BTFSS     FSR,2           ;连续转换4次,求平均值
  GOTO      LOOP
  CALL      CHANGE          ;调用结果转换程序
  CALL      DISPLAY         ;调用显示程序
  GOTO      MAIN            ;循环工作
;************************转换程序*********************
;入口参数:30H---33H
;出口参数:BAI,SHI,GE
CHANGE

  CLRF      2AH
  CLRF      BAI
  CLRF      SHI
  CLRF      GE              ;先清除结果寄存器

  MOVFW     31H             ;以下8条指令求4次转换结果的平均值
  ADDWF     30H,1
  BTFSC     STATUS,C
  INCF      2AH
  MOVFW     32H
  ADDWF     30H,1
  BTFSC     STATUS,C
  INCF      2AH,1
  MOVFW     33H
  ADDWF     30H,1
  BTFSC     STATUS,C
  INCF      2AH,1

  RRF       2AH,1
  RRF       30H,1
  RRF       2AH,0
  RRF       30H,0
         
  MOVWF     TEMP
  MOVLW     64H             ;减100,结果保留在W中
  SUBWF     TEMP,0
  BTFSS     STATUS,C        ;判断是否大于100
  GOTO      SHI_VAL         ;否,转求十位结果
  MOVWF     TEMP            ;是,差送回TEMP中

  INCF      BAI,1           ;百位加1

  GOTO      $-6             ;返回继续求百位的值
SHI_VAL
  MOVLW     0AH             ;减10,结果保留在W中
  SUBWF     TEMP,0         
  BTFSS     STATUS,C        ;判断是否大于10
  GOTO      GE_VAL          ;否,转去判断个位结果
  MOVWF     TEMP            ;是,差送回TEMP中

  INCF      SHI,1           ;十位值加1

  GOTO      $-6             ;转会继续求十位的值
GE_VAL
  MOVFW     TEMP
  MOVWF     GE              ;个位的值
  RETURN
;**************************显示程序********************
;入口参数:BAI,SHI,GE
;出口参数:无
DISPLAY
  MOVFW    BAI              ;显示百位
  CALL     TABLE
  MOVWF    PORTD
  BCF      PORTA,3
  CALL     DELAY
  CALL     DELAY
  BSF      PORTA,3
  MOVFW    SHI              ;显示十位
  CALL     TABLE
  MOVWF    PORTD
  BCF      PORTA,4
  CALL     DELAY
  CALL     DELAY
  BSF      PORTA,4
  MOVFW    GE               ;显示个位
  CALL     TABLE
  MOVWF    PORTD
  BCF      PORTA,5
  CALL     DELAY
  CALL     DELAY
  BSF      PORTA,5
  RETURN

=========================
高手们,我在网上看到这一段程序,其中红色字体的部分不是很清楚,高手们能不能帮个忙?

一、第一处

  CLRF      2AH
  CLRF      BAI
  CLRF      SHI
  CLRF      GE              ;先清除结果寄存器

清0各寄存器,但是其中的2AH在接下来的程序中就算加1,也就是00000001啊!它在此种有什么意义呢?

二、第二处

  RRF       2AH,1
  RRF       30H,1
  RRF       2AH,0
  RRF       30H,0

前两句,右移,结果存入寄存器;后两句,右移,结果存入W,但是后一句“RRF       30H,0”肯定会覆盖前一句“RRF       2AH,0
”在W中的内容啊!这又有什么意义呢?

三、第三处

INCF      BAI,1           ;百位加1

前面的指令意思是,不借位就跳到“MOVWF     TEMP            ;是,差送回TEMP中”,但是“INCF      BAI,1           ;百位加1
”这个BAI是它的本身内容加1?但是前面第一处红色处,有一句“CLRF BAI”,这样它的内容就是00000001了?这句在这里有什么意思吗?

以及后面一句 "INCF      SHI,1           ;十位值加1" 在此处的意义/

麻烦各位了。

出0入0汤圆

 楼主| 发表于 2009-7-20 14:31:00 | 显示全部楼层
没人光顾?

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-5-9 08:42

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

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