📄 cmx_lx1972l.lis
字号:
0000 cpu LMM
.module cmx_lx1972l.c
.area text(rom, con, rel)
0000 .dbfile ./cmx_lx1972l.c
0000 .dbfunc e CMX_LX1972L_Instantiate _CMX_LX1972L_Instantiate fV
0000 ; thisBLK -> X-5
0000 _CMX_LX1972L_Instantiate::
0000 .dbline -1
0000 10 push X
0001 4F mov X,SP
0002 .dbline 45
0002 ; //*****************************************************************************
0002 ; //*****************************************************************************
0002 ; // FILENAME: CMX_LX1972L.c
0002 ; // Version: 1.0, Updated on 2006/01/28 at 20:15:02
0002 ; // Application: PSoC Express 2.0
0002 ; //
0002 ; // DESCRIPTION: This Driver calls the low level driver and returns the
0002 ; // voltage that corresponds to a given channel.
0002 ; //
0002 ; //-----------------------------------------------------------------------------
0002 ; // Copyright (c) Cypress MicroSystems 2006. All Rights Reserved.
0002 ; //*****************************************************************************
0002 ; //*****************************************************************************
0002 ;
0002 ; #include "m8c.h"
0002 ; #include "CMX_LX1972L.h"
0002 ; #include "cmx.h"
0002 ;
0002 ; // Channel type header file
0002 ; #include "CMX_MVOLTS_IN_CHAN.h"
0002 ;
0002 ; // The format of the function should always be the same,
0002 ; // no matter what low level driver is used.
0002 ;
0002 ; //-----------------------------------------------------------------------------
0002 ; // FUNCTION NAME: LX1972L_Instantiate(const CMX_LX1972L_ParameterBlock * thisBLK)
0002 ; //
0002 ; // DESCRIPTION:
0002 ; // This function doesn't do anything at this time, but is placed here
0002 ; // for forward compatibility.
0002 ; //
0002 ; //-----------------------------------------------------------------------------
0002 ; //
0002 ; // ARGUMENTS:
0002 ; // thisBLK => Pointer to ParameterBlock for this instance.
0002 ; //
0002 ; // RETURNS: None
0002 ; //
0002 ; // SIDE EFFECTS:
0002 ; //
0002 ; // THEORY of OPERATION or PROCEDURE:
0002 ; //
0002 ; //-----------------------------------------------------------------------------
0002 ; void CMX_LX1972L_Instantiate(const CMX_LX1972L_ParameterBlock * thisBLK)
0002 ; {
0002 .dbline -2
0002 .dbline 47
0002 ; // Blank function
0002 ; }
0002 L2:
0002 20 pop X
0003 .dbline 0 ; func end
0003 7F ret
0004 .dbsym l thisBLK -5 pX
0004 .dbend
0004 .dbfunc e CMX_LX1972L_GetValue _CMX_LX1972L_GetValue fc
0004 ; lCounts -> X+0
0004 ; thisBLK -> X-5
0004 _CMX_LX1972L_GetValue::
0004 .dbline -1
0004 10 push X
0005 4F mov X,SP
0006 3804 add SP,4
0008 .dbline 70
0008 ;
0008 ; //-----------------------------------------------------------------------------
0008 ; // FUNCTION NAME: LX1972L_GetValue(const CMX_LX1972L_ParameterBlock * thisBLK)
0008 ; //
0008 ; // DESCRIPTION:
0008 ; // This function returns a value between 0 and 100 based on the LX1972L
0008 ; // postion.
0008 ; //
0008 ; //-----------------------------------------------------------------------------
0008 ; //
0008 ; // ARGUMENTS:
0008 ; // thisBLK => Pointer to ParameterBlock for this instance.
0008 ; //
0008 ; // RETURNS:
0008 ; // A Byte value between 0 and 100.
0008 ; //
0008 ; // SIDE EFFECTS:
0008 ; //
0008 ; // THEORY of OPERATION or PROCEDURE:
0008 ; //
0008 ; //-----------------------------------------------------------------------------
0008 ; BYTE CMX_LX1972L_GetValue(const CMX_LX1972L_ParameterBlock * thisBLK)
0008 ; {
0008 .dbline 73
0008 ; long lCounts;
0008 ;
0008 ; lCounts = (long)(iGetAinChanCounts(thisBLK->InPort))*101;
0008 62D000 mov REG[0xd0],>__r0
000B 52FC mov A,[X-4]
000D 0101 add A,1
000F 5300 mov [__r1],A
0011 52FB mov A,[X-5]
0013 0900 adc A,0
0015 10 push X
0016 5800 mov X,[__r1]
0018 28 romx
0019 20 pop X
001A 10 push X
001B 7C0000 xcall _iGetAinChanCounts
001E 62D000 mov REG[0xd0],>__r0
0021 5A00 mov [__r0],X
0023 20 pop X
0024 5300 mov [__r3],A
0026 5100 mov A,[__r0]
0028 5300 mov [__r2],A
002A 470080 tst [__r2],-128
002D A009 jz X0
002F 5500FF mov [__r1],-1
0032 5500FF mov [__r0],-1
0035 800A jmp X1
0037 X0:
0037 62D000 mov REG[0xd0],>__r0
003A 550000 mov [__r1],0
003D 550000 mov [__r0],0
0040 X1:
0040 62D000 mov REG[0xd0],>__r0
0043 5100 mov A,[__r0]
0045 08 push A
0046 5100 mov A,[__r1]
0048 08 push A
0049 5100 mov A,[__r2]
004B 08 push A
004C 5100 mov A,[__r3]
004E 08 push A
004F 5000 mov A,0
0051 08 push A
0052 08 push A
0053 08 push A
0054 5065 mov A,101
0056 08 push A
0057 7C0000 xcall __mul_32X32_32
005A 38FC add SP,-4
005C 18 pop A
005D 5403 mov [X+3],A
005F 18 pop A
0060 5402 mov [X+2],A
0062 18 pop A
0063 5401 mov [X+1],A
0065 18 pop A
0066 5400 mov [X+0],A
0068 .dbline 74
0068 ; lCounts = lCounts / (1 << (CMX_ADC_CHAN_RESOLUTION));
0068 5000 mov A,0
006A 08 push A
006B 08 push A
006C 5004 mov A,4
006E 08 push A
006F 5000 mov A,0
0071 08 push A
0072 5200 mov A,[X+0]
0074 08 push A
0075 5201 mov A,[X+1]
0077 08 push A
0078 5202 mov A,[X+2]
007A 08 push A
007B 5203 mov A,[X+3]
007D 08 push A
007E 7C0000 xcall __divmod_32X32_32
0081 18 pop A
0082 5403 mov [X+3],A
0084 18 pop A
0085 5402 mov [X+2],A
0087 18 pop A
0088 5401 mov [X+1],A
008A 18 pop A
008B 5400 mov [X+0],A
008D 38FC add SP,-4
008F .dbline 75
008F ; if (lCounts > 100) lCounts = 100; // Make sure Max is 100
008F 5064 mov A,100
0091 1303 sub A,[X+3]
0093 5000 mov A,0
0095 1B02 sbb A,[X+2]
0097 5000 mov A,0
0099 1B01 sbb A,[X+1]
009B 5200 mov A,[X+0]
009D 3180 xor A,-128
009F 5300 mov [__rX],A
00A1 5080 mov A,(0 ^ 0x80)
00A3 1A00 sbb A,[__rX]
00A5 D00D jnc L4
00A7 X2:
00A7 .dbline 75
00A7 560000 mov [X+0],0
00AA 560100 mov [X+1],0
00AD 560200 mov [X+2],0
00B0 560364 mov [X+3],100
00B3 L4:
00B3 .dbline 77
00B3 ;
00B3 ; return((BYTE)lCounts); // Convert to BYTE and return
00B3 62D000 mov REG[0xd0],>__r0
00B6 5203 mov A,[X+3]
00B8 .dbline -2
00B8 L3:
00B8 38FC add SP,-4
00BA 20 pop X
00BB .dbline 0 ; func end
00BB 7F ret
00BC .dbsym l lCounts 0 L
00BC .dbsym l thisBLK -5 pX
00BC .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -