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

📄 cmx_pwm_chan_c.lis

📁 sypress psoc express 驱动led发光的应用程序.
💻 LIS
字号:
 0000                   cpu LMM
                        .module cmx_pwm_chan_c.c
                        .area text(rom, con, rel)
 0000                   .dbfile ./cmx_pwm_chan_c.c
 0000                   .dbfunc e PWMSetDutyCycle _PWMSetDutyCycle fV
 0000           ;   CompareValue -> X+1
 0000           ;         Period -> X+0
 0000           ;     bDutyCycle -> X-5
 0000           ;            bID -> X-4
 0000           _PWMSetDutyCycle::
 0000                   .dbline -1
 0000 10                push X
 0001 4F                mov X,SP
 0002 3802              add SP,2
 0004                   .dbline 36
 0004           ; //*****************************************************************************
 0004           ; //*****************************************************************************
 0004           ; //  FILENAME:  cmx_pwm_chan.c
 0004           ; //  @Version@
 0004           ; //  `@PSOC_VERSION`
 0004           ; //
 0004           ; //  DESCRIPTION:  C file for the PWM channel.
 0004           ; //-----------------------------------------------------------------------------
 0004           ; //      Copyright (c) Cypress MicroSystems 2001-2005. All Rights Reserved.
 0004           ; //*****************************************************************************
 0004           ; //*****************************************************************************
 0004           ; 
 0004           ; #include "cmx_pwm_chan.h"
 0004           ; 
 0004           ; //-----------------------------------------------------------------------------
 0004           ; //  FUNCTION NAME: PWMSetDutyCycle(BYTE bID, BYTE bDutyCycle)
 0004           ; //
 0004           ; //  DESCRIPTION:  
 0004           ; //    Sets the duty cycle for the given channel.
 0004           ; //
 0004           ; //-----------------------------------------------------------------------------
 0004           ; //
 0004           ; //  ARGUMENTS: 
 0004           ; //    bID        => Pointer to ParameterBlock for this instance.
 0004           ; //    bDutyCycle =>
 0004           ; //
 0004           ; //  RETURNS: None
 0004           ; //
 0004           ; //  SIDE EFFECTS: 
 0004           ; //
 0004           ; //  THEORY of OPERATION or PROCEDURE: 
 0004           ; //
 0004           ; //
 0004           ; //-----------------------------------------------------------------------------
 0004           ; void PWMSetDutyCycle(BYTE bID, BYTE bDutyCycle)
 0004           ; {
 0004                   .dbline 39
 0004           ;       BYTE Period;
 0004           ;       BYTE CompareValue;
 0004           ;       if (bDutyCycle > 100)
 0004 5064              mov A,100
 0006 3BFB              cmp A,[X-5]
 0008 D004              jnc L2
 000A           X0:
 000A                   .dbline 40
 000A           ;       {
 000A                   .dbline 41
 000A           ;               bDutyCycle = 100;
 000A 56FB64            mov [X-5],100
 000D                   .dbline 42
 000D           ;       }
 000D           L2:
 000D                   .dbline 43
 000D           ;       Period = PWMGetPeriod(bID);
 000D 10                push X
 000E 52FC              mov A,[X-4]
 0010 7C0000            xcall _PWMGetPeriod
 0013 62D000            mov REG[0xd0],>__r0
 0016 20                pop X
 0017 5400              mov [X+0],A
 0019                   .dbline 44
 0019           ;       CompareValue = ((int)(Period + 1) * (int)bDutyCycle)/100;
 0019 52FB              mov A,[X-5]
 001B 5300              mov [__r1],A
 001D 550000            mov [__r0],0
 0020 5200              mov A,[X+0]
 0022 5300              mov [__r3],A
 0024 550000            mov [__r2],0
 0027 060001            add [__r3],1
 002A 0E0000            adc [__r2],0
 002D 550000            mov [__rX],0
 0030 550000            mov [__rY],0
 0033           X1:
 0033 3C0000            cmp [__r2],0
 0036 B006              jnz X4
 0038 3C0000            cmp [__r3],0
 003B A01A              jz X3
 003D           X4:
 003D 70FB              and F,-5
 003F 6E00              rrc [__r2]
 0041 6E00              rrc [__r3]
 0043 D00C              jnc X2
 0045 62D000            mov REG[0xd0],>__r0
 0048 5100              mov A,[__r1]
 004A 0400              add [__rX],A
 004C 5100              mov A,[__r0]
 004E 0C00              adc [__rY],A
 0050           X2:
 0050 6500              asl [__r1]
 0052 6B00              rlc [__r0]
 0054 8FDE              jmp X1
 0056           X3:
 0056 5F0000            mov [__r1],[__rX]
 0059 5F0000            mov [__r0],[__rY]
 005C 62D000            mov REG[0xd0],>__r0
 005F 5000              mov A,0
 0061 08                push A
 0062 5064              mov A,100
 0064 08                push A
 0065 5100              mov A,[__r0]
 0067 08                push A
 0068 5100              mov A,[__r1]
 006A 08                push A
 006B 7C0000            xcall __divmod_16X16_16
 006E 18                pop A
 006F 5300              mov [__r1],A
 0071 18                pop A
 0072 38FE              add SP,-2
 0074 5100              mov A,[__r1]
 0076 5401              mov [X+1],A
 0078                   .dbline 45
 0078           ;     PWMSetPulseWidth(bID, CompareValue);
 0078 10                push X
 0079 5201              mov A,[X+1]
 007B 08                push A
 007C 52FC              mov A,[X-4]
 007E 20                pop X
 007F 7C0000            xcall _PWMSetPulseWidth
 0082 20                pop X
 0083                   .dbline -2
 0083                   .dbline 46
 0083           ; }
 0083           L1:
 0083 38FE              add SP,-2
 0085 20                pop X
 0086                   .dbline 0 ; func end
 0086 7F                ret
 0087                   .dbsym l CompareValue 1 c
 0087                   .dbsym l Period 0 c
 0087                   .dbsym l bDutyCycle -5 c
 0087                   .dbsym l bID -4 c
 0087                   .dbend

⌨️ 快捷键说明

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