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

📄 cmx_dio.lis

📁  PSoC(可编程片上系统)是Cypress半导体公司生产的包含有8位微处理器核和数字与模拟混合的信号阵列芯片
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -