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

📄 ex7.asm

📁 用dsp编写的四个程序,关于数组,还有语音,录音功能的实现
💻 ASM
字号:
		.title "ex7"
		.global _c_int00
		.mmregs
		
PERSEC	.set	60h  ;存1/100秒的个数单元,地址为0061H
SEC		.set	61h  ;存秒的个数单元,地址为0061H
MIN		.set	62h  ;存分的个数单元,地址为0062H
STATUS	.set	63h  ;存状态值单元,地址为0063H
HOUS    .set    67h  ;存小时的个数单元,地址为0067H
TMP0	.set	64h  ;临时变量0单元,地址为0064H
TMP1	.set	65h  ;临时变量1单元,地址为0065H
TMP		.set	66h  ;临时变量单元,地址为0066H
D_LED	.set	01003h
;D_LED0	.set 	01h ; 这6个地址定义语句没有用处。
;D_LED1	.set 	02h
;D_LED2	.set 	03h
;D_LED3	.set 	04h
;D_LED4	.set 	05h
;D_LED5	.set 	06h
LED_DISP	.macro	hexdata   ;计算十六进制数的BCD码的宏
		LD hexdata,B     ;hexdata送到B
		ST #0Ah,TMP0     ;#0Ah写到TMP0 内容中
		RPT #15
		SUBC TMP0,B     ;该语句执行16次,算法。
		STH B,12,TMP0	 ;存放BCD码个位在TMP0中
		STL B,12,TMP1	 ;存放BCD码十位在TMP1中
    	.endm
DELAY	.macro sec_tenth		;延时 sec_tenth/10 秒
		STM sec_tenth-1,AR5 ;sec_tenth减1后送给AR5
loop1?	STM #09h,AR6     ;#09h送给AR6
loop0?	STM #49999,AR7     ;#49999送给AR7 
		BANZ $,*AR7-  ;如果AR7不为0,重新执行本语句,且AR7减1
		BANZ loop0?,*AR6-  ;如果AR6不为0,转向loop0?
		BANZ loop1?,*AR5-  ;如果AR5不为0,转向loop1?
		.endm
		.data ;段码, 下面的数据段数据内容初始化伪指令没有作用。
	 	.word 3F00h,0600h,5B00h,4f00h,6600h,6d00h,7d00h,0700h,7f00h,6f00h
		.sect ".vectors"
rst:	B _c_int00 ; 复位中断服务程序入口地址,转到_c_int00
		NOP
		NOP
		.space 18*4*16
tint:	B timeout   ;定时器中断入口地址,转到timeout
		NOP
		NOP
		.space 12*4*16
		.text
_c_int00
		LD #0h,DP  ;#0h送给DP 
		STM #3000h,SP  ;#3000h送给SP
		SSBX INTM  ;禁止所有非屏蔽中断
		RSBX SXM  ;无符号扩展位
		STM #07FFFh,SWWSR  ;#07FFFh送给SWWSR,加7个等待周期
		stm #0001h,2Bh     ;软等待数扩展,SWCR地址为2BH,内容赋值
		ST #0h,CLKMD     ; CLKMD=0
tst:	BITF CLKMD,#1h     ;如果CLKMD 与 #1H =0,TC=0,否则,TC=1
		BC tst,TC     ; 如果TC=1,转向TST。用于测试CLKMD是否为0
		ST #1007h,CLKMD  ;#1007h送CLKMD,工作主频为20MH
		 ;BITF CLKMD,#1h     ;无用
		 ;RPT #0FFh     ;无用
		NOP
		ORM #0010h,TCR  ;#0010h逻辑或TCR ,结果给TCR,定时器0控制寄存器
		ST #19999,PRD   ;PRD,定时器0周期寄存器送数19999
		ORM #0009h,TCR  ;#0009h逻辑或TCR ,结果给TCR,
		ORM #0020h,TCR  ;#0020h逻辑或TCR ,结果给TCR,
		ST #0FFFFh,IFR  ;IFR清零,清除挂起的中断申请
		ORM #0008h,IMR  ;TINT0位=1,允许定时器0中断
		RSBX INTM  ;所有非屏蔽中断使能
		ST #0,PERSEC  ;1/100秒个数的初始值为0
		ST #50,SEC  ;秒初始值为0
		ST #59,MIN  ;分初始值为57
		ST #23,HOUS  ;小时初始值为10
		ST #1,STATUS  ;初始状态标志为1状态
		ANDM #0FFEFh,TCR  ;#FFEFh逻辑与TCR ,结果给TCR

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -