注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! 打开购物车 查看留言付款方式联系我们
初中电子 单片机教材一 单片机教材二
搜索上次看见的商品或文章:
商品名、介绍 文章名、内容
首页 电子入门 学单片机 免费资源 下载中心 商品列表 象棋在线 在线绘图 加盟五一 加入收藏 设为首页
本站推荐:
用RC充电的方法实现温度的检测
文章长度[16345] 加入时间[2007/1/12] 更新时间[2024/8/29 21:34:19] 级别[0] [评论] [收藏]
 

;  该程序用RC充电的方法实现温度的检测

;  RA0 数码管个位选通 RA1 数码管百位选通

;  RB7 数码管百位和负号选通 

; RA2 检测电容高低电平

;  RA3  对电容充电和放电
;-----------------
  
   INCLUDE  "P16F84A.INC"
;------------------
;*****************************************************
  LIST P=16F84A,R=DEC         ;定义器件,默认为十进制
;-----------------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC
                                              ;没有代码保护
                                              ;看门狗关闭
                                              ;上电廷时器开启
                                              ;振荡器模式为XT
   RC   EQU 2
   RVCC EQU 3
   JIZIBZ  EQU 2
   TIMER EQU 30H
   BZH    EQU 32H
   TIMER2  EQU  36H
   FRISTJSQ  EQU  33H
   XIANZHIL  EQU  34H
   XIANZHIH  EQU  35H
   JSQ1      EQU  37H
   BCDLS     EQU  38H
   SUM       EQU  39H
   JSQ2      EQU  42H
   XIANZHIBAI  EQU  40H ;显值百位
   L         EQU   0
   H         EQU   1
   BAI       EQU   7;显示百位
   ZEROFZ    EQU   2 ;负值标记
   FP         EQU  0 ;分频标记
MAIN
   ORG  000H
   BANKSEL  TRISB
   CLRF  TRISB
   CLRF  TRISA
   BANKSEL  PORTB
   CLRF   PORTB
   CLRF   PORTA
 
   BCF    PORTA,H
   BCF    PORTA,L
   CLRZ
    NOP
LOOP
    BANKSEL  TRISA
    BSF    TRISA,RC
     BCF    TRISA,RVCC
    BANKSEL  PORTA
LOOP1
        
         CLRF   TIMER
         CLRF   SUM
         CLRF   BCDLS
         CLRF   TIMER2
         CLRF   XIANZHIH
         CLRF   XIANZHIL
         MOVLW  0FFH
         MOVWF      XIANZHIBAI
         CLRF   BZH
         CLRF   JSQ2
         BSF    PORTA,RVCC
         CALL   CONG
        
LOOP2   
         BTFSS  PORTA,RC
         GOTO   OUT   
         INCF  TIMER,1;TIMER
         ;GOTO  LOOP2  ;http://211.100.30.165/search/?key=测试','_blank');" onmouseout=kwL(event); target=_blank>测试2
         BTFSC  BZH,FP ;选择分频
         GOTO   TWOFP
         MOVLW  D'1'  ;低分频单步短 o  5
         XORWF  TIMER,0
         BTFSS  STATUS,Z
         GOTO   LOOP2
         CLRF   TIMER
         INCF   TIMER2,1;TMER2最终计时
         MOVLW  D'60';判TIMER2是否到了60到了60采用另一分频
         XORWF  TIMER2,0
         BTFSC  STATUS,Z
         BSF    BZH,FP
         GOTO   LOOP2
TWOFP
         MOVLW  D'1'  ;高分频单步长o 11
         XORWF  TIMER,0
         BTFSS  STATUS,Z
         GOTO   LOOP2
         CLRF   TIMER
         INCF   TIMER2,1
         MOVLW  D'1' ;只有在-1的时候才显示负数
         XORWF  TIMER2,0;判断是否为-1在00时不显示负数
         BTFSC  STATUS,Z
         GOTO    SETFH ;转到设置负号
         MOVLW  D'120';判是否到了120如果到了,则为负值
         XORWF  TIMER2,0
         BTFSS  STATUS,Z
          GOTO   LOOP2
         ;CALL  SETFH
         BSF   BZH,ZEROFZ;置负数标志,因为是00所以不能置负号
         CLRF   TIMER2
         GOTO   LOOP2
SETFH  ;设置负号
         MOVLW  0BFH;040H
         MOVWF  XIANZHIBAI
         GOTO  LOOP2
