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

📄 ds1620.lst

📁 温度显示器,用CYPRESS IC
💻 LST
📖 第 1 页 / 共 2 页
字号:
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 + -