2.1 控制模块的实现
为了实现控制模块对MCLR端的电平控制,使用2个晶体管T1、T2,如图3所示。当单片机I/O口为高电位时,T1导通,其发射级为低电位,T2导通,于是电源VPP与PIC的MCLR端接通;当I/O口为低电位时,T1截止,其发射级为高电位,T2截止,VPP和MCLR端之间断开。
2.2 监控显示模块
采用一组发光二极管来显示系统状态和编程结果。系统的工作状态包括:目标芯片检测、就绪等待、编程进行中、代码校验等。系统在就绪等待状态下,就绪状态灯亮,主控机监控按键指令;接到指令后即进入编程状态,同时编程灯亮,编程后执行校验,校验完成后结束灯亮,说明完成整个缩程工作。整个编程过程中,若遇到故障,相应故障灯显示。
3 系统软件设计
3.1 数据(命令)输入方法
无论是指令还是需要写入的代码数据,都在相应的时钟节拍下由串行数据端输入。串行时钟始终与串行数据的要求一致。对于不同的命令,时钟脉冲间的时间参数 t1~t6的要求是不同的。在相应时钟脉冲下降沿,PIC对数据端采样,命令代码在前,一段时间延时后,输入代码数据。数据低位在前,高位在后,如图4所示。时间参数的具体要求见参考文献。
下面以数据导入为例简要说明。
代码举例如下:
由命令字表中可知,若导人数据的命令字是xx0010B,低位在前由ISDAT输入,每次ISCLK的下降沿对ISDAT采样。以上代码实现了“0”、 “1”的输入,其他命令的输入类似。数据输入和命令输入都是下降沿有效。每次导入1字节的数据为12位,但是必须在16个时钟脉冲中完成。前6个时钟脉冲的下降沿输入命令字,且前4位有效。一段时间参数的延迟后,数据开始输入,第1个时钟下降沿输入起始位,后第2~13个时钟的下降沿输入1字节的数据,共 12位。第14、15个时钟下降沿输入数据无效,最后一个下降沿输入停止位(起始位和停止位固定为O)。