⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adconvert.asm

📁 Microchip8位单片机系列, 16F690 A/D转换源程序.
💻 ASM
📖 第 1 页 / 共 3 页
字号:
      
      CALL SIMPLE                      ;Wait min sample time
      
      BSF ADCON0,GO                    ;Start conversion
      BCF STATUS,RP1                   ;
      BTFSC ADCON0,GO                  ;Is conversion done?
      GOTO $-1                         ;No, test again
      MOVF ADRESH,W                    ;Read upper 2 bits
      MOVWF 38H                        ;
      BSF STATUS,RP0                   ;Bank 1
      MOVF ADRESL,W                    ;Read lower 8 bits
      BCF STATUS,RP0                   ;Bank 0
      MOVWF 39H                        


     
;__________________________________________________________

                                       ;6
      BSF STATUS,RP0                   ;Bank 1
      BCF STATUS,RP1                   ;
      MOVLW 70h                        ;A/D RC clock
      MOVWF ADCON1                     ;
      BSF TRISC,7                      ;Set RC7 to input
      BCF STATUS,RP0                   ;Bank 2
      BSF STATUS,RP1                   ;
      BSF ANSELH,9                     ;Set RC7 to analog
      BCF STATUS,RP1                   ;Bank 0
      MOVLW b'11011001'                ;Right, Vdd Vref, AN6
      MOVWF ADCON0
      
      CALL SIMPLE                      ;Wait min sample time
      
      BSF ADCON0,GO                    ;Start conversion
      BCF STATUS,RP1                   ;
      BTFSC ADCON0,GO                  ;Is conversion done?
      GOTO $-1                         ;No, test again
      MOVF ADRESH,W                    ;Read upper 2 bits
      MOVWF 3aH                        ;
      BSF STATUS,RP0                   ;Bank 1
      MOVF ADRESL,W                    ;Read lower 8 bits
      BCF STATUS,RP0                   ;Bank 0
      MOVWF 3bH                        


;_________________________________________________________


                                       ;7
      BSF STATUS,RP0                   ;Bank 1
      BCF STATUS,RP1                   ;
      MOVLW 70h                        ;A/D RC clock
      MOVWF ADCON1                     ;
      BSF TRISC,6                      ;Set RC6 to input
      BCF STATUS,RP0                   ;Bank 2
      BSF STATUS,RP1                   ;
      BSF ANSELH,8                     ;Set RC6 to analognop
      BCF STATUS,RP1                   ;Bank 0
      MOVLW b'11011001'                ;Right, Vdd Vref, AN6
      MOVWF ADCON0
      
      CALL SIMPLE                      ;Wait min sample time
      
      BSF ADCON0,GO                    ;Start conversion
      BCF STATUS,RP1                   ;
      BTFSC ADCON0,GO                  ;Is conversion done?
      GOTO $-1                         ;No, test again
      MOVF ADRESH,W                    ;Read upper 2 bits
      MOVWF 3cH                        ;
      BSF STATUS,RP0                   ;Bank 1
      MOVF ADRESL,W                    ;Read lower 8 bits
      BCF STATUS,RP0                   ;Bank 0
      MOVWF 3dH   







;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
;      AD转换结束                结果*5     转10进制     转ASCII         
;————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
       BCF STATUS,RP0          ;选择BANK0
       BCF STATUS,RP1    

       MOVLW        0FFH        ;赋值试验
       MOVWF        30h
       MOVWF        31H

       MOVF         30H,0      ;把30H寄存器中 A|D转换结果高位内容传送给W
       MOVWF        40H        ;高位字节传送给40H
       MOVWF        41H        ;高位字节传送给41H  (存结果)
   
       MOVF         31H,0      ;把31H寄存器中 A|D转换结果低位内容传送给W
       MOVWF        42H        ;低位字节传送给42H
       MOVWF        43H        ;低位字节传送给43H   (存结果)
   
       call         x5
;............................................................

       MOVF        41H,0
       movwf       ACCBHI
       MOVF        43H,0
       movwf       ACCBLO          
       call        B2_BCD          
                                   
;............................................................

       call        ASCII
       MOVF        44H,0        ;ASCII码
       MOVWF       60H          ;
       MOVF        45H,0        ;
       MOVWF       61H
       MOVF        46H,0
       MOVWF       62H        
