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

📄 ezkitbf537_led.asm

📁 ADI公司SHARC与BlackFin通过SPI协议相互通信的源代码
💻 ASM
字号:
/****************************************************************************
 Include Section
*****************************************************************************/

#include "global.h"

/*****************************************************************************
 Symbolic constants / definitions
******************************************************************************/

#define LED1            PF6 /* SPI SSEL4 */
#define LED2            PF7
#define LED3            PF8
#define LED4            PF9
#define LED5            PF10 /* SPI SSEL1 */
#define LED6            PF11 /* SPI MOSI */

#define SETUP_LED       LED2 | LED3 | LED4
#define ALL_LED         SETUP_LED

/*****************************************************************************
 Prototypes
******************************************************************************/

.GLOBAL __led_all_turn_off;
.GLOBAL __led_all_turn_on;
.GLOBAL __led_all_blink_inf;
//.GLOBAL __led1_toggle; /* SPI SSEL4 */
.GLOBAL __led2_toggle;
.GLOBAL __led3_toggle;
.GLOBAL __led4_toggle;
//.GLOBAL __led5_toggle; /* SPI SSEL1 */
//.GLOBAL __led6_toggle; /* SPI MOSI */

/*****************************************************************************
 Functions
******************************************************************************/

.SECTION L1_code;

/*****************************************************************************
 Function:              __led_all_turn_off
 Description:           turn off EZ-KIT Lite LEDs
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7:6,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led_all_turn_off:

    link 0;
    [--SP] = (R7:6,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = ALL_LED (z);
    R6 = w[P5 + lo(PORTFIO_DIR)] (z);
    R7 = R7 | R6;
    w[P5 + lo(PORTFIO_DIR)] = R7;
    ssync;

    w[P5 + lo(PORTFIO_CLEAR)] = R7;
    ssync;

    (R7:6,P5:5) = [SP++];
    unlink;

    rts;
__led_all_turn_off.END:


/*****************************************************************************
 Function:              __led_all_turn_on
 Description:           turn on all EZ-KIT Lite LEDs
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7:6,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led_all_turn_on:

    link 0;
    [--SP] = (R7:6,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = ALL_LED (z);
    R6 = w[P5 + lo(PORTFIO_DIR)] (z);
    R7 = R7 | R6;
    w[P5 + lo(PORTFIO_DIR)] = R7;
    ssync;

    w[P5 + lo(PORTFIO_SET)] = R7;
    ssync;

    (R7:6,P5:5) = [SP++];
    unlink;

    rts;
__led_all_turn_on.END:


/*****************************************************************************
 Function:              __led_all_blink_inf
 Description:           blink all EZ-KIT Lite LEDs
                        endless loop
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7,R0,P5:4
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led_all_blink_inf:

    link 0;
    [--SP] = (R7:7,P5:4);
    [--SP] = R0;
    PUSH_LOOP_REGx(0);
    IMM32(P5,SYS_MMR_BASE);

    call __get_cclk_hz;
    P4 = R0;
    nop;nop;nop;nop;

    __led_all_blink_inf.stay:
    lsetup(__led_all_blink_inf.lp,__led_all_blink_inf.lp) LC0 = P4;
    __led_all_blink_inf.lp: nop;
    R7 = ALL_LED (z);
    w[P5 + lo(PORTFIO_TOGGLE)] = R7;
    ssync;
    jump __led_all_blink_inf.stay;

    POP_LOOP_REGx(0);
    R0 = [SP++];
    (R7:7,P5:4) = [SP++];
    unlink;

    rts;
__led_all_blink_inf.END:


/*****************************************************************************
 Function:              __led1_toggle
 Description:           toggle EZ-KIT Lite LED1
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led1_toggle:

    link 0;
    [--SP] = (R7:7,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = LED1 (z);
    w[P5 + lo(PORTFIO_TOGGLE)] = R7;
    ssync;

    (R7:7,P5:5) = [SP++];
    unlink;

    rts;
__led1_toggle.END:


/*****************************************************************************
 Function:              __led1_toggle
 Description:           toggle EZ-KIT Lite LED2
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led2_toggle:

    link 0;
    [--SP] = (R7:7,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = LED2 (z);
    w[P5 + lo(PORTFIO_TOGGLE)] = R7;
    ssync;

    (R7:7,P5:5) = [SP++];
    unlink;

    rts;
__led2_toggle.END:


/*****************************************************************************
 Function:              __led1_toggle
 Description:           toggle EZ-KIT Lite LED3
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led3_toggle:

    link 0;
    [--SP] = (R7:7,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = LED3 (z);
    w[P5 + lo(PORTFIO_TOGGLE)] = R7;
    ssync;

    (R7:7,P5:5) = [SP++];
    unlink;

    rts;
__led3_toggle.END:


/*****************************************************************************
 Function:              __led1_toggle
 Description:           toggle EZ-KIT Lite LED4
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led4_toggle:

    link 0;
    [--SP] = (R7:7,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = LED4 (z);
    w[P5 + lo(PORTFIO_TOGGLE)] = R7;
    ssync;

    (R7:7,P5:5) = [SP++];
    unlink;

    rts;
__led4_toggle.END:


/*****************************************************************************
 Function:              __led1_toggle
 Description:           toggle EZ-KIT Lite LED5
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led5_toggle:

    link 0;
    [--SP] = (R7:7,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = LED5 (z);
    w[P5 + lo(PORTFIO_TOGGLE)] = R7;
    ssync;

    (R7:7,P5:5) = [SP++];
    unlink;

    rts;
__led5_toggle.END:


/*****************************************************************************
 Function:              __led1_toggle
 Description:           toggle EZ-KIT Lite LED6
 Input Parameters:      none
 Return Parameters:     none
 Registers Used:        R7,P5
 Global Variables Used: none
 C-Callable :           no
*****************************************************************************/

__led6_toggle:

    link 0;
    [--SP] = (R7:7,P5:5);
    IMM32(P5,SYS_MMR_BASE);

    R7 = LED6 (z);
    w[P5 + lo(PORTFIO_TOGGLE)] = R7;
    ssync;

    (R7:7,P5:5) = [SP++];
    unlink;

    rts;
__led6_toggle.END:


/*****************************************************************************
 EOF
******************************************************************************/

⌨️ 快捷键说明

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