📄 send.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 + -