HT9200A驱动程序(MCU采用12MHZ主频)代码
- 名称:HT9200A驱动程序(MCU采用12MHZ主频)代码
- 类型:单片机学习
- 授权方式:免费版
- 更新时间:09-10 22:57:14
- 下载要求:无需注册
- 下载次数:6910次
- 语言简体中文
- 大小:561 KB
- 推荐度:4 星级
《HT9200A驱动程序(MCU采用12MHZ主频)代码》简介
标签:单片机开发,单片机原理,
HT9200A驱动程序(MCU采用12MHZ主频)代码
向HT9200发送一串BCD码的数据(以FF结束)
;入口: R0->要传送的数据的存放首地址
;出口: R0->刚才传送的数据的存放首地址
;说明: 该程序会自动将BCD码或数字ASCII码转换为相应的串行拨号码后再进行发送(注:*用0EH表示,#用0FH表示)
; 这样的话,存放电话号码时就不必人为转换了,只需直接输入16进制的电话号码就可以了
; 如: TEL1: DB 01H,03H,05H,07H,08H,01H,02H,01H,09H,02H,04H,0FFH (13578121924)
; TEL2: DB '13578121924',0FFH (13578121924)
; TEL3: DB 06H,06H,04H,00H,01H,08H,01H,0FFH (6640181)
高速下载
; TEL4: DB 01H,01H,00H,0FFH (110)
;------------------------------
HT9200BYTES:
PUSH 00H
PUSH 07H
PUSH ACC
PUSH DPH
PUSH DPL
SETB HT9200_CE
SETB HT9200_DATA ;D4位使终为0
SETB HT9200_CLK ;将时钟线拉为高电平,为下降沿做准备 无需注册
CLR HT9200_CE ;选中HT9200,使其开始进入工作状态
MOV R7,#0AH ;0AH=10,延时10MS,等待HT9200启振完毕
LCALL DELAY1 ;
HT9200BYTES1:
MOV A,@R0 ;取出一个要发送的数据
CJNE A,#0FFH,HT9200BYTES2 ;是结束码FF吗,不是则转
SETB HT9200_CE ;要发的数据已发完,取消对HT9200的控制
POP DPL
POP DPH
POP ACC PCB下载站
POP 07H ;
POP 00H
RET
HT9200BYTES2:
ANL A,#0FH ;去除无用的高4位(见0出0,全1则1)
MOV DPTR,#DTMFTAB ;串行拔号码的存放首地址
MOVC A,@A+DPTR ;取出对应的串行拨号码
LCALL HT9200BYTE ;向HT9200发送一个DTMF码的数据
INC R0 ;指向下一个要发送的数据
AJMP HT9200BYTES1 字串9
;对应十六进制数:0 1 2 3 4 5 6 7 8 9 A B C D E F
;对应DTMF编码: 0 1 2 3 4 5 6 7 8 9 A B C D * #
DTMFTABB 0AH,01H,02H,03H,04H,05H,06H,07H,08H,09H,0DH,0EH,0FH,00H,0BH,0CH
;====================================================
;
;====================================================
;向HT9200发送一个DTMF码的数据(共5位,D4、D3、D2、D1、D0,先发送D0位,最后发送D4位,其中D4位均为0)
;入口: A->要传送的数据 专业软件下载
;出口: A->刚才传送的数据
;------------------------------
;说明:如果要直接调用该子程序的话,需在调用前启动HT9200A,即加上如下的代码段:
; CLR HT9200_CE ;选中HT9200,使其开始进入工作状态
; MOV R7,#0AH ;0AH=10,延时10MS,等待HT9200启振完毕
; LCALL DELAY1 ;
;------------------------------
HT9200BYTE:
PUSH 07H
PUSH PSW
PUSH ACC
SETB HT9200_DATA
SETB HT9200_CLK
高速下载
ANL A,#0FH ;去除无用的高4位(见0出0,全1则1),有效数中,D4位使终为0
MOV R7,#05H ;发送5位
HT9200BY1:
RRC A ;取出一个位在C中(先发送最低有效位)
SETB HT9200_CLK ;将时钟线拉为高电平,为下降沿做准备
LCALL DL10US ;延时10微秒
MOV HT9200_DATA,C ;将要发的位放在数据线上
LCALL DL10US ;延时10微秒 字串7
CLR HT9200_CLK ;形成下降沿
LCALL DL10US ;延时10微秒
DJNZ R7,HT9200BY1 ;是否发完5位
SETB HT9200_DATA ;放开总线后HT9200A才开始发送DTMF编码
SETB HT9200_CLK
;此时,HT9200A开始向外发送对应的DTMF编码
MOV R7,#3CH ;延时60MS,以维持DTMF编码的发送
LCALL DELAY1 ;即,每个数字的DTMF编码的发送必须>50MS
;到此,刚才的DTMF编码已成功的向外发送出去,可以停止HT9200A向外发送刚才的DTMF编码了 字串8
MOV R7,#05H ;DTMF停止发送指令为5位,且全是1
HT9200BY2:
SETB HT9200_CLK ;将时钟线拉为高电平,为下降沿做准备
LCALL DL10US ;延时10微秒
SETB HT9200_DATA ;将要发的位放在数据线上,5位全是1
LCALL DL10US ;延时10微秒
CLR HT9200_CLK ;形成下降沿
LCALL DL10US ;延时10微秒
DJNZ R7,HT9200BY2 ;是否发完5位 无插件,无病毒
;到此,HT9200A已经停止了刚才的DTMF编码的发送
SETB HT9200_DATA ;放开数据线
SETB HT9200_CLK ;放开时钟线
MOV R7,#32H ;延时50MS,为下个数字的发送留出间隔时间
LCALL DELAY1 ;即,每两个数字的DTMF编码的间隔时间必须>50MS
POP ACC
POP PSW
POP 07H
RET
;====================================================
;====================================================
;控制HT9200A发送一个单音频信号 高速下载
;入口: A->要发出的一个单音频信号的代码,代码表如下
; 10H -> 697HZ
; 11H -> 770HZ
; 12H -> 852HZ
; 13H -> 941HZ
; 14H -> 1209HZ
; 15H -> 1336HZ
; 16H -> 1477HZ
; 17H -> 1633HZ 专业软件下载
;出口: 无
HT9200DY:
PUSH 07H
PUSH PSW
PUSH ACC
SETB HT9200_DATA
SETB HT9200_CLK
CLR HT9200_CE ;选中HT9200,使其开始进入工作状态
MOV R7,#0AH ;0AH=10,延时10MS,等待HT9200启振完毕
LCALL DELAY1 ;
ORL A,#10H ;必须保证D4位为1
MOV R7,#05H ;发送5位 字串6
HT9200DY1:
RRC A ;取出一个位在C中(先发送最低有效位)
SETB HT9200_CLK ;将时钟线拉为高电平,为下降沿做准备
LCALL DL10US ;延时10微秒
MOV HT9200_DATA,C ;将要发的位放在数据线上
LCALL DL10US ;延时10微秒
CLR HT9200_CLK ;形成下降沿
LCALL DL10US ;延时10微秒
DJNZ R7,HT9200DY1 ;是否发完5位 高速下载
SETB HT9200_DATA
SETB HT9200_CLK
;此时,HT9200A开始向外发送对应的单音频信号
MOV R7,#0C8H ;延时200MS,以维持DTMF编码的发送
LCALL DELAY1 ;
;到此,刚才的DTMF编码已成功的向外发送出去,可以停止HT9200A向外发送刚才的DTMF编码了
MOV R7,#05H ;DTMF停止发送指令为5位,且全是1
HT9200DY2:
SETB HT9200_CLK ;将时钟线拉为高电平,为下降沿做准备
LCALL DL10US ;延时10微秒
SETB HT9200_DATA ;将要发的位放在数据线上,5位全是1 字串9
LCALL DL10US ;延时10微秒
CLR HT9200_CLK ;形成下降沿
LCALL DL10US ;延时10微秒
DJNZ R7,HT9200DY2 ;是否发完5位
;到此,HT9200A已经停止了DTMF编码的发送
SETB HT9200_DATA ;放开数据线
SETB HT9200_CLK ;放开时钟线
POP ACC
POP PSW
POP 07H
RET 无需注册
;====================================================
;
;====================================================
;延时10微秒@12MHZ
;入口:无
;出口:无
;------------------------------
DL10US: PUSH 03H
MOV R3,#05H ;5*2=10US
DL10US0JNZ R3,DL10US0
POP 03H
RET
;====================================================
;
;====================================================
;延时@R7个1MS @12MHZ
;入口:无
;出口:无
;------------------------------
DELAY1: PUSH 00H
CJNE R7,#00H,DL11 字串9
SJMP DL13
DL11: MOV R0,#64H
DL12: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R0,DL12 ;1.0 US X 10 X 100
DJNZ R7,DL11
DL13: POP 00H
RET
;====================================================, 大小:561 KB
Tag:单片机学习,单片机开发,单片机原理,单片机学习
- 上一篇:8251串行接口应用与实验程序
《HT9200A驱动程序(MCU采用12MHZ主频)代码》相关下载
- › HT9200A驱动程序(MCU采用12MHZ主频)代码
- 在百度中搜索相关下载:HT9200A驱动程序(MCU采用12MHZ主频)代码
- 在谷歌中搜索相关下载:HT9200A驱动程序(MCU采用12MHZ主频)代码
- 在soso中搜索相关下载:HT9200A驱动程序(MCU采用12MHZ主频)代码
- 在搜狗中搜索相关下载:HT9200A驱动程序(MCU采用12MHZ主频)代码
编辑推荐
分类导航
最新下载