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

📄 electronic organ.asm

📁 Proteus在MCS-51%26ARM7系统中的应用百例 Proteus在MCS-51%26ARM7系统中的应用百例
💻 ASM
字号:
LINE	EQU		30H
ROW		EQU		31H
VAL		EQU		32H
		ORG		00H
		SJMP	START
		ORG		0BH
		LJMP	INT_T0
START:	MOV		P0,#00H
		MOV		TMOD,#01H
;******************************************
;按键扫描程序
;******************************************
LSCAN:	MOV		P3,#0F0H	
L1:		JNB		P3.0,L2
		LCALL	DELAY
		JNB		P3.0,L2
		MOV		LINE,#00H
		LJMP	RSCAN
L2:		JNB		P3.1,L3
		LCALL	DELAY
		JNB		P3.1,L3
		MOV		LINE,#01H
		LJMP	RSCAN
L3:		JNB		P3.2,L4
		LCALL	DELAY
		JNB		P3.2,L4
		MOV		LINE,#02H
		LJMP	RSCAN
L4:		JNB		P3.3,L1
		LCALL	DELAY
		JNB		P3.3,L1
		MOV		LINE,#03H

RSCAN:	MOV		P3,#0FH
C1:		JNB		P3.4,C2
		MOV		ROW,#00H
		LJMP	CALCU
C2:		JNB		P3.5,C3
		MOV		ROW,#01H
		LJMP	CALCU
C3:		JNB		P3.6,C4
		MOV		ROW,#02H
		LJMP	CALCU
C4:		JNB		P3.7,C1
		MOV		ROW,#03H		

CALCU:	MOV		A,LINE			;计算键号
		MOV		B,#04H
		MUL		AB
		ADD		A,ROW
		MOV		VAL,A
;*******************************************
;根据键号查表得到定时器的定时常数,
;从而发出不同频率的声音
;*******************************************
		MOV		DPTR,#TABLE2	
		MOV		B,#2
		MUL		AB
		MOV		R1,A
		MOVC	A,@A+DPTR
		MOV		TH0,A
		INC		R1
		MOV		A,R1
		MOVC	A,@A+DPTR
		MOV		TL0,A
		MOV		IE,#82H
		SETB	TR0

		MOV		A,VAL			;显示键号
		MOV		DPTR,#TABLE1
		MOVC	A,@A+DPTR
		MOV		P0,A
;*******************************************
;等待按键释放
;*******************************************
	W0:	MOV		A,P3			
		CJNE	A,#0FH,W1
		MOV		P0,#00H
		CLR		TR0
		LJMP	LSCAN
	W1:	MOV		A,P3
		CJNE	A,#0F0H,W2
		MOV		P0,#00H
		CLR		TR0
		LJMP	LSCAN
	W2:	SJMP	W0	
;****************************************
;定时器0中断服务程序,输出特定频率的方波,
;驱动扬声器发声
;****************************************
INT_T0:	MOV		DPTR,#TABLE2
		MOV		A,VAL
		MOV		B,#2
		MUL		AB
		MOV		R1,A
		MOVC	A,@A+DPTR
		MOV		TH0,A
		INC		R1
		MOV		A,R1
		MOVC	A,@A+DPTR
		MOV		TL0,A
		CPL		P1.0
		RETI	

DELAY:	MOV		R6,#10
D1:		MOV		R7,#250
		DJNZ	R7,$
		DJNZ	R6,D1
		RET

TABLE1: DB 		3FH,06H,5BH,4FH,66H,6DH,7DH,07H
		DB 		7FH,6FH,77H,7CH,39H,5EH,79H,71H
TABLE2:	DW 		64021,64103,64260,64400
		DW 		64524,64580,64684,64777
		DW 		64820,64898,64968,65030
		DW 		65058,65110,65157,65178
		END

⌨️ 快捷键说明

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