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

📄 cmx_dio.lis

📁  PSoC(可编程片上系统)是Cypress半导体公司生产的包含有8位微处理器核和数字与模拟混合的信号阵列芯片
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00B9 5300              mov [__r1],A
 00BB 550000            mov [__r0],0
 00BE 060000            add [__r1],<_DIOChannelPins
 00C1 0E0000            adc [__r0],>_DIOChannelPins
 00C4 5100              mov A,[__r0]
 00C6 10                push X
 00C7 5800              mov X,[__r1]
 00C9 28                romx
 00CA 20                pop X
 00CB 5400              mov [X+0],A
 00CD                   .dbline 84
 00CD           ; 
 00CD           ; 
 00CD           ;       if ((pPBlock->ON_bDefine ^ bValue ) == 0) {   // Same mode
 00CD 52FC              mov A,[X-4]
 00CF 0101              add A,1
 00D1 5300              mov [__r1],A
 00D3 52FB              mov A,[X-5]
 00D5 0900              adc A,0
 00D7 10                push X
 00D8 5800              mov X,[__r1]
 00DA 28                romx
 00DB 20                pop X
 00DC 5300              mov [__r0],A
 00DE 52FA              mov A,[X-6]
 00E0 3400              xor [__r0],A
 00E2 3C0000            cmp [__r0],0
 00E5 B00E              jnz L7
 00E7                   .dbline 84
 00E7                   .dbline 85
 00E7           ;         DISetPin(pinport,1); 
 00E7 10                push X
 00E8 5001              mov A,1
 00EA 08                push A
 00EB 5200              mov A,[X+0]
 00ED 20                pop X
 00EE 7C0000            xcall _DISetPin
 00F1 20                pop X
 00F2                   .dbline 86
 00F2 800C              xjmp L8
 00F4           L7:
 00F4                   .dbline 86
 00F4                   .dbline 87
 00F4 10                push X
 00F5 5000              mov A,0
 00F7 08                push A
 00F8 5200              mov A,[X+0]
 00FA 20                pop X
 00FB 7C0000            xcall _DISetPin
 00FE 20                pop X
 00FF                   .dbline 88
 00FF           L8:
 00FF                   .dbline -2
 00FF                   .dbline 89
 00FF           ;     } else {
 00FF           ;         DISetPin(pinport,0);
 00FF           ;     }
 00FF           ; }
 00FF           L6:
 00FF 38FF              add SP,-1
 0101 20                pop X
 0102                   .dbline 0 ; func end
 0102 7F                ret
 0103                   .dbsym l pinport 0 c
 0103                   .dbsym l bValue -6 c
 0103                   .dbsym l pPBlock -5 pX
 0103                   .dbend
 0103                   .dbfunc e CMX_DIO_GetValue _CMX_DIO_GetValue fc
 0103           ;            pin -> X+3
 0103           ;           port -> X+2
 0103           ;       pinValue -> X+1
 0103           ;        pinPort -> X+0
 0103           ;        pPBlock -> X-5
 0103           _CMX_DIO_GetValue::
 0103                   .dbline -1
 0103 10                push X
 0104 4F                mov X,SP
 0105 3806              add SP,6
 0107                   .dbline 108
 0107           ; 
 0107           ; //-----------------------------------------------------------------------------
 0107           ; //  FUNCTION NAME: DIO_GetValue(const CMS_DIO_ParameterBlock * pPBlock)
 0107           ; //
 0107           ; //  DESCRIPTION:
 0107           ; //     Return the value of the DIO pointed to by the parameter block
 0107           ; //
 0107           ; //-----------------------------------------------------------------------------
 0107           ; //
 0107           ; //  ARGUMENTS: 
 0107           ; //             pPBlock => Pointer to DIO Parameter block
 0107           ; //
 0107           ; //  RETURNS: 
 0107           ; //     Returns DIO status, 1 or 0
 0107           ; //
 0107           ; //  THEORY of OPERATION or PROCEDURE:
 0107           ; ///////////////////////////////////////////////////////////////////////////////
 0107           ; BYTE CMX_DIO_GetValue(const CMX_DIO_ParameterBlock * pPBlock)
 0107           ; {
 0107                   .dbline 116
 0107           ; 
 0107           ;     BYTE port;
 0107           ;     BYTE pin;
 0107           ;     BYTE pinPort;
 0107           ;     BYTE pinValue;
 0107           ; 
 0107           ; 
 0107           ;     pinPort = DIOChannelPins[(pPBlock->ChannelID)] ;
 0107 62D000            mov REG[0xd0],>__r0
 010A 52FC              mov A,[X-4]
 010C 0105              add A,5
 010E 5300              mov [__r1],A
 0110 52FB              mov A,[X-5]
 0112 0900              adc A,0
 0114 10                push X
 0115 5800              mov X,[__r1]
 0117 28                romx
 0118 20                pop X
 0119 5300              mov [__r1],A
 011B 550000            mov [__r0],0
 011E 060000            add [__r1],<_DIOChannelPins
 0121 0E0000            adc [__r0],>_DIOChannelPins
 0124 5100              mov A,[__r0]
 0126 10                push X
 0127 5800              mov X,[__r1]
 0129 28                romx
 012A 20                pop X
 012B 5400              mov [X+0],A
 012D                   .dbline 117
 012D           ;     pin  = pinlu[(BYTE)(pinPort & 0x0F)];
 012D 5200              mov A,[X+0]
 012F 210F              and A,15
 0131 5300              mov [__r1],A
 0133 550000            mov [__r0],0
 0136 060000            add [__r1],<_pinlu
 0139 0E0000            adc [__r0],>_pinlu
 013C 5100              mov A,[__r0]
 013E 10                push X
 013F 5800              mov X,[__r1]
 0141 28                romx
 0142 20                pop X
 0143 5403              mov [X+3],A
 0145                   .dbline 118
 0145           ;     port = portlu[(BYTE)((pinPort & 0xF0) >> 4)];
 0145 5200              mov A,[X+0]
 0147 21F0              and A,-16
 0149 67                asr A
 014A 67                asr A
 014B 67                asr A
 014C 67                asr A
 014D 210F              and A,15
 014F 5300              mov [__r1],A
 0151 550000            mov [__r0],0
 0154 060000            add [__r1],<_portlu
 0157 0E0000            adc [__r0],>_portlu
 015A 5100              mov A,[__r0]
 015C 10                push X
 015D 5800              mov X,[__r1]
 015F 28                romx
 0160 20                pop X
 0161 5402              mov [X+2],A
 0163                   .dbline 120
 0163           ; 
 0163           ;     pinValue = DiscreteReadPin(pin,port);
 0163 10                push X
 0164 5202              mov A,[X+2]
 0166 08                push A
 0167 5203              mov A,[X+3]
 0169 20                pop X
 016A 7C0000            xcall _DiscreteReadPin
 016D 62D000            mov REG[0xd0],>__r0
 0170 20                pop X
 0171 5401              mov [X+1],A
 0173                   .dbline 122
 0173           ; 
 0173           ;     if (pPBlock->ReadOutputPolarity == 0) // if output is to be inverted
 0173 52FC              mov A,[X-4]
 0175 0104              add A,4
 0177 5300              mov [__r1],A
 0179 52FB              mov A,[X-5]
 017B 0900              adc A,0
 017D 10                push X
 017E 5800              mov X,[__r1]
 0180 28                romx
 0181 20                pop X
 0182 3900              cmp A,0
 0184 B01B              jnz L10
 0186                   .dbline 123
 0186           ;     {
 0186                   .dbline 124
 0186           ;        pinValue  = !pinValue;   // invert output
 0186 3D0100            cmp [X+1],0
 0189 B009              jnz L13
 018B 560501            mov [X+5],1
 018E 560400            mov [X+4],0
 0191 8007              xjmp L14
 0193           L13:
 0193 560500            mov [X+5],0
 0196 560400            mov [X+4],0
 0199           L14:
 0199 62D000            mov REG[0xd0],>__r0
 019C 5205              mov A,[X+5]
 019E 5401              mov [X+1],A
 01A0                   .dbline 125
 01A0           ;     }
 01A0           L10:
 01A0                   .dbline 127
 01A0           ;     
 01A0           ;     return ( pinValue);
 01A0 5201              mov A,[X+1]
 01A2 62D000            mov REG[0xd0],>__r0
 01A5                   .dbline -2
 01A5           L9:
 01A5 38FA              add SP,-6
 01A7 20                pop X
 01A8                   .dbline 0 ; func end
 01A8 7F                ret
 01A9                   .dbsym l pin 3 c
 01A9                   .dbsym l port 2 c
 01A9                   .dbsym l pinValue 1 c
 01A9                   .dbsym l pinPort 0 c
 01A9                   .dbsym l pPBlock -5 pX
 01A9                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -