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

📄 drv100.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************DRV100********************
;本程序实现驱动TMP100实现温度测量,读取当前温度值后,改变TC100测量精度。
;入口参数:下次温度测量精度在SOU中(9~12位)。
;出口参数:9~12位的温度值在SOUH:SOU中(左对齐)。
;占用资源:W,STATUS,024H,025H,028H,SSP模块,1重堆栈。
;说明:    1.同步时钟频率为100KHZ。
;          2.地址选择线ADD0,ADD1均接地。
;          3.精度越低,转换速度越快。

           IFNDEF       DRV1001
            #DEFINE     DRV1001
            
DRV100     DECF         SOU,F
           SWAPF        SOU,F
           RLF          SOU,W          
           ANDLW        60H   
           MOVWF        TEMP1           ;由转换位数计算R1/R0
        
           MOVLW        08H             ;初始化SSPCON,
           MOVWF        SSPCON          ;IIC主控模式 
           BCF          PIR1,SSPIF
           BSF          STATUS,RP0
           BSF          TRISC,3         ;设置SCL为输入
           BSF          TRISC,4         ;设置SDA为输入
           MOVLW        80H             ;初始化SSPSTAT寄存器,
           MOVWF        SSPSTAT         ;传送速率为标准模式100KHZ
           MOVLW        09H             
           MOVWF        SSPADD          ;设定IIC时钟频率
           CLRF         SSPCON2         ;初始化SSPCON2
           BCF          PIE1,SSPIE      ;SSP中断禁止
           BCF          STATUS,RP0                 
           BSF          SSPCON,SSPEN    ;SSP模块使能
           BSF          STATUS,RP0
           BCF          TRISC,3         ;设置SCL为输出
           BCF          TRISC,4    

           BSF          SSPCON2,SEN     ;产生IIC启动信号           
           BCF          STATUS,RP0           
           BTFSS        PIR1,SSPIF      ;启动信号完成了吗?
           GOTO         $-1
           BCF          PIR1,SSPIF
           MOVLW        10010000B       ;TMP100地址和写信号
           MOVWF        SSPBUF
           BTFSS        PIR1,SSPIF      ;TMP100地址和写信号发送完了吗?
           GOTO         $-1
           BCF          PIR1,SSPIF
           CLRF         SSPBUF          ;寻址温度寄存器
           BTFSS        PIR1,SSPIF      ;寻址字节发送完了吗?
           GOTO         $-1
           BCF          PIR1,SSPIF
           
           BSF          STATUS,RP0
           BSF          SSPCON2,RSEN    ;产生IIC重启动信号           
           BCF          STATUS,RP0           
           BTFSS        PIR1,SSPIF      ;重启动完成了吗?
           GOTO         $-1
           BCF          PIR1,SSPIF
           
           MOVLW        10010001B       ;重新发送TC100地址
           MOVWF        SSPBUF          
           BTFSS        PIR1,SSPIF      ;地址发送完了吗?
           GOTO         $-1
           BCF          PIR1,SSPIF

           BSF          STATUS,RP0
           BSF          SSPCON2,RCEN    ;使能接收
           BTFSC        SSPCON2,RCEN    ;第一个字节接收完了吗?
           GOTO         $-1
           BCF          SSPCON2,ACKDT   ;应答
           BSF          SSPCON2,ACKEN   ;应答位使能  
           BTFSC        SSPCON2,ACKEN   ;应答完成?
           GOTO         $-1
           BCF          STATUS,RP0
           MOVF         SSPBUF,W
           MOVWF        SOUH            ;存放第一个字节
           BSF          STATUS,RP0
           BSF          SSPCON2,RCEN    ;使能接收
           BTFSC        SSPCON2,RCEN    ;第二个字节接收完了吗?
           GOTO         $-1
           BSF          SSPCON2,ACKDT   ;不应答
           BSF          SSPCON2,ACKEN   ;应答位使能  
           BTFSC        SSPCON2,ACKEN   ;应答完成?
           GOTO         $-1
           BCF          STATUS,RP0
           MOVF         SSPBUF,W
           MOVWF        SOU             ;存放第二个字节                   
           BSF          STATUS,RP0
           BSF          SSPCON2,RSEN    ;重启动位 
           BCF          STATUS,RP0
           BCF          PIR1,SSPIF  
           BTFSS        PIR1,SSPIF      ;重启动位发送完了吗?
           GOTO         $-1
           BCF          PIR1,SSPIF    
           MOVLW        10010000B       ;TMP100地址
           MOVWF        SSPBUF
           BTFSS        PIR1,SSPIF
           GOTO         $-1
           BCF          PIR1,SSPIF
           MOVLW        00000001B       ;配置寄存器寻址
           MOVWF        SSPBUF
           BTFSS        PIR1,SSPIF
           GOTO         $-1
           BCF          PIR1,SSPIF
           MOVF         TEMP1,W
           MOVWF        SSPBUF          ;发送转换精度
           BTFSS        PIR1,SSPIF
           GOTO         $-1
           BCF          PIR1,SSPIF
           BSF          STATUS,RP0
           BSF          SSPCON2,PEN     ;结束位 
           BCF          STATUS,RP0  
           BTFSS        PIR1,SSPIF      ;结束位发送完了吗?
           GOTO         $-1       
           BCF          PIR1,SSPIF   
           RETURN
          ENDIF

⌨️ 快捷键说明

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