📄 wrwd4.asm
字号:
;与MCP3421通讯
;MCP3421的代码为1101
;MCP3421的地址为000-111
;第0位为0,是写,1是读
;***
;启动转换到稳定的送出数据
;18位:230ms
;16位:60ms
;14位:15ms
;12位:4ms
;***
;思路:先用100欧姆精密电阻测出3421的数据,作为基准.
; 然后算出被测温度探头的电阻值,查表计算出温度值
; 被测温度探头的电阻值=100*Y/X
; Y是被测温度探头的3421数据 X是100欧姆精密电阻测出3421的数据
#INCLUDE "D:\PROGRAM FILES\MPLAB\P16c77.INC";
__CONFIG _BODEN_OFF & _CP_ALL & _PWRTE_OFF & _WDT_OFF & _XT_OSC
CBLOCK 20H
CNT,COUNT,COUNT1,COUNT2
;读3421过渡寄存器
ADC_V1,ADC_V2,ADC_V3
;100欧姆的3421值
ADC_BZ1,ADC_BZ2,ADC_BZ3
;AD过渡寄存器
ADC_GD0,ADC_GD1,ADC_GD2,ADC_GD3
;查表寄存器
TAB,NUMBH,NUMBL,DZZH,DZZL
DZCZH,DZCZL,TEMPGD
;与3421或24C02通讯用的寄存器
FLAG,TXBUF,RXBUF,COUNT3,ADDRL
;乘除用的寄存器
ACCAH,ACCAL,ACCBH,ACCBL,ACCCH,ACCCL,ACCDH,ACCDL,ACCEH,ACCEL,TEMPCC
;SZBZ为标志位寄存器
;SMGZ为送数码管寄存器
SZBZ,SMGZ
;BIN2BCD寄存器
DDH,DDL,DBH,DBM,DBL,TEMP
;电阻值
BCDZH,BCDZL
;0.5时基寄存器
CNTS,CNTYS
ENDC
;#DEFINE SDA_DIR PORTC,4
;#DEFINE SCL_DIR PORTC,3
#DEFINE SDA PORTA,3
#DEFINE SCL PORTA,2
#DEFINE XA PORTA,1
#DEFINE XB PORTA,0
#DEFINE SB1 PORTA,4
#DEFINE SB2 PORTA,5
#DEFINE HS4 PORTC,3;最高位数码管总线
#DEFINE HS3 PORTC,2;第三位数码管总线
#DEFINE HS2 PORTC,1;第二位数码管总线
#DEFINE HS1 PORTC,0;最低位数码管总线
;==
#DEFINE SB1BZ SZBZ,0
#DEFINE WDFZ SZBZ,1;温度负值
#DEFINE CWBZ SZBZ,2;出错标志
#DEFINE BZZC SZBZ,3;100欧姆的参数值错误
#DEFINE SB2BZ SZBZ,4;按SB2切换显示温度
#DEFINE SB2G SZBZ,5;SB2高
#DEFINE XSDZ SZBZ,6;显示电阻值
#DEFINE MYS SZBZ,7;秒标志
;================
;-----------------------------
ORG 0
GOTO MAIN
;-----------------------------
;电阻值表格
WTAB MOVLW HIGH(DZZBZ_0)
MOVWF PCLATH
MOVF TAB,W
ADDLW LOW(DZZBZ_0)
SKPNC
INCF PCLATH,F
MOVWF PCL
DZZBZ_0
; RETLW 7 ;-200 1
; RETLW 3C
; RETLW 8 ;-190 2
; RETLW 0EB
; RETLW 0A ;-180 3
; RETLW 96
; RETLW 0C ;-170 4
; RETLW 3E
; RETLW 0D ;-160 5
; RETLW 0E2
; RETLW 0F ;-150 6
; RETLW 84
; RETLW 11 ;-140 7
; RETLW 24
; RETLW 12 ;-130 8
; RETLW 0C0
; RETLW 14 ;-120 9
; RETLW 5B
; RETLW 15 ;-110 10
; RETLW 0F3
RETLW 17 ;-100 1
RETLW 8A
RETLW 19 ;-90 2
RETLW 1E
RETLW 1A ;-80 3
RETLW 0B1
RETLW 1C ;-70 4
RETLW 41
RETLW 1D ;-60 5
RETLW 0D1
RETLW 1F ;-50 6
RETLW 5F
RETLW 20 ;-40 7
RETLW 0EB
RETLW 22 ;-30 8
RETLW 76
RETLW 24 ;-20 9
RETLW 00
RETLW 25 ;-10 10
RETLW 89
RETLW 27 ;0 11
RETLW 10
RETLW 28 ;10 12
RETLW 96
RETLW 2A ;20 13
RETLW 1B
RETLW 2B ;30 14
RETLW 9F
RETLW 2D ;40 15
RETLW 22
RETLW 2E ;50 16
RETLW 0A4
RETLW 30 ;60 17
RETLW 24
RETLW 31 ;70 18
RETLW 0A4
RETLW 33 ;80 19
RETLW 22
RETLW 34 ;90 20
RETLW 9F
RETLW 36 ;100 21
RETLW 1B
RETLW 37 ;110 22
RETLW 95
RETLW 39 ;120 23
RETLW 0F
RETLW 3A ;130 24
RETLW 87
RETLW 3B ;140 25
RETLW 0FE
RETLW 3D ;150 26
RETLW 75
RETLW 3E ;160 27
RETLW 0E9
RETLW 40 ;170 28
RETLW 5D
RETLW 41 ;180 29
RETLW 0D0
RETLW 43 ;190 30
RETLW 41
RETLW 44 ;200 31
RETLW 0B2
RETLW 46 ;210 32
RETLW 21
RETLW 47 ;220 33
RETLW 8F
RETLW 48 ;230 34
RETLW 0FC
RETLW 4A ;240 35
RETLW 67
RETLW 4B ;250 36
RETLW 0D2
RETLW 4D ;260 37
RETLW 3B
RETLW 4E ;270 38
RETLW 0A3
RETLW 50 ;280 39
RETLW 0A
RETLW 51 ;290 40
RETLW 70
RETLW 52 ;300 41
RETLW 0D5
RETLW 54 ;310 42
RETLW 39
RETLW 55 ;320 43
RETLW 9B
RETLW 56 ;330 44
RETLW 0FC
RETLW 58 ;340 45
RETLW 5D
RETLW 59 ;350 46
RETLW 0BC
RETLW 5B ;360 47
RETLW 19
RETLW 5C ;370 48
RETLW 76
RETLW 5D ;380 49
RETLW 0D2
RETLW 5F ;390 50
RETLW 2C
RETLW 60 ;400 51
RETLW 85
RETLW 61 ;410 52
RETLW 0DD
RETLW 63 ;420 53
RETLW 34
RETLW 64 ;430 54
RETLW 8A
RETLW 65 ;440 55
RETLW 0DD
RETLW 67 ;450 56
RETLW 32
RETLW 68 ;460 57
RETLW 84
RETLW 69 ;470 58
RETLW 0D5
RETLW 6B ;480 59
RETLW 25
RETLW 6C ;490 60
RETLW 74
RETLW 6D ;500 61
RETLW 0C2
RETLW 6F ;510 62
RETLW 0E
RETLW 70 ;520 63
RETLW 5A
RETLW 71 ;530 64
RETLW 0A4
RETLW 72 ;540 65
RETLW 0EC
RETLW 74 ;550 66
RETLW 35
RETLW 75 ;560 67
RETLW 7B
RETLW 76 ;570 68
RETLW 0C1
RETLW 78 ;580 69
RETLW 05
RETLW 79 ;590 70
RETLW 49
RETLW 7A ;600 71
RETLW 8A
RETLW 7B ;610 72
RETLW 0CC
RETLW 7D ;620 73
RETLW 0C
RETLW 7E ;630 74
RETLW 4A
RETLW 7F ;640 75
RETLW 88
RETLW 80 ;650 76
RETLW 0C4
;----------------------------------
KTAB
MOVLW HIGH(XSBZ_0)
MOVWF PCLATH
MOVF TAB,W
ADDLW LOW(XSBZ_0)
SKPNC
INCF PCLATH,F
MOVWF PCL
XSBZ_0
; RETLW 1 ;1
; RETLW 0AF
; RETLW 1 ;2
; RETLW 0AB
; RETLW 1 ;3
; RETLW 0A8
; RETLW 1 ;4
; RETLW 0A4
; RETLW 1 ;5
; RETLW 0A2
; RETLW 1 ;6
; RETLW 0A0
; RETLW 1 ;7
; RETLW 09C
; RETLW 1 ;8
; RETLW 09B
; RETLW 1 ;9
; RETLW 098
; RETLW 1 ;10
; RETLW 097
RETLW 1 ;11
RETLW 93
RETLW 1 ;12
RETLW 92
RETLW 1 ;13
RETLW 91
RETLW 1 ;14
RETLW 90
RETLW 1 ;15
RETLW 8E
RETLW 1 ;16
RETLW 8C
RETLW 1 ;17
RETLW 8B
RETLW 1 ;18
RETLW 8A
RETLW 1 ;19
RETLW 89
RETLW 1 ;20
RETLW 87
RETLW 1 ;21
RETLW 86
RETLW 1 ;22
RETLW 85
RETLW 1 ;23
RETLW 84
RETLW 1 ;24
RETLW 83
RETLW 1 ;25
RETLW 82
RETLW 1 ;26
RETLW 80
RETLW 1 ;27
RETLW 7F
RETLW 1 ;28
RETLW 7E
RETLW 1 ;29
RETLW 7D
RETLW 1 ;30
RETLW 7C
RETLW 1 ;31
RETLW 7B
RETLW 1 ;32
RETLW 7A
RETLW 1 ;33
RETLW 78
RETLW 1 ;34
RETLW 77
RETLW 1 ;35
RETLW 76
RETLW 1 ;36
RETLW 75
RETLW 1 ;37
RETLW 74
RETLW 1 ;38
RETLW 73
RETLW 1 ;39
RETLW 71
RETLW 1 ;40
RETLW 70
RETLW 1 ;41
RETLW 6F
RETLW 1 ;42
RETLW 6E
RETLW 1 ;43
RETLW 6D
RETLW 1 ;44
RETLW 6C
RETLW 1 ;45
RETLW 6B
RETLW 1 ;46
RETLW 69
RETLW 1 ;47
RETLW 68
RETLW 1 ;48
RETLW 67
RETLW 1 ;49
RETLW 66
RETLW 1 ;50
RETLW 65
RETLW 1 ;51
RETLW 64
RETLW 1 ;52
RETLW 62
RETLW 1 ;53
RETLW 61
RETLW 1 ;54
RETLW 60
RETLW 1 ;55
RETLW 5F
RETLW 1 ;56
RETLW 5E
RETLW 1 ;57
RETLW 5D
RETLW 1 ;58
RETLW 5C
RETLW 1 ;59
RETLW 5A
RETLW 1 ;60
RETLW 59
RETLW 1 ;61
RETLW 58
RETLW 1 ;62
RETLW 57
RETLW 1 ;63
RETLW 56
RETLW 1 ;64
RETLW 54
RETLW 1 ;65
RETLW 53
RETLW 1 ;66
RETLW 52
RETLW 1 ;67
RETLW 51
RETLW 1 ;68
RETLW 50
RETLW 1 ;69
RETLW 4F
RETLW 1 ;70
RETLW 4E
RETLW 1 ;71
RETLW 4D
RETLW 1 ;72
RETLW 4C
RETLW 1 ;73
RETLW 4A
RETLW 1 ;74
RETLW 49
RETLW 1 ;75
RETLW 48
RETLW 1 ;76
RETLW 46
RETLW 1 ;77
RETLW 46
RETLW 1 ;78
RETLW 44
RETLW 1 ;79
RETLW 43
RETLW 1 ;80
RETLW 42
RETLW 1 ;81
RETLW 41
RETLW 1 ;82
RETLW 40
RETLW 1 ;83
RETLW 3F
RETLW 1 ;84
RETLW 3E
RETLW 1 ;85
RETLW 3C
;---------------------------------
TX
PAGESEL TX
MOVLW 8
MOVWF COUNT3
TXLP
BCF FLAG,0
BTFSC TXBUF,7
BSF FLAG,0
BSF 3,5
; BCF SDA
BCF SCL
BCF 3,5
BTFSS FLAG,0
GOTO TX0
BSF 3,5
BSF SDA
BCF 3,5
GOTO TX1
TX0
BCF SDA
BSF 3,5
BCF SDA
BCF 3,5
TX1 CLRWDT
BSF 3,5
BSF SCL
BCF 3,5
BCF SCL
BSF 3,5
BCF SCL
BCF 3,5
NOP
NOP
RLF TXBUF,1
DECFSZ COUNT3,1
GOTO TXLP
BSF 3,5
BSF SDA
BCF 3,5
NOP
BCF FLAG,1
BSF 3,5
BSF SCL
BCF 3,5
B2 BTFSC SDA
GOTO B1
BCF SCL
BSF 3,5
BCF SCL
BCF 3,5
RETLW 0
B1 BSF FLAG,1
RETURN
;-----------------------------
BSTOP BSF 3,5
BCF 3,6
BCF SDA
BCF SCL
BCF 3,5
BCF SCL
BCF SDA
NOP
BSF 3,5
BSF SCL
NOP
BSF SDA
NOP
BCF SCL
BSF 3,5
BCF SCL
BCF 3,5
RETLW 0
;-----------------------------
RX
PAGESEL RX
MOVLW 8
MOVWF COUNT3
CLRF RXBUF
BSF 3,5
BSF SDA
RXLP
BSF 3,5
BCF 3,6
BSF SCL
BCF 3,5
BCF 3,0
RLF RXBUF,1
BTFSC SDA
BSF RXBUF,0
BCF SCL
BSF 3,5
BCF SCL
BCF 3,5
DECFSZ COUNT3,1
GOTO RXLP
RETLW 0
;----------------------------
BSTART
BSF 3,5
BCF 3,6
BSF SDA
BSF SCL
BCF 3,5
BSF SDA
BSF SCL
NOP
BSF 3,5
BCF SDA
NOP
BCF SCL
BCF 3,5
BCF SDA
NOP
BCF SCL
RETLW 0
;----------------------------
WRBYTE_3421
PAGESEL WRBYTE_3421
BCF 3,5
BCF 3,6
WRLC_3421
MOVLW B'11010110';1101为MCP3421代码,011为地址,0为写
MOVWF TXBUF
CALL BSTART
CALL TX
BTFSC FLAG,1
GOTO WRLC_3421
; MOVLW B'10000000
; CALL TX
WRLC_3421_1
MOVLW B'10001100';BIT,4为0,单次转换,BIT,7为1,启动单次转换,BIT.3,2为转换位数
MOVWF TXBUF
CALL TX
BTFSC FLAG,1
GOTO WRLC_3421
; MOVLW B'10000000'
; MOVWF TXBUF
; CALL TX
; MOVLW B'00010011'
; MOVWF TXBUF
; CALL TX
; MOVLW B'00010011'
; MOVWF TXBUF
; CALL TX
CALL BSTOP
RETLW 0
;----------------------------
WRBYTE_02
PAGESEL WRBYTE_02
BCF 3,5
BCF 3,6
WRLC02 MOVLW B'10100000'
MOVWF TXBUF
CALL BSTART
CALL TX
BTFSC FLAG,1
GOTO WRLC02
; MOVF ADDRH,W
; MOVWF TXBUF
; CALL TX
; BTFSC FLAG,1
; GOTO WRLC02
MOVF ADDRL,W
MOVWF TXBUF
CALL TX
BTFSC FLAG,1
GOTO WRLC02
WRLOOP CLRWDT
MOVF 0,W
MOVWF TXBUF
CALL TX
BTFSC FLAG,1
GOTO WRLC02
INCF 4,1
DECFSZ COUNT1,1
GOTO WRLOOP
CALL BSTOP
RETLW 0
;----------------------------
RDBYTE_02
BCF 3,5
BCF 3,6
CLRF FLAG
RDLC02 MOVLW B'10100000'
MOVWF TXBUF
CALL BSTART
CALL TX
BTFSC FLAG,1
GOTO RDLC02
; MOVF ADDRH,W
; MOVWF TXBUF
; CALL TX
MOVF ADDRL,W
MOVWF TXBUF
CALL TX
BTFSC FLAG,1
GOTO RDLC02
CALL BSTART
MOVLW B'10100001'
MOVWF TXBUF
CALL TX
BTFSC FLAG,1
GOTO RDLC02
GOTO RDLOOP
;--------------------------
RDBYTE_3421
PAGESEL RDBYTE_3421
BCF 3,5
BCF 3,6
CLRF FLAG
RDLC_3421
MOVLW B'11010111';1101为MCP3421代码,011为地址,1为读
MOVWF TXBUF
CALL BSTART
CALL TX
BTFSC FLAG,1
GOTO RDLC_3421
RDLOOP
CLRWDT
CALL RX
MOVF RXBUF,W
MOVWF 0
INCF 4,1
DECFSZ COUNT1,1
GOTO LOWACK
BSF 3,5
BSF SDA
BSF SCL
BCF 3,5
; BSF SDA
; BSF SCL
NOP
NOP
BSF 3,5
BCF SCL
BCF 3,5
BCF SCL
CALL BSTOP
RETLW 0
LOWACK
BSF 3,5
BCF SDA
BCF SCL
BCF 3,5
BCF SDA
NOP
BSF 3,5
BSF SCL
NOP
BCF SCL
BCF 3,5
BCF SCL
GOTO RDLOOP
;-------------------------
;=======
T100MS
MOVLW .100
MOVWF COUNT1
GOTO T1MS_1
;-----------------------------
T200MS
MOVLW .70
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -