?? main.s54
字號(hào):
;******************************************************************************
; SJTU DSP Tech. Center
; Copyright (c) 2003 SJTU DSP Tech. Center. All Rights Reserved.
;
; Description:
; TMS320C54x Program for Students Experiment
;
; History:
; Date Authors
; 2003/08/07 Zheng Yigang
;******************************************************************************
.mmregs
.include "uartasm.h54"
.bss databuffer, 100
.bss dataready, 1
.bss numberofdata, 1
.bss temp, 1
;==============================================================================
;==============================================================================
; begin of text ===
;==============================================================================
;==============================================================================
.text
main:
stm #STACK_ADDR, SP
;initialtion of dsp and rs232
call DSP_Init
call UART_Init
rsbx INTM ;open interrupt
st #0, *(dataready)
dead_loop:
stm #dataready, AR2
bitf *AR2, #1
bc continue, NTC ;判斷是否有數(shù)據(jù)在緩沖區(qū)
st #0, *(dataready);先恢復(fù)標(biāo)志位
call light_led ;亮指示燈
call write_out ;將緩沖區(qū)的數(shù)據(jù)全部讀出
continue:
b dead_loop
;===================================================================
;===================================================================
; to light leds for a few seconds =
;===================================================================
;===================================================================
light_led:
;when begin to read data, light led once
stm #temp, AR3
portr ADDR_CNTL1, *AR3
orm #0x07, *AR3
portw *AR3, ADDR_CNTL1
;delay some time,then disable led;
stm #500, AR2
delay2_out_loop:
stm #1000, BRC
rptb delay2_inner_loop-1
rpt #100-1
nop
delay2_inner_loop:
banz delay2_out_loop, *AR2-
;end of delay
portr ADDR_CNTL1, *AR3
andm #0xF8, *AR3
portw *AR3, ADDR_CNTL1
ret
;end of light_led
;===================================================================
;===================================================================
; to write out all data in FIFO ====
;===================================================================
;===================================================================
write_out:
stm #databuffer, AR2
rpt *(numberofdata)
portw *AR2+, ADDR_THR
ret
;end of write_out
;===========================================================
;===========================================================
; RS232_ISR ====
;===========================================================
;===========================================================
RS232_ISR:
pshm AR2
pshm AR3
pshm AR4
stm #temp, AR3
portr ADDR_IIR, *AR3
bitf *AR3, #0x04 ;判斷寄存器IIR的第二位是否為1
bc outint, NTC
bitf *AR3, #0x02 ;判斷寄存器IIR的第1位是否為0
bc fifoarrive, NTC ;IIR_bit2=1,bit1=0,表明是接受數(shù)據(jù)就緒中斷,開(kāi)始讀數(shù)據(jù)
portr ADDR_LSR, *AR3 ;否則,是線路狀態(tài)中斷,不讀數(shù)據(jù),讀LSR,然后退出中斷
b outint
fifoarrive:
st #0x01, *(dataready)
stm #databuffer, AR2
stm #0, AR4
read_all:
portr ADDR_RBR, *AR2+
portr ADDR_LSR, *AR3
mar *AR4+ ;記下讀取數(shù)據(jù)的個(gè)數(shù)
bitf *AR3, #0x01
bc read_all, TC ;判斷數(shù)據(jù)有沒(méi)有讀完
mar *AR4-
mvmd AR4, numberofdata ;存放的值比實(shí)際個(gè)數(shù)少1
outint:
popm AR4
popm AR3
popm AR2
popm ST1
popm ST0
rete
;===================================================================
;===================================================================
;vector table ====
;===================================================================
;===================================================================
.sect "vectors"
int_reset:
b main
nop
nop
.space 64*16
int_int1:
bd RS232_ISR ;進(jìn)入中斷程序
pshm ST0
pshm ST1
.space 56*16
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -