📄 lfleds.asm
字号:
;*********************************************************************
; File Name: lfleds.asm
; Target System: C240x Evaluation Board
;
; Description: This sample program helps you get familiar with
; manipulating the I/O mapped LEDS (DS4-DS4) on the
; F2407 EVM Development Board
;
; Revision: 1.00
;
;*********************************************************************
.include 240x.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
;===========================================================================================
; V E C T O R T A B L E ( including RT monitor traps )
;===========================================================================================
.copy "vector.h"
;==========================================================================================
; M A I N C O D E - starts here
;==========================================================================================
.text
START: LDP #0h
SETC INTM ;Disable interrupts
SETC CNF
SPLK #0h, IMR ;Mask all Ints
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
SPLK #0285h, SCSR1 ; x2 PLL, ADC en, EV1 en, clr Ill Addr flg
SPLK #006Fh, WDCR ;Disable WD if VCCP=5V
KICK_DOG
SPLK #0h, GPR0 ;Set 1 wait states for I/O space
OUT GPR0, WSGR
SPLK #1h,LED_STATUS ;Set bit 0 in LED_STATUS
OUT LED_STATUS,LEDS ;Turn on I/O LED-1
SPLK #5000,mSEC ;Set mSEC for a 50ms delay
LAR AR0,#2h ;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,#2h ;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,#2h ;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 + -