;_______________________________________________________________________________________________
                               ;2

       BCF STATUS,RP0          ;选择BANK0
       BCF STATUS,RP1    




       MOVF         32H,0      ;把32H寄存器中 A|D转换结果高位内容传送给W
       MOVWF        40H        ;高位字节传送给40H
       MOVWF        41H        ;高位字节传送给41H  (存结果)
   
       MOVF         33H,0      ;把33H寄存器中 A|D转换结果低位内容传送给W
       MOVWF        42H        ;低位字节传送给42H
       MOVWF        43H        ;低位字节传送给43H   (存结果)
   
       call         x5
;............................................................

       MOVF        41H,0
       movwf       ACCBHI
       MOVF        43H,0
       movwf       ACCBLO          
       call        B2_BCD          
                                   
;............................................................

       call        ASCII
       MOVF        44H,0
       MOVWF       63H
       MOVF        45H,0
       MOVWF       64H
       MOVF        46H,0
       MOVWF       65H        


;___________________________________________________________________________________________________
                               ;3

       BCF STATUS,RP0          ;选择BANK0
       BCF STATUS,RP1    




       MOVF         34H,0      ;把34H寄存器中 A|D转换结果高位内容传送给W
       MOVWF        40H        ;高位字节传送给40H
       MOVWF        41H        ;高位字节传送给41H  (存结果)
   
       MOVF         35H,0      ;把35H寄存器中 A|D转换结果低位内容传送给W
       MOVWF        42H        ;低位字节传送给42H
       MOVWF        43H        ;低位字节传送给43H   (存结果)
   
       call         x5
;............................................................

       MOVF        41H,0
       movwf       ACCBHI
       MOVF        43H,0
       movwf       ACCBLO          
       call        B2_BCD          
                                   
;............................................................

       call        ASCII
       MOVF        44H,0
       MOVWF       66H
       MOVF        45H,0
       MOVWF       67H
       MOVF        46H,0
       MOVWF       68H        
;_____________________________________________________________________________________________________
  
                               ;4
       BCF STATUS,RP0          ;选择BANK0
       BCF STATUS,RP1    



       MOVF         36H,0      ;把36H寄存器中 A|D转换结果高位内容传送给W
       MOVWF        40H        ;高位字节传送给40H
       MOVWF        41H        ;高位字节传送给41H  (存结果)
   
       MOVF         37H,0      ;把37H寄存器中 A|D转换结果低位内容传送给W
       MOVWF        42H        ;低位字节传送给42H
       MOVWF        43H        ;低位字节传送给43H   (存结果)
   
       call         x5
;............................................................

       MOVF        41H,0
       movwf       ACCBHI
       MOVF        43H,0
       movwf       ACCBLO          
       call        B2_BCD          
                                   
;............................................................

       call        ASCII
       MOVF        44H,0
       MOVWF       69H
       MOVF        45H,0
       MOVWF       6aH
       MOVF        46H,0
       MOVWF       6bH        
;_____________________________________________________________________________________________
                               ;5

       BCF STATUS,RP0          ;选择BANK0
       BCF STATUS,RP1    



       MOVF         38H,0      ;把38H寄存器中 A|D转换结果高位内容传送给W
       MOVWF        40H        ;高位字节传送给40H
       MOVWF        41H        ;高位字节传送给41H  (存结果)
   
       MOVF         39H,0      ;把39H寄存器中 A|D转换结果低位内容传送给W
       MOVWF        42H        ;低位字节传送给42H
       MOVWF        43H        ;低位字节传送给43H   (存结果)
   
       call         x5
;............................................................

       MOVF        41H,0
       movwf       ACCBHI
       MOVF        43H,0
       movwf       ACCBLO          
       call        B2_BCD          
                                   
;............................................................

       call        ASCII
       MOVF        44H,0
       MOVWF       6cH
       MOVF        45H,0
       MOVWF       6dH
       MOVF        46H,0
       MOVWF       6eH        