OUT
         BSF   PORTA,RVCC
         BTFSC  BZH,ZEROFZ;如果是负值就不用减,如果是正值就应该减
         GOTO   CLFZ
         MOVF  TIMER2,0
         SUBLW  D'120'
         MOVWF  TIMER2
         MOVF  TIMER2,0 ;判断TIMER是不是有百位数
         MOVWF   JSQ2
         MOVLW  D'100'
         SUBWF  JSQ2,1
         BTFSS  STATUS,C
         GOTO   OUT_1
         MOVLW  0F9H;006H
         MOVWF  XIANZHIBAI
         MOVF   JSQ2,0
         MOVWF  TIMER2
                
OUT_1     CALL   BCDBIT
         GOTO   XIANSHI
CLFZ   ;负值处理 
         CALL  BCDBIT
         GOTO   XIANSHI
       
BCDBIT
         MOVLW  D'8'
         MOVWF  JSQ1
BCD_1
        RLF   TIMER2
        RLF   BCDLS,1
       
        DECFSZ JSQ1,1
        GOTO   TIAOZHEN
        RETURN
TIAOZHEN
        MOVLW  D'3'
        ADDWF  BCDLS,0
        MOVWF  SUM
        BTFSC  SUM,3
        MOVWF  BCDLS
        MOVLW  030H 
        ADDWF  BCDLS,0
        MOVWF  SUM
        BTFSC  SUM,7
        MOVWF  BCDLS
        GOTO  BCD_1
CONG
        BSF   PORTA,RVCC
        MOVLW  D'200'
        MOVWF  43H
        DECFSZ  43H
        GOTO  $-1
        BCF   PORTA,RVCC
        RETURN
                
XIANSHI
       MOVLW  D'8'
       MOVWF  JSQ2 ;一次显示循环次数,以免闪泺
;-----------显示L-------
XS       MOVF  BCDLS,0;读出两位十进制数
       ANDLW  00FH;去掉高四位
       MOVWF  XIANZHIL;低四位放在L
       SWAPF  BCDLS,1 ;高低交换,高在低位
       MOVLW  00FH;取高位值
       ANDWF  BCDLS,0;
       MOVWF  XIANZHIH;放到显示H中
       SWAPF  BCDLS,1;恢复BCDLS值
        BCF   PORTA,H;关H
        BCF   PORTA,L;关L
       
        CLRF  PORTB
        MOVF  XIANZHIL,0
        CALL  TAB
        MOVWF  PORTB
        BCF    PORTB,BAI
        BSF   PORTA,L;打开L
        CALL  YS;延时
      
;-----------显示H-------
        BCF   PORTA,H;关闭显示
        BCF   PORTA,L
       
        CLRF  PORTB
        MOVF  XIANZHIH,0
        CALL  TAB
        MOVWF  PORTB
        BCF    PORTB,7
        BSF   PORTA,H;开高
        CALL  YS
;-----------显示BAI-------
        BCF   PORTA,H;关
        BCF   PORTA,L
        ;BCF   PORTA,BAI
        CLRF  PORTB
        MOVF  XIANZHIBAI,0
        MOVWF  PORTB
        BSF    PORTB,7
       ; BSF    PORTA,BAI
         CALL  YS
       DECFSZ  JSQ2,1;判断循环4次到了没有
        GOTO  XS
        BCF   PORTB,7
        
      
WAIT
       ;CALL  CONG
       GOTO  LOOP1
TAB
      ADDWF  PCL,F
        RETLW        0XC0;0
        RETLW        0XF9;1
        RETLW        0XA4;2
        RETLW        0XB0;3
        RETLW        0X99;4
        RETLW        0X92;5
        RETLW        0X82;6
        RETLW        0XF8;7
        RETLW        0X80;8
        RETLW        0X90;9
        RETURN
YS
    MOVLW  H'0F'
    MOVWF  20H
YS_1    MOVLW  H'0F'
    MOVWF   21H
    DECFSZ  21H,1
    GOTO  $-1
    DECFSZ  20H,1
    GOTO  YS_1
    RETURN

   END

1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。
2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! 以上可能是本站收集或者转载的文章,本站可能没有文章中的元件或产品,如果您需要类似的商品请 点这里查看商品列表!
本站协议 | 版权信息 |  关于我们 |  本站地图 |  营业执照 |  发票说明 |  付款方式 |  联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102
E-mail:51dz$163.com($改为@);Tel:(0755)27947428
工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389