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

📄 send.asm

📁 LPC900 FLASH单片机DTMF发送演示实例
💻 ASM
字号:
/*********** 周立功单片机研究所 *********************
*文件名:Send.asm
*版权:	www.zlgmcu.com
*日期:	2004/4/2
*功能:	LPC901操作HT9200,进行DTMF双音频发送演示程序
****************************************************/
$NOMOD51
$INCLUDE(REG932.INC)

CE		EQU	P3.1
KEY		EQU	P0.4
DATAPORT	EQU	P0.5	;数据口
CLK		EQU	P1.2	;CLK口

;----------------------------------------------
	ORG	0000H
	AJMP	MAIN
;----------------------------------------------
	ORG	0080H
MAIN:
	MOV	P0M1,#00h	;端口初始化
	MOV	P0M2,#00h
	MOV	P1M1,#00h
	MOV	P1M2,#00h
	MOV	P3M1,#00h
	MOV	P3M2,#00h

LOOP:	
	JB	KEY,LOOP	;判断键是否按下
	MOV	A,#15
	LCALL	Delayms		;延时15ms
	JNB	KEY,$		;判断键是否松开

	MOV	R7,#3		;发送次数
	MOV	R6,#0		;发送次序,逐地址递增
	MOV	DPTR,#SENDBUF	;获取预发送数的地址
LOOP1:	
	LCALL	Start_DTMF	;DTMF初始化
	MOV	A,R6
	MOVC	A,@A+DPTR	;将DPTR寻址到的数据,通过DTMF发送。
	LCALL	SendData

	MOV	A,#100
	LCALL	Delayms		;延时100ms
	LCALL	Stop_DTMF	;停止DTMF发送
	INC	R6
	DJNZ	R7,LOOP1
	
	AJMP	LOOP
	RET
;---------------------------------
;功能:DTMF初始化
;入口参数:
;---------------------------------
Start_DTMF:
	CLR	CE		;拉低CE,片选
	SETB	CLK		;拉高CLK,
	
	MOV	A,#10
	LCALL	Delayms		;延时10ms(tUP)
	RET
;---------------------------------
;功能:停止DTMF发送
;入口参数:
;---------------------------------
Stop_DTMF:
	MOV	A,#0FFh
	LCALL	SendData	;发送终止命令帧(0xFF)
	SETB	CLK		;拉高CLK
	SETB	CE		;拉高CE
	RET
;---------------------------------
;功能:发送5位数据
;入口参数:A(先低位后高位)
;---------------------------------
SendData:
	CLR	CY		;CY清0
	MOV	R5,#5		;循环次数5
LOOP_5:
	RRC	A		;将最低位循环置CY
	JC	BIT1		;为1跳至BIT1
BIT0:	
	CLR	DATAPORT	;拉低P0.5
	AJMP	SENDBIT		
BIT1:
	SETB	DATAPORT	;拉高P0.5
SENDBIT:
	CLR	CLK		;产生下降沿
	SETB	CLK		;恢复CLK为高
	DJNZ	R5,LOOP_5
	RET
;---------------------------------
;功能:延时100us(7.373MHz时)
;---------------------------------
DELAY100US:
	MOV	R4,#182
LOOP2:
	DJNZ	R4,LOOP2
	RET
;---------------------------------
;功能:ms级延时
;入口参数:A
;---------------------------------
DELAYMS:
	MOV	R3,A
LOOP_N:	
	MOV	R2,#10
LOOP10:
	ACALL	DELAY100US
	DJNZ	R2,LOOP10
	DJNZ	R3,LOOP_N
	RET
;-------------------------------------------------------
SENDBUF:	DB	02h,0Ah,04h	;拨号"204",这里编码"0A"对应数字"0"
;-------------------------------------------------------
	END
;-------------------------------------------------------

⌨️ 快捷键说明

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