;____________________________________________________________________________________________________
                               ;6

       BCF STATUS,RP0          ;选择BANK0
       BCF STATUS,RP1    



       MOVF         3aH,0      ;把3aH寄存器中 A|D转换结果高位内容传送给W
       MOVWF        40H        ;高位字节传送给40H
       MOVWF        41H        ;高位字节传送给41H  (存结果)
   
       MOVF         3bH,0      ;把3bH寄存器中 A|D转换结果低位内容传送给W
       MOVWF        42H        ;低位字节传送给42H
       MOVWF        43H        ;低位字节传送给43H   (存结果)
   
       call         x5
;............................................................

       MOVF        41H,0
       movwf       ACCBHI
       MOVF        43H,0
       movwf       ACCBLO          
       call        B2_BCD          
                                   
;............................................................

       call        ASCII
       MOVF        44H,0
       MOVWF       70H
       MOVF        45H,0
       MOVWF       71H
       MOVF        46H,0
       MOVWF       72H        
;____________________________________________________________________________________________________
                               ;7

       BCF STATUS,RP0          ;选择BANK0
       BCF STATUS,RP1    
       
 
       MOVLW       0FFH       ;赋值实验
       MOVWF       3CH
       MOVWF       3DH 



       MOVF         3cH,0      ;把3cH寄存器中 A|D转换结果高位内容传送给W
       MOVWF        40H        ;高位字节传送给40H
       MOVWF        41H        ;高位字节传送给41H  (存结果)
   
       MOVF         3dH,0      ;把3dH寄存器中 A|D转换结果低位内容传送给W
       MOVWF        42H        ;低位字节传送给42H
       MOVWF        43H        ;低位字节传送给43H   (存结果)
   
       call         x5
;............................................................

       MOVF        41H,0
       movwf       ACCBHI
       MOVF        43H,0
       movwf       ACCBLO          
       call        B2_BCD          
                                   
;............................................................

       call        ASCII
       MOVF        44H,0
       MOVWF       73H
       MOVF        45H,0
       MOVWF       74H
       MOVF        46H,0
       MOVWF       75H        
;____________________________________________________________________________________________________
;AD转换结果转ASCII码结束
;____________________________________________________________________________________________________




;---------------------------------------------------------------------------------
;               占用IIC总线
;---------------------------------------------------------------------------------

;testiic         BTFSC     PORTB,5       ;测试RB5口是否为0,为0则IIC总线空闲
;                GOTO      testiic

EGRIIC          BCF       STATUS,RP0    ;占用IIC总线  
                BCF       STATUS,RP0    ;选BANK0     
                BTFSC     RB,5          ;测试RB5口是否为0,为0则IIC总线空闲
                GOTO      MEGRIIC       ;总线忙则转到MEGRIIC
                GOTO      MLP           ;总线不忙则转到MLP
                
MEGRIIC         NOP                     ;BSF       RE,0          ;声音打开
                NOP                     ;等IIC变为空闲
                NOP
                GOTO      EGRIIC
                
MLP             BSF       STATUS,RP0    ;选BANK1
                ;MOVLW     0XE0          ;rb4 为O
                ;MOVWF     TRISB
                
                
                BCF       TRISB,5       ;置0为输出
                BCF       STATUS,RP0    ;选BANK0
                ;BSF       RE,0          ;消除声音
                BSF       RB,5          ;IIC占用为1
                BSF       ICSTA,0       ;SET 标志
                RETURN-








;--------------------------------------------------------------     
;***************把ASCII 写入 24LC64****************************   
 TEST64    
               CLRF      DATAI
               ;CALL      RBINIT
               CALL      IICINIT
               
               MOVLW     0X01            ;0100单元
               MOVWF     ADDH
               MOVLW     0X00
               MOVWF     ADDL
  
             
               MOVF      60H,0
               MOVWF     DATA0          ;把60H中ASCII码结果存入DATA0
               CALL      YYYY           ;WR 24LC64
 
              
               INCF      ADDL,1         ;0101单元
               MOVF      61H            ;
               MOVWF     DATA0
               CALL      YYYY           ;WR 24LC64
               

               INCF      ADDL,1         ;0102单元
               MOVF      62H            ;
               MOVWF     DATA0
               CALL      YYYY           ;WR 24LC64


               INCF      ADDL,1         ;0103单元
               MOVF      63H            ;
               MOVWF     DATA0
               CALL      YYYY           ;WR 24LC64


               INCF      ADDL,1         ;0104单元
               MOVF      64H            ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -