3.1 访问EEPROM和看门狗设置
AT89S8252有看门狗和EEPROM控制寄存器WMCON。
WMCON EQU 96H ;WMCON的地址
;写一字节
SETB WMCON.3 ;访问EEPROM使能
SETB WMCON.4 ;写EEPROM使能
MOVX @DPTR,A ;写一字节,寻址范围0000H~07FFH
JNB WMCON.1,$ ;WMCON.1为1,准备下一次访问
CLR WMCON.4
CLR WMCON.3 ;MOVX指令可以访问外部数据存储器
从EEPROM读字节与写过程相似。
WMCON.0是看门狗使能位,WMCON.1是看门狗复位位(单片机复位后为1),WMCON.5~7可以设定看门狗的时钟周期(16~2048ms)。如果在看门狗的时钟周期内,没有设置看门狗复位位或者没有关闭看门狗,内部复位信号会复位单片机。
3.2 与PC串行通信
PC与单片机通信的数据格式有三种:命令长度+命令号;命令长度+命令号+读数据字节数N+首地址+校验和;命令长度+命令号+写数据字节数N +首地址+数据1+...+数据N+校验和。命令长度、命令号、读写数据字节数N、首地址和数据n(1≤n≤N)都是一字节,用16进制表示。命令长度是整个命令格式的字节数。校验和=命令号读数据字节数N首地址,或者校验和=命令号写数据字节数N首地址数据1...数据N。例如:显示附加数字信号1并且1号LED亮,PC发送0x02 0x01;读1号TMC2081的00~03控制存储器,PC发送0x5 0xB 0x4 0x0 0xF;写0x0 0x21 0x1D 0x0 到SAA7121的27~2A存储器,PC发送0x9 0xC 0x4 0x27 0x0 0x21 0x1D 0x0 0x13。
在单片机的串口中断子程序中,根据接收到的命令长度判断是否接收到一个完整的命令格式。如果接收到一个完整命令格式就设置标志位FLG1(如图3)。根据这个标志位进入主程序中处理PC命令的程序,由接收到的命令号识别各种PC发送的命令。例如,1号命令是显示附加数字信号1并且点亮1号LED,0xC号命令是写SAA7121存储器等。依据接收到的校验和,可以判断接收PC数据的正确性,防止对混合器的错误操作。
用VB6.0设计软件,读写PC的串行口。本文波特率为9600bps,单片机的定时器/计数器2(T2)设定在波特率发生器的工作方式。
3.3 访问TMC2081
TMC2081提供微处理器I/O口,包括读/写控制R//W、片选/CS、寄存器选择控制A[2:0]、数据I/O口D[7:0]。通过微处理器I/O口可以访问TMC2081的内部控制存储器,完成对芯片的配置。读写时序如图4。
参数tPWLCS、tSA、tSD、tHD、tPWHCS、tHA、tDOM的最短要求时间都是ns级。用AT89S8252软件编程可以模拟该端口的读写时序配置TMC2081。
本系统用到两片TMC2081,标记为TMC2081_0和TMC2081_1。AT89S8252的P3.6 连TMC2081_0/1的R//W,P2.3连TMC2081_0的/CS,P2.4连TMC2081_1的/CS,P2[2:0]连TMC2081_0/1的A[2:0],P0[7:0]连TMC2081_0/1的D[7:0](如图2)。读写TMC2081_0的A通道存储器的程序如下:
MC2081_0 EQU P2.3
TMC2081_1 EQU P2.4
R_NW EQU P3.6
MOV A,#00H
LCALL WADDRTMC2081_0 ;选中A通道控制寄存器
MOV A,#01H
LCALL WDATMC2081_0 ;写01到A通道控制寄存器
MOV A,#00H
LCALL WADDRTMC2081_0 ;选中A通道控制寄存器
LCALL RDATMC2081_0 ;读A通道控制寄存器的内容
WADDRTMC2081_0: 写控制寄存器地址
SETB TMC2081_1
SETB TMC2081_0
SETB R_NW
CLR R_NW
ORL P2,#00000111B
CLR TMC2081_0
SETB R_NW
MOV P0,A
SETB TMC2081_0
RET
WDATMC2081_0: 写数据到控制寄存器
SETB TMC2081_1
SETB TMC2081_0
SETB R_NW
CLR R_NW
ANL P2,#11111101B
CLR TMC2081_0
SETB R_NW
MOV P0,A
SETB TMC2081_0
RET
RDATMC2081_0: 读控制寄存器数据
SETB TMC2081_1
SETB TMC2081_0
SETB R_NW
ANL P2,#11111101B
CLR TMC2081_0
MOV A,P0
SETB TMC2081_0
RET
3.4 键控功能
有两个按键1、2。按下1号键,1号LED亮并且显示附加数字信号1;再按1号键,1号LED灭并且附加数字信号1不显示,恢复背景信号。2号键也同样,这样可同时显示两个附加数字信号。信号显示或不显示的过程必须在场消隐的第6个下降沿完成,才能保证显示或不显示的过程不影响背景信号。
行同步连P3.3,场消隐连计数器1(T1),按键1、2连P1.6、P1.7,P1.4和P1.5向混合器发出控制电平(如图2)。单片机主程序中以查询方式检测是否有按键按下。如果有,进入按键处理程序,先等待行同步的一个下降沿,然后启动计数器T1计数场消隐的下降沿,计数器T1溢出后P1.4或者P1.5取反,向混合器发出控制电平。本系统没有让行同步触发外部中断1子程序,只是简单地查询下降沿,实际结果表明查询方式更可靠、方便。
3.5 I2C接口
I2C总线是Philips公司提出的串行通信协议。通过串行数据线(SDA)和串行时钟线(SCL)传输数据。数据传输率最快为400kbps。本系统用P1.0和P1.1代表SDA和SCL,软件模拟I2C协议。
本系统充分利用了AT89S8252的内部资源,不需要外围设备,节省了空间。软件编程简单、实用。这种基于单片机控制的键控数字视频混合器已由师慧公司产品生产成KCM-D2000 Digital Key Control Mixer。实际应用表明该混合器工作稳定、方便,已经取得较好的市场价值。