⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex3.asm

📁 dsp实验测试程序,包括指令实验、存储器、串口、同步串口、步进电机、硬件中断、定时器、交通灯、直流电机、滤波器、正弦波发生器、语音录放、EXAM_C、显示屏
💻 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 + -