📄 ds1620.lst
字号:
CYASM Version 2.04
(C) 1998,1999,2000,2001,2002,2003, 2004 Cypress Semiconductor Corp.
**** Warning : Unable to open config file, 'ds1620.hex': Using default values.
;*******************************************************************************************
; DS1620.asm - DS1620采集温度的主程序
;*******************************************************************************************
;******************************************************************************
; DS1620.inc -DS1620的头文件
;******************************************************************************
0001= ThermControlOneShot: equ 01h
0002= ThermControlCPUUse: equ 02h
0010= ThermControlNVB: equ 10h
0080= ThermControlDone: equ 80h
0060= ThermControlFlags: equ 60h
00AA= ThermReadTemp: equ AAh
0001= ThermWriteTempHigh: equ 01h
0002= ThermWriteTempLow: equ 02h
00A1= ThermReadTempHigh: equ A1h
00A2= ThermReadTempLow: equ A2h
00A0= ThermReadCounter: equ A0h
00A9= ThermReadSlope: equ A9h
00EE= ThermStartConvert: equ EEh
0022= ThermStopConvert: equ 22h
000C= ThermWriteConfig: equ 0Ch
00AC= ThermReadConfig: equ ACh
;=====================文件完毕========================
0000= ThermPort: equ 00h
0007= ThermMaskBits: equ 07h
0001= ThermData: equ 01h
0002= ThermClock: equ 02h
0004= ThermReset: equ 04h
0030= gbThermCommand: equ 30h
0031= gbThermDataValueLow: equ 31h
0032= gbThermDataValueHigh: equ 32h
0033= gbThermPortValue: equ 33h
0034= gbThermTHValueLow: equ 34h
0035= gbThermTHValueHigh: equ 35h
0036= gbThermTLValueLow: equ 36h
0037= gbThermTLValueHigh: equ 37h
0078= gbThermTempLow: equ 78h
0079= gbThermTempHigh: equ 79h
;********************************************************************************************
; ThermInitialize()
;**********************************************************************************************
0000 ThermInitialize:
0000 19 AC [04] mov a,ThermReadConfig
0002 90 97 [10] call ThermPortRead8
0004 1A 31 [05] mov a,[gbThermDataValueLow]
0006 10 03 [04] and a,ThermControlOneShot | ThermControlCPUUse
0008 16 02 [05] cmp a,ThermControlCPUUse
000A A0 1C [05] jz ThermInitDone
000C 1A 31 [05] mov a,[gbThermDataValueLow]
000E 10 FC [04] and a,~(ThermControlOneShot | ThermControlCPUUse)
0010 0D 0A [04] or a,ThermControlCPUUse | 08h
0012 31 31 [05] mov [gbThermDataValueLow],a
0014 19 0C [04] mov a,ThermWriteConfig
0016 90 A6 [10] call ThermPortWrite8
0018 19 0A [04] mov a,10
**** Warning : Unable to resolve operand 'SysDelayMS'
48.20: call SysDelayMS
001A 90 00 [10] call SysDelayMS
001C ThermInitDone:
001C 19 EE [04] mov a,ThermStartConvert
001E 31 30 [05] mov [gbThermCommand],a
0020 90 7C [10] call ThermPortResetHigh
0022 90 CD [10] call ThermPortCommandWrite
0024 90 85 [10] call ThermPortResetLow
0026 3F [08] ret
;*******************************************************************************
; ThermReadTemperature()
;*******************************************************************************
0027 ThermReadTemperature:
0027 19 00 [04] mov a,0
0029 31 31 [05] mov [gbThermDataValueLow],a
002B 31 32 [05] mov [gbThermDataValueHigh],a
002D 19 AA [04] mov a,ThermReadTemp
002F 90 B1 [10] Call ThermPortRead9
0031 1A 31 [05] mov a,[gbThermDataValueLow]
0033 31 78 [05] mov [gbThermTempLow],a
0035 1A 32 [05] mov a,[gbThermDataValueHigh]
0037 31 79 [05] mov [gbThermTempHigh],a
0039 3F [08] ret
;*******************************************************************************
; ThermSetTH()
;*******************************************************************************
003A ThermSetTH:
003A 19 A1 [04] mov a,ThermReadTempHigh
003C 90 B1 [10] Call ThermPortRead9
003E 1A 31 [05] mov a,[gbThermDataValueLow]
0040 17 34 [07] cmp a,[gbThermTHValueLow]
0042 B0 4A [05] jnz WriteTempTH
0044 1A 32 [05] mov a,[gbThermDataValueHigh]
0046 17 35 [07] cmp a,[gbThermTHValueHigh]
0048 A0 5A [05] jz ThermSetTHDone
004A WriteTempTH:
004A 1A 34 [05] mov a,[gbThermTHValueLow]
004C 31 31 [05] mov [gbThermDataValueLow],a
004E 1A 35 [05] mov a,[gbThermTHValueHigh]
0050 31 32 [05] mov [gbThermDataValueHigh],a
0052 19 01 [04] mov a,ThermWriteTempHigh
0054 90 C2 [10] call ThermPortWrite9
0056 19 0A [04] mov a,10
**** Warning : Unable to resolve operand 'SysDelayMS'
99.24: call SysDelayMS
0058 90 00 [10] call SysDelayMS
005A ThermSetTHDone:
005A 3F [08] ret
;*******************************************************************************
; ThermSetTL()
;*******************************************************************************
005B ThermSetTL:
005B 19 A2 [04] mov a,ThermReadTempLow
005D 90 B1 [10] Call ThermPortRead9
005F 1A 31 [05] mov a,[gbThermDataValueLow]
0061 17 36 [07] cmp a,[gbThermTLValueLow]
0063 B0 6B [05] jnz WriteTempTL
0065 1A 32 [05] mov a,[gbThermDataValueHigh]
0067 17 37 [07] cmp a,[gbThermTLValueHigh]
0069 A0 7B [05] jz ThermSetTLDone
006B WriteTempTL:
006B 1A 36 [05] mov a,[gbThermTLValueLow]
006D 31 31 [05] mov [gbThermDataValueLow],a
006F 1A 37 [05] mov a,[gbThermTLValueHigh]
0071 31 32 [05] mov [gbThermDataValueHigh],a
0073 19 02 [04] mov a,ThermWriteTempLow
0075 90 C2 [10] call ThermPortWrite9
0077 19 0A [04] mov a,10
**** Warning : Unable to resolve operand 'SysDelayMS'
127.24: call SysDelayMS
0079 90 00 [10] call SysDelayMS
007B ThermSetTLDone:
007B 3F [08] ret
;***********************************************************************************
; ThermPortResetHigh()
;***********************************************************************************
007C ThermPortResetHigh:
007C 29 00 [05] iord ThermPort
007E 0D 04 [04] or a,ThermReset
0080 2A 00 [05] iowr ThermPort
0082 31 33 [05] mov [gbThermPortValue],a
0084 3F [08] ret
;*******************************************************************************
; ThermPortResetLow()
;*******************************************************************************
0085 ThermPortResetLow:
0085 1A 33 [05] mov a,[gbThermPortValue]
0087 10 FB [04] and a,~ThermReset
0089 2A 00 [05] iowr ThermPort
008B 3F [08] ret
;*******************************************************************************
; ThermWaitForDone()
;*******************************************************************************
008C ThermWaitForDone:
008C 19 AC [04] mov a,ThermReadConfig
008E 90 97 [10] call ThermPortRead8
0090 1A 31 [05] mov a,[gbThermDataValueLow]
0092 10 80 [04] and a,ThermControlDone
0094 A0 8C [05] jz ThermWaitForDone
0096 3F [08] ret
;*******************************************************************************
; ThermPortRead8()
;*******************************************************************************
0097 ThermPortRead8:
0097 31 30 [05] mov [gbThermCommand],a
0099 19 00 [04] mov a,0
009B 31 31 [05] mov [gbThermDataValueLow],a
009D 90 7C [10] call ThermPortResetHigh
009F 90 CD [10] call ThermPortCommandWrite
00A1 90 DA [10] call ThermPortRead8Bits
00A3 90 85 [10] call ThermPortResetLow
00A5 3F [08] ret
;*******************************************************************************
; ThermPortWrite8()
;*******************************************************************************
00A6 ThermPortWrite8:
00A6 31 30 [05] mov [gbThermCommand],a
00A8 90 7C [10] call ThermPortResetHigh
00AA 90 CD [10] call ThermPortCommandWrite
00AC 91 10 [10] call ThermPortWrite8Bits
00AE 90 85 [10] call ThermPortResetLow
00B0 3F [08] ret
;*******************************************************************************
; ThermPortRead9()
;*******************************************************************************
00B1 ThermPortRead9:
00B1 31 30 [05] mov [gbThermCommand],a
00B3 19 00 [04] mov a,0
00B5 31 31 [05] mov [gbThermDataValueLow],a
00B7 31 32 [05] mov [gbThermDataValueHigh],a
00B9 90 7C [10] call ThermPortResetHigh
00BB 90 CD [10] call ThermPortCommandWrite
00BD 91 49 [10] call ThermPortRead9Bits
00BF 90 85 [10] call ThermPortResetLow
00C1 3F [08] ret
;*******************************************************************************
; ThermPortWrite9()
;*******************************************************************************
00C2 ThermPortWrite9:
00C2 31 30 [05] mov [gbThermCommand],a
00C4 90 7C [10] call ThermPortResetHigh
00C6 90 CD [10] call ThermPortCommandWrite
00C8 91 A2 [10] call ThermPortWrite9Bits
00CA 90 85 [10] call ThermPortResetLow
00CC 3F [08] ret
;*******************************************************************************
; ThermPortCommandWrite()
;*******************************************************************************
00CD ThermPortCommandWrite:
00CD 1A 31 [05] mov a,[gbThermDataValueLow]
00CF 2D [05] push a
00D0 1A 30 [05] mov a,[gbThermCommand]
00D2 31 31 [05] mov [gbThermDataValueLow],a
00D4 91 10 [10] call ThermPortWrite8Bits
00D6 2B [04] pop a
00D7 31 31 [05] mov [gbThermDataValueLow],a
00D9 3F [08] ret
;*******************************************************************************
; ThermPortRead8Bits()
;*******************************************************************************
00DA ThermPortRead8Bits:
00DA 19 01 [04] mov a,1
00DC 2D [05] push a
00DD 2C [04] pop x
00DE 19 08 [04] mov a,8
00E0 ThermPortRead8BitLoop:
00E0 2D [05] push a
;*********************************************
00E1 1A 33 [05] mov a,[gbThermPortValue]
00E3 0D 01 [04] or a,ThermData
00E5 31 33 [05] mov [gbThermPortValue],a
00E7 2A 00 [05] iowr ThermPort
00E9 1A 33 [05] mov a,[gbThermPortValue]
00EB 10 FD [04] and a,~ThermClock
00ED 31 33 [05] mov [gbThermPortValue],a
00EF 2A 00 [05] iowr ThermPort
00F1 29 00 [05] iord ThermPort
00F3 10 01 [04] and a,ThermData
00F5 B0 F9 [05] jnz ThermPortRead8BitValue1
00F7 ThermPortRead8BitValue0:
00F7 80 FD [05] jmp ThermPortRead8BitClock
00F9 ThermPortRead8BitValue1:
00F9 2E [05] push x
00FA 2B [04] pop a
00FB 33 31 [07] or [gbThermDataValueLow],a
;jmp ThermPortRead8BitClock
00FD ThermPortRead8BitClock:
00FD 1A 33 [05] mov a,[gbThermPortValue]
00FF 1F [04] XPAGE
0100 0D 02 [04] or a,ThermClock
0102 31 33 [05] mov [gbThermPortValue],a
0104 2A 00 [05] iowr ThermPort
0106 2E [05] push x
0107 2B [04] pop a
0108 3B [04] asl a
0109 2D [05] push a
010A 2C [04] pop x
;*********************************************
010B 2B [04] pop a
010C 25 [04] dec a
010D B0 E0 [05] jnz ThermPortRead8BitLoop
010F 3F [08] ret
;*******************************************************************************
; ThermPortWrite8Bits()
;*******************************************************************************
0110 ThermPortWrite8Bits:
0110 19 01 [04] mov a,1
0112 2D [05] push a
0113 2C [04] pop x
0114 19 08 [04] mov a,8
0116 ThermPortWrite8BitLoop:
0116 2D [05] push a
0117 2E [05] push x
0118 2B [04] pop a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -