📄 cmx_dio.lis
字号:
0000 cpu LMM
.module cmx_dio.c
.area text(rom, con, rel)
0000 .dbfile ./cmx_dio.c
0000 .dbfunc e CMX_DIO_Instantiate _CMX_DIO_Instantiate fV
0000 ; pinPort -> X+8
0000 ; pin -> X+7
0000 ; port -> X+6
0000 ; thisBlock -> X+0
0000 ; pPBlock -> X-5
0000 _CMX_DIO_Instantiate::
0000 .dbline -1
0000 10 push X
0001 4F mov X,SP
0002 3809 add SP,9
0004 .dbline 41
0004 ; //*****************************************************************************
0004 ; //*****************************************************************************
0004 ; // FILENAME: CMX_DIO.c
0004 ; // Version: 1.0, Updated on 2006/06/28 at 17:27:16
0004 ; // Application: PSoC Express 2.0
0004 ; //
0004 ; // DESCRIPTION: This Driver calls the low level driver performs
0004 ; // individual pin input and drive.
0004 ; //
0004 ; //-----------------------------------------------------------------------------
0004 ; // Copyright (c) Cypress MicroSystems 2004. All Rights Reserved.
0004 ; //*****************************************************************************
0004 ; //*****************************************************************************
0004 ; #include "m8c.h"
0004 ; #include "CMX_dio.h"
0004 ; #include "cmx.h"
0004 ;
0004 ; // channel type header file
0004 ; #include "cmx_dio_chan.h"
0004 ;
0004 ;
0004 ; //-----------------------------------------------------------------------------
0004 ; // FUNCTION NAME: DIO_Instantiate(const CMS_DIO_ParameterBlock * pPBlock)
0004 ; //
0004 ; // DESCRIPTION:
0004 ; // Initializes the DIO specified by the parameter block pointed to by pPBlock.
0004 ; //
0004 ; //-----------------------------------------------------------------------------
0004 ; //
0004 ; // ARGUMENTS: pPBlock => Pointer to Parameter Block
0004 ; //
0004 ; // RETURNS: none.
0004 ; //
0004 ; // SIDE EFFECTS:
0004 ; //
0004 ; // THEORY of OPERATION or PROCEDURE: Initialization for discrete I/O
0004 ; // Initial conditions and drive mode set based on parameters set in
0004 ; // DIO Parameter block
0004 ; ////////////////////////////////////////////////////////////////////////////////
0004 ; void CMX_DIO_Instantiate(const CMX_DIO_ParameterBlock * pPBlock)
0004 ; {
0004 .dbline 47
0004 ; BYTE port;
0004 ; BYTE pin;
0004 ; BYTE pinPort;
0004 ;
0004 ; CMX_DIO_ParameterBlock thisBlock;
0004 ; thisBlock = *pPBlock;
0004 62D000 mov REG[0xd0],>__r0
0007 52FC mov A,[X-4]
0009 5300 mov [__r1],A
000B 52FB mov A,[X-5]
000D 5A00 mov [__r3],X
000F 62D501 mov REG[0xd5],1
0012 10 push X
0013 550000 mov [__rX],0
0016 5800 mov X,[__r1]
0018 X0:
0018 08 push A
0019 28 romx
001A 62D000 mov REG[0xd0],>__r0
001D 3F00 mvi [__r3],A
001F 18 pop A
0020 75 inc X
0021 0900 adc A,0
0023 7600 inc [__rX]
0025 3C0006 cmp [__rX],6
0028 BFEF jnz X0
002A 20 pop X
002B .dbline 49
002B ;
002B ; pinPort = DIOChannelPins[(thisBlock.ChannelID)]; // Get pin and port info
002B 5205 mov A,[X+5]
002D 5300 mov [__r1],A
002F 550000 mov [__r0],0
0032 060000 add [__r1],<_DIOChannelPins
0035 0E0000 adc [__r0],>_DIOChannelPins
0038 5100 mov A,[__r0]
003A 10 push X
003B 5800 mov X,[__r1]
003D 28 romx
003E 20 pop X
003F 5408 mov [X+8],A
0041 .dbline 51
0041 ;
0041 ; pin = pinlu[(BYTE)(pinPort & 0x0F)]; // Create pin mask
0041 5208 mov A,[X+8]
0043 210F and A,15
0045 5300 mov [__r1],A
0047 550000 mov [__r0],0
004A 060000 add [__r1],<_pinlu
004D 0E0000 adc [__r0],>_pinlu
0050 5100 mov A,[__r0]
0052 10 push X
0053 5800 mov X,[__r1]
0055 28 romx
0056 20 pop X
0057 5407 mov [X+7],A
0059 .dbline 52
0059 ; port = portlu[(BYTE)((pinPort & 0xF0) >>4)]; // Extract port address
0059 5208 mov A,[X+8]
005B 21F0 and A,-16
005D 67 asr A
005E 67 asr A
005F 67 asr A
0060 67 asr A
0061 210F and A,15
0063 5300 mov [__r1],A
0065 550000 mov [__r0],0
0068 060000 add [__r1],<_portlu
006B 0E0000 adc [__r0],>_portlu
006E 5100 mov A,[__r0]
0070 10 push X
0071 5800 mov X,[__r1]
0073 28 romx
0074 20 pop X
0075 5406 mov [X+6],A
0077 .dbline 54
0077 ;
0077 ; GlobalSelectDisconnect(pin,port); // Disconnect from Global bus
0077 10 push X
0078 5206 mov A,[X+6]
007A 08 push A
007B 5207 mov A,[X+7]
007D 20 pop X
007E 7C0000 xcall _GlobalSelectDisconnect
0081 20 pop X
0082 .dbline 55
0082 ; CMX_DIO_SetValue(pPBlock,thisBlock.Initial_bCondition); // Set initial condition
0082 5202 mov A,[X+2]
0084 08 push A
0085 52FB mov A,[X-5]
0087 08 push A
0088 52FC mov A,[X-4]
008A 08 push A
008B 9016 xcall _CMX_DIO_SetValue
008D 38FD add SP,-3
008F .dbline 57
008F ;
008F ; DiscreteDriveMode(pin,port,thisBlock.Initial_DriveMode); // Set default drive mode
008F 10 push X
0090 5203 mov A,[X+3]
0092 08 push A
0093 5206 mov A,[X+6]
0095 08 push A
0096 5207 mov A,[X+7]
0098 08 push A
0099 7C0000 xcall _DiscreteDriveMode
009C 38FD add SP,-3
009E 20 pop X
009F .dbline -2
009F .dbline 58
009F ; }
009F L2:
009F 38F7 add SP,-9
00A1 20 pop X
00A2 .dbline 0 ; func end
00A2 7F ret
00A3 .dbsym l pinPort 8 c
00A3 .dbsym l pin 7 c
00A3 .dbsym l port 6 c
00A3 .dbsym l thisBlock 0 X
00A3 .dbsym l pPBlock -5 pX
00A3 .dbend
00A3 .dbfunc e CMX_DIO_SetValue _CMX_DIO_SetValue fV
00A3 ; pinport -> X+0
00A3 ; bValue -> X-6
00A3 ; pPBlock -> X-5
00A3 _CMX_DIO_SetValue::
00A3 .dbline -1
00A3 10 push X
00A4 4F mov X,SP
00A5 3801 add SP,1
00A7 .dbline 78
00A7 ; //-----------------------------------------------------------------------------
00A7 ; // FUNCTION NAME: DIO_SetValue(const CMS_DIO_ParameterBlock * pPBlock, BYTE bValue)
00A7 ; //
00A7 ; // DESCRIPTION:
00A7 ; // Sets the DIO to a 1 or 0 determined by bValue.
00A7 ; //
00A7 ; //-----------------------------------------------------------------------------
00A7 ; //
00A7 ; // ARGUMENTS:
00A7 ; // pPBlock => Pointer to parameter block
00A7 ; // bValue => Value to set
00A7 ; //
00A7 ; // RETURNS: none
00A7 ; //
00A7 ; // SIDE EFFECTS:
00A7 ; //
00A7 ; // THEORY of OPERATION or PROCEDURE:
00A7 ; ///////////////////////////////////////////////////////////////////////////////
00A7 ; void CMX_DIO_SetValue(const CMX_DIO_ParameterBlock * pPBlock, BYTE bValue)
00A7 ; {
00A7 .dbline 81
00A7 ; BYTE pinport;
00A7 ;
00A7 ; pinport = DIOChannelPins[(pPBlock->ChannelID)];
00A7 62D000 mov REG[0xd0],>__r0
00AA 52FC mov A,[X-4]
00AC 0105 add A,5
00AE 5300 mov [__r1],A
00B0 52FB mov A,[X-5]
00B2 0900 adc A,0
00B4 10 push X
00B5 5800 mov X,[__r1]
00B7 28 romx
00B8 20 pop X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -