图4 MT8888与80C32接口原理图
图4是MT8888与单片机80C32的接口电路原理图,由于可以直接接口,因此,无需构造控制信号。图中两片MT8888(S1和S2)共用一个时钟振荡器。单片机的P0.0~P0.3口接4位数据总线,片选信号由单片机的地址锁存信号ALE提供,读写信号由微处理器的读写信号和译码信号经或门后产生。寄存器选择信号接到地址线P2.0口,这样,对每一片MT8888均有两个地址。两个中断信号经与门后送至单片机的INT1引脚。电路中扩展了一片74365是用于软件判断是哪一路MT8888产生的中断而扩展的。当MT8888向单片机80C32发出中断请求信号后,CPU响应中断,执行中断服务程序。在中断服务程序中,首先读取74365的内容,以判断是哪一路MT8888所发出的中断请求后,再读取该路MT8888的状态寄存器,使中断自动清除以等待下一双音频信号。由于读完状态寄存器后,其内容即自动清除,重新读状态寄存器的内容是无效的,因此,应先将状态寄存器内容暂存于缓冲区内,再对标志位进行判断该中断信号是发送中断还是接收中断,以执行下一步的操作。需要注意的是,单片机80C32的INT1中断方式应设置为电平中断,才能同时检测两片MT8888的中断请求,防止信号丢失。
若将MT8888设置于呼叫处理工作模式,则通过对一定时间内中断次数的判断可以识别不同的呼叫信号音,如振铃、回铃音、忙音、空号音以及拥塞音等。
软件程序包括MT8888初始化子程序、发送数据子程序和中断服务子程序。另外,在设计硬件电路时,由于MT8888发送DTMF信号同时又送到MT8888输入端,这样导致在发送数据时,要引起接收数据中断,为了正确判断,在程序中设置一个发送数据标志tflang,当tflag=1时,MT8888为处于发送数据状态;同时,下面只给出第1片MT8888(S1)的程序。
MT8888(S1)初始化子程序
mov dptr,#a001h
movx a@dptr ;读状态寄存器SR
mov a,#00h
movx a@dptr,a ;写控制寄存器
movx a@dptr,a ;写控制寄存器
mov a,#08h
movx a@dptr,a ;写控制寄存器A
mov a,#00h
movx @dptr,a ;写控制寄存器B
movx a,@dptr ;读状态寄SR
mov a,#0dh ;设置MT8888工作方式
movx @dptr,a ;写控制寄存器A
mov a,#00h
movx @dptr,a ;写控制寄存器B
ret
MT8888(s1)数据发送子程序
入口参数:(r0)—待发送的DTMF数据。
Sendr02:
mov a,r0
mov dptr,#a000h
movx@dptr,a ;待发送数据送至TDR
ret
80C32 INT1中断服务子程序
int1:clr ea ;关中断
mov dptr,#8000h ;读取74365内容
movx a,@dptr
jb aCC.0,path1 ;转第1路MT8888
jb acc.2,path2 ;转第2路MT8888
ljmp end
path1:mov a,tflag ;判断工作方式标志字
cjne a,#01h,rece1
mov dptr,#a001h
movx a,@dptr ;读状态寄存器SR,清中断
anl a,#02h
cjne a,#02h,end
setb transend ;发送结束标志置位
ljmp end
recel:mov dptr,#a001h
movx a,@dptr ;读状态寄存器SR,清中断
mov dptr,#a000h
movx a,@dptr ;读DTMF信号的数据编码
mov r0,a ;结果存于r0
setb receiend ;收到结果标志置位
ljmp end
path2:(略)
end: setb ea ;开中断
reti
本文关键字:接收器 自动控制-单片机,电子制作 - 自动控制-单片机