beautypg.com

C-11 – Texas Instruments TMS320C2XX User Manual

Page 496

background image

Task-Specific Program Code

C-11

Program Examples

Example C–7. Implementing a HOLD Operation (hold.asm)

* File:

hold.asm

*

* Function:

HOLD test code

*

* Check for HOLDA toggle for HOLD requests in MODE 0

*

* Check for XF toggle on HOLD/INT1 requests in MODE 1

*

.title ” HOLD Test ”

; Title

.mmregs

icr

.set

0FFECh

; Interrupt control register in I/O space

icrshdw

.set

060h

; scratch pad location

* Interrupt vectors

.text

reset

B

main

; 0–reset , Branch to main program on reset

int1h

B

int1_hold

; 1–external interrupt 1 or HOLD

.space 40*16

*********Interrupt service routine ISR for HOLD logic*************************

main:

splk

#0001h,imr

clrc

intm

wait:

b

wait

int1_hold:

; Perform any desired context save
ldp

#0

in

icrshdw, icr

; save the contents of ICR register

lacl

#010h

; load ACC with mask for MODE bit

and

icrshdw

; Filter out all bits except MODE bit

bcnd

int1,neq

; Branch if MODE bit is 1, else in HOLD mode

lacc

imr, 0

; load ACC with interrupt mask register

splk

#1, imr

; mask all interrupts except interrupt1/HOLD

idle

; enter HOLD mode, issues HOLDA
; and the busses will be in tristate

splk

#1, ifr

; Clear HOLD/INT1 flag to prevent
; re–entering HOLD mode

sacl

imr

; restore interrupt mask register

; Perform necessary context restore

clrc

intm

; enable all interrupts

ret

; return from HOLD interrupt

int1:

nop

; Replace this with desired INT1 interrupt

nop

; service routine

setc

xf

; Dummy toggle to check the loop entry

clrc

xf

; in MODE 1

splk

#0001,ifr

clrc

intm

; enable all interrupts

ret

; return from interrupts