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

📄 isr_intx_pins.s

📁 该文件包含30F的电机控制程序
💻 S
字号:
;START_HEADER
;
; dsPIC30F6014 Demo Source File
; (c) Copyright 2005 Microchip Technology, All rights reserved
;
; --------------------------------------------------------------------------
; File Revision History:
; --------------------------------------------------------------------------
;
; $Log: isr_intx_pins.s,v $
; Revision 1.3  2005/04/04 23:43:59  VasukiH
; Updates to comments in file header
;
; Revision 1.2  2005/04/04 23:15:30  VasukiH
; Updates for MPLAB C30 v1.30 compatiblity
;
; Revision 1.1.1.1  2003/08/23 00:38:32  VasukiH
; First import of demo source into CVS Repository
;
;
;
; --------------------------------------------------------------------------
;
; Software and Development Tools Info:
; --------------------------------------------------------------------------
; Tool                          Version
; --------------------------------------------------------------------------
; MPLAB IDE                     7.0
; MPLAB C30 Toolsuite           1.30
; dsPICDEM(TM) Processor Board  1.10
; --------------------------------------------------------------------------
;
; File Notes:
; 1. Each INTx pin ISR execution will set a bit corresponding to the switch
;    that was pressed. These bits reside in the "SwitchPress" variable .
; 2. A software delay ~40ms is provided within the ISR to help account
;    for any bounce that may occur on the INTx pin.
;
;END_HEADER



.include "p30fxxxx.inc"

.equ    BOUNCE_ITERATIONS, 1

;Global Declarations for routines in Program Memory
.global __INT1Interrupt
.global __INT2Interrupt
.global __INT3Interrupt
.global __INT4Interrupt
.global SwitchPress

.section .ndata, data, near
SwitchPress:            .hword 0x0000
BounceDelayPeriod:      .hword 0xFFFF
BounceDelayTimer:       .hword 0x0000

;User code section in Program Memory
.section .text

;..............................................................................
__INT1Interrupt:
        push.d  w0
        push    T4CON
        bclr    T4CON, #TON
        mov     #BOUNCE_ITERATIONS, w1
delay_loop1:
        mov     BounceDelayPeriod, w0
        mov     w0, BounceDelayTimer
test_delay_int1:
        dec     BounceDelayTimer
        cp0     BounceDelayTimer
        bra     nz, test_delay_int1
        dec     w1, w1
        bra     nz, delay_loop1
        btsc    PORTA, #RA12
        bra     exit1
        clr     SwitchPress
        bset    SwitchPress, #0x1
exit1:  bclr    IFS1, #INT1IF           ;Ensure flag is reset
        pop     T4CON
        pop.d   w0
        retfie                          ;Return from Interrupt Service Routine



;..............................................................................
__INT2Interrupt:
        push.d  w0
        push    T4CON
        bclr    T4CON, #TON
        mov     #BOUNCE_ITERATIONS, w1
delay_loop2:
        mov     BounceDelayPeriod, w0
        mov     w0, BounceDelayTimer
test_delay_int2:
        dec     BounceDelayTimer
        cp0     BounceDelayTimer
        bra     nz, test_delay_int2
        dec     w1, w1
        bra     nz, delay_loop2
        btsc    PORTA, #RA13
        bra     exit2
        clr     SwitchPress
        bset    SwitchPress, #0x2
exit2:  bclr    IFS1, #INT2IF           ;Ensure flag is reset
        pop     T4CON
        pop.d   w0
        retfie                          ;Return from Interrupt Service Routine



;..............................................................................
__INT3Interrupt:

        push.d  w0
        push    T4CON
        bclr    T4CON, #TON
        mov     #BOUNCE_ITERATIONS, w1
delay_loop3:
        mov     BounceDelayPeriod, w0
        mov     w0, BounceDelayTimer
test_delay_int3:
        dec     BounceDelayTimer
        cp0     BounceDelayTimer
        bra     nz, test_delay_int3
        dec     w1, w1
        bra     nz, delay_loop3
        btsc    PORTA, #RA14
        bra     exit3
        clr     SwitchPress
        bset    SwitchPress, #0x3
exit3:  bclr    IFS2, #INT3IF           ;Ensure flag is reset
        pop     T4CON
        pop.d   w0
        retfie                          ;Return from Interrupt Service Routine


;..............................................................................
__INT4Interrupt:

        push.d  w0
        push    T4CON
        bclr    T4CON, #TON
        mov     #BOUNCE_ITERATIONS, w1
delay_loop4:
        mov     BounceDelayPeriod, w0
        mov     w0, BounceDelayTimer
test_delay_int4:
        dec     BounceDelayTimer
        cp0     BounceDelayTimer
        bra     z, test_delay_int4
        dec     w1, w1
        bra     nz, delay_loop4
        btsc    PORTA, #RA15
        bra     exit4
        clr     SwitchPress
        bset    SwitchPress, #0x4
exit4:  bclr    IFS2, #INT4IF           ;Ensure flag is reset
        pop     T4CON
        pop.d   w0
        retfie                          ;Return from Interrupt Service Routine



.end


⌨️ 快捷键说明

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