?? leds.asm
字號:
;*********************************************************************
; File Name: leds.asm
; Target System: C24x Evaluation Board
;
; Description: This sample program helps you get familiar with
; manipulating the I/O mapped LEDS (DS1-DS8) on the
; F240 EVM Development Board
;
; Revision: 1.00
;
;*********************************************************************
.include f240regs.h
;---------------------------------------------------------------------
; I/O Mapped EVM Register Declarations
;---------------------------------------------------------------------
DAC0 .set 0000h ;DAC Channel 0 Register
DAC1 .set 0001h ;DAC Channel 1 Register
DAC2 .set 0002h ;DAC Channel 2 Register
DAC3 .set 0003h ;DAC Channel 3 Register
DAC_UPDATE .set 0004h ;DAC Update Register
SWITCHES .set 0008h ;DIP Switch Register
LEDS .set 000Ch ;LEDs Register
temp .set 8000h
;---------------------------------------------------------------------
; Variable Declarations for on chip RAM Blocks
;---------------------------------------------------------------------
.bss GPR0,1 ;General purpose register.
.bss LED_STATUS,1 ;LED Status Register
.bss RPT_NUM,1 ;RPT value, used in mS_DELAY
.bss mSEC,1 ;Delay value, used in mS_DELAY
;---------------------------------------------------------------------
; Vector address declarations
;---------------------------------------------------------------------
.sect ".vectors"
RSVECT B START ; Reset Vector
INT1 B PHANTOM ; Interrupt Level 1
INT2 B PHANTOM ; Interrupt Level 2
INT3 B PHANTOM ; Interrupt Level 3
INT4 B PHANTOM ; Interrupt Level 4
INT5 B PHANTOM ; Interrupt Level 5
INT6 B PHANTOM ; Interrupt Level 6
RESERVED B PHANTOM ; Reserved
SW_INT8 B PHANTOM ; User S/W Interrupt
SW_INT9 B PHANTOM ; User S/W Interrupt
SW_INT10 B PHANTOM ; User S/W Interrupt
SW_INT11 B PHANTOM ; User S/W Interrupt
SW_INT12 B PHANTOM ; User S/W Interrupt
SW_INT13 B PHANTOM ; User S/W Interrupt
SW_INT14 B PHANTOM ; User S/W Interrupt
SW_INT15 B PHANTOM ; User S/W Interrupt
SW_INT16 B PHANTOM ; User S/W Interrupt
TRAP B PHANTOM ; Trap vector
NMINT B PHANTOM ; Non-maskable Interrupt
EMU_TRAP B PHANTOM ; Emulator Trap
SW_INT20 B PHANTOM ; User S/W Interrupt
SW_INT21 B PHANTOM ; User S/W Interrupt
SW_INT22 B PHANTOM ; User S/W Interrupt
SW_INT23 B PHANTOM ; User S/W Interrupt
;=====================================================================
; M A I N C O D E - starts here
;=====================================================================
.text
NOP
START: SETC INTM ;Disable interrupts
SPLK #0000h,IMR ;Mask all core interrupts
LACC IFR ;Read Interrupt flags
SACL IFR ;Clear all interrupt flags
CLRC SXM ;Clear Sign Extension Mode
CLRC OVM ;Reset Overflow Mode
CLRC CNF ;Config Block B0 to Data mem
LDP #00E0h ;DP for addresses 7000h-707Fh
SPLK #00BBh,CKCR1 ;CLKIN(OSC)=10MHz,CPUCLK=20MHz
SPLK #00C3h,CKCR0 ;CLKMD=PLL Enable,SYSCLK=CPUCLK/2
SPLK #40C0h,SYSCR ;CLKOUT=CPUCLK
SPLK #006Fh, WDCR ;Disable WD if VCCP=5V (JP5 in pos. 2-3)
KICK_DOG ;Reset Watchdog
SPLK #0h,GPR0 ;Set wait state generator for:
OUT GPR0,WSGR ;Program Space, 0 wait states
;Data Space, 0 wait states
;I/O Space, 0 wait states
SPLK #1h,LED_STATUS ;Set bit 0 in LED_STATUS
OUT LED_STATUS,LEDS ;Turn on I/O LED-1
SPLK #500,mSEC ;Set mSEC for a 50ms delay
LAR AR0,#6h ;Load AR0 with 6 for loop counter
;=====================================================================
; Shift Contents of LED_STATUS register to the left by 1 bit and write
; new value to the I/O Mapped LEDS register.
;=====================================================================
SHIFT_LEFT:
CALL mS_DELAY ;Generate a 50ms delay
KICK_DOG ;Reset WD if not disabled
MAR *,AR0 ;Set ARP = AR0
LACC LED_STATUS ;Load ACC w/ LED_STATUS
SFL ;Shift LED_STATUS left by 1 bit
SACL LED_STATUS ;Store new LED_STATUS value
OUT LED_STATUS,LEDS ;Write new value to LEDS reg
BANZ SHIFT_LEFT ;Branch if AR0 >= 0
LAR AR0,#6h ;Reset AR0 = 6
;=====================================================================
; Shift Contents of LED_STATUS register to the right by 1 bit and
; write new value to the I/O Mapped LEDS register.
;=====================================================================
SHIFT_RIGHT:
CALL mS_DELAY ;Generate a 50ms delay
KICK_DOG ;Reset WD if not disabled
MAR *,AR0 ;Set ARP = AR0
LACC LED_STATUS ;Load ACC w/ LED_STATUS
SFR ;Shift LED_STATUS right by 1 bit
SACL LED_STATUS ;Store new LED_STATUS value
OUT LED_STATUS,LEDS ;Write new value to LEDS reg
BANZ SHIFT_RIGHT ;Branch if AR0 >= 0
LAR AR0,#6h ;Reset AR0 = 6
B SHIFT_LEFT ;Branch to SHIFT_LEFT
;=====================================================================
; Routine Name: mS_DELAY
; Originator: Scott Roller
;
; Description: Produces a multiple of 0.1mS delays using the RPT
; instruction. The Delay produced is based on the
; value loaded in mSEC (i.e. Delay = mSEC x 0.1mS).
; Indirect addressing is used to count the number
; of times the delay loop is repeated.
;
; Calling Convention:
;
; Variables on Entry on Exit
; --------------------------------------------------------------------
; DP XX 0x0000
; ARP XX AR1
; ACC XX XX
; mSEC value in 0.1 mS un-touched
; --------------------------------------------------------------------
;=====================================================================
mS_DELAY: LDP #0h ;DP-->0000h-007Fh
LACC #2000 ;Load RPT value to GPR0
SACL RPT_NUM
LAR AR1,mSEC ;Set AR0 to generate a
MAR *,AR1 ;(AR0*0.1)mSEC delay loop
mS_LOOP: LDP #0h ;DP-->0000h-007Fh
RPT RPT_NUM ;2000 cycles = 0.1mS
NOP ;1 cycle
BANZ mS_LOOP ;Repeat DELAY_LOOP
RET ;Return from DELAY SR
;=====================================================================
; I S R - PHANTOM
;
; Description: Dummy ISR, used to trap spurious interrupts.
;
; Modifies: Nothing
;
; Last Update: 16 June 95
;=====================================================================
PHANTOM KICK_DOG ;Resets WD counter
B PHANTOM
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -