www.pudn.com > DSPstudyandexample.rar > EX04.ASM


***定时器实验*** 
 
 
		.title	"ex4" 
		.global	_c_int00 
		.mmregs 
 
ExNo	.set	00h 
PERSEC	.set	01h 
SEC		.set	02h 
MIN		.set	03h 
STATUS	.set	04h 
 
TMP0	.set	64h 
TMP1	.set	65h 
TMP		.set	66h 
 
		 
		.sect	".vectors" 
rst:	B		_c_int00 
		NOP 
		NOP 
		.space	18*4*16 
 
tint:	B		timeout 
		NOP 
		NOP 
		.space	12*4*16 
		 
		.text 
_c_int00 
		LD 		#020h,DP				;置数据页指针 
		STM		#3000h,SP 
		SSBX	INTM 
		RSBX	SXM 
		STM		#07FFFh,SWWSR 
		stm		#0001h,2Bh 
		stm		#00a8h,PMST				;改变中断向量映射到0x0080 
		 
		STM		#1007h,CLKMD 
		BITF 	CLKMD,#1h 
		RPT 	#0FFh 
		NOP 
		NOP 
		ST		#0004H,ExNo 
		 
		STM		#19999,PRD 
		STM 	#0039h,TCR 
		STM		#0FFFFh,IFR 
		STM 	#0008h,IMR 
		RSBX 	INTM 
 
		ST 		#0,PERSEC 
		ST 		#0,SEC 
		ST 		#0,MIN 
		ST 		#1,STATUS 
		nop 
		nop 
		nop 
		nop 
 
		LDM		TCR,A 
		AND 	#0FFEFH,A 
		STLM	A,TCR 
 
susp	nop 
		nop 
		nop 
		B 		susp 
		 
timeout ADDM 	#1,PERSEC 
		NOP 
		NOP 
		NOP 
		NOP 
        LD 		#100,A 
        NOP 
        NOP 
        SUB 	PERSEC,A 
        BC 		secout,ALEQ 
        B 		exit 
secout	ST 		#0,PERSEC 
        ADDM 	#1,SEC 
		LD 		#60,A 
		SUB 	SEC,A 
		BC 		minout,ALEQ 
		B 		exit 
minout	ST 		#0,SEC 
		ADDM 	#1,MIN 
		LD 		#100,A 
		SUB 	MIN,A 
		BC 		overflow,ALEQ 
		B 		exit 
overflow 
		ST 		#0,MIN 
		ORM 	#0030h,TCR		;Stop and Reload Timer 
		ST 		#0,STATUS		;Set stopfalg 
		 
exit 
		RETE 
		 
restart ST 		#0,PERSEC 
		ST 		#0,SEC 
		ST 		#0,MIN 
 
		ANDM 	#0FFEFh,TCR 
		RETE		 
 
		.end