a.使用汇编语言编制控制程序,这样可以精确地控制内存的使用;

b.使用半个字节(4位)代表一个石英晶体的8个状态,使用72个字节就可表示144个石英晶体的所有状态;

c.刷新LED的子程序将读取到的石英晶体状态转换成LED的状态输出。

5、 LED的状态跟随机械运动

因为机械在不停的运动,因为对应的LED显示也必须跟着变化。同时,测试电脑传来的测试结果必须实时记录并显示在石英晶体对应的LED上,如果机械结构的每次运动,就在内存中调整一次与LED对应的状态值,必然会有较大的CPU运算开销。同时,同一个石英晶体的测试结果在内存中的位置在不停的变动,使得测试结果的更新算法用汇编语言不好实现。其采取的办法是,每个石英晶体的测试结果在内存中的位置是固定的。但在刷新LED的状态时,读取测试结果的开始位置是变化的。当刷新子程序从第二组LED状态数据开始读取时。电路扳上的第一组LED的状态指示第二个石英晶体的测试结果,其他的LED的状态也依次提前一个。从外观上看所有LED的指示状态向前移动了一个位置。

6、 串行通讯

主控电路需要触发电脑测试过程,并且在测试结束时取得测试结果。为了电路的通用性和易于扩展,直接使用计算机COM口,采用9针非标准RS232通讯协议。根据RS232通讯协议,电脑COM口的RXD、TXD信号为±12 V电平,而单片机上的信号为TTL电平。此电路只需要

单一的5V电源,内部通过电荷泵提供±12V电源,(详见图3)。

在电脑上开发上位软件,由其控制PI网络测试卡的测试过程,并且将测试结果传到单片机上,在单片机上的程序也同样编制了相应的通讯模块与其配合,同时制定了一个单字节的软件通讯协议,完成各种信息的通讯。