📄 ex3.asm
字号:
************************************************
* FileName: ex3.asm *
* Descriptiion: 异步串行口与PC机的接口实验 *
* Copyright(C) SanZhi Electronic, Author Zpin *
************************************************
.title "ex3"
.global _c_int00
.mmregs
.def _c_int00
UART_BASE .set 0x0000
THR .set UART_BASE+0x00
RBR .set UART_BASE+0x00
IIR .set UART_BASE+0x20
IER .set UART_BASE+0x10
FCR .set UART_BASE+0x20
LCR .set UART_BASE+0x30
MCR .set UART_BASE+0x40
LSR .set UART_BASE+0x50
MSR .set UART_BASE+0x60
SCR .set UART_BASE+0x70
DLL .set UART_BASE+0x00
DLM .set UART_BASE+0x10
BAUDLOW .set 60h
BAUDHIGH .set 61h
BAUDCTL .set 62h
RDDLM .set 63h
RDDLL .set 64h
RDTEMP .set 65h
IER_ADDR .set 66h
FCR_ADDR .set 67h
UART_STATUS .set 68h
REV_ADDR .set 69h
SEND_ADDR .set 6ah
THRE .set 0x0020
DR .set 0x0001
LEN .set 48
.data
SENDBUF:
.string "Welcome to use SanZhi DSPxperiment Instruments!"
.sect ".vectors"
rst: B _c_int00
NOP
NOP
.space 15*4*16
int0: B _comm ;ST16550C中断信号连到外部中断0
NOP
NOP
int1: B _comm
NOP
NOP
int2: B _comm
NOP
NOP
.space 13*4*16
.text
_c_int00:
LD #0h,DP
STM #3000h,SP
STM #07FFFh,SWWSR
STM #28h,AR1 ;设置外部等待时间倍数
ST #0001h,*AR1
SSBX INTM
STM #0000h,CLKMD ;5MHz工作
tst BITF CLKMD,#1h
BC tst,TC
uart_init:
ST #00H,IER_ADDR ;禁止所有中断
PORTW IER_ADDR,IER
ST #00H,FCR_ADDR ;禁止FIFO
PORTW FCR_ADDR,FCR
PORTR LCR,RDTEMP ;设置波特率为9600bps
ORM #0080H,RDTEMP
PORTW RDTEMP,LCR
LD #0018H,A
AND #00FFH,A
STL A,BAUDLOW ;置波特率低位
PORTW BAUDLOW,DLL
LD #00H,A
STL A,BAUDHIGH
PORTW BAUDHIGH,DLM ;置波特率高位
ANDM #0FF7FH,RDTEMP
PORTW RDTEMP,LCR
LD #03H,A ;8 BIT, 1 STOP, NO PARITY
STL A,BAUDCTL
PORTW BAUDCTL,LCR
STM #SENDBUF,AR0 ;发送字符串
STM #LEN,BRC ;设置字符串长度
RPTB LOOP
READY: PORTR LSR,UART_STATUS
BITF UART_STATUS,THRE
BC READY,NTC ;等待发送完成
PORTW *AR0+,THR
LOOP: NOP
NOP
ST #01H,IER_ADDR ;打开接受中断
PORTW IER_ADDR,IER
STM #0ffffh,IFR
STM #IMR,AR0
ORM #0007H,*AR0
RSBX INTM
susp: ;IDLE 1
NOP
NOP
B susp ;等待接收中断
_comm: PSHM 08h ;接收中断服务程序
PSHM 09h
PSHM 0ah
PSHM ST0
PORTR LSR,UART_STATUS
BITF UART_STATUS,DR
BC end_comm,NTC
PORTR RBR,REV_ADDR ;把接收到的字符再发送出去
PORTW REV_ADDR,THR
end_comm:
POPM ST0
POPM 0Ah
POPM 09h
POPM 08h
RETE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -