4.3 软件设计
    言归正传,下面开始“务实”。
    为便于读者理解,将工作原理框图再次列出:

图2 工作原理框图


    具体功能描述如下:
传感器的工作由通讯命令控制,上电状态为待命状态。
工作分为“自动测量”和“单轮测量”两种模式。
“自动测量”时,传感器按一定周期自动完成测量过程,并保存测量数据。
“自动测量”又分为“被动数据返回”和“主动数据返回”两种方式。
“被动数据返回”方式下,传感器只将测量结果保存下来,等待系统读取。
“主动数据返回”方式下,传感器每完成一次测量均立即将数据发送给系统。
“自动测量”可以设置测量周期。
“单轮测量”为接收到命令后开始测量,并返回数据,测量命令可设置测量次数、数据处理方式,传感器按要求返回,增加测量的可靠性。

    在硬件设计中,已将MCU的I/O口分配,软件设计则需要将MCU的内部硬件资源分配,以完成相应的功能。
    实际上,有些I/O口定义后,其相应的内部资源就确定了,如中断输入。
MCU内部资源分配:
INT0 —— 保留;
INT1 —— 作为收到超声波回波中断;
Timer0 ——  产生 1ms 时基;
Timer1 —— UART波特率发生器;
PCA0 —— 保留;
PCA1 —— 发射时作 40 KHz方波计时,接收时作增益变换计时,采用同样的工作模式;
UART —— 串行通讯,命令输入和数据输出;

按上述功能,程序由两个部分构成,
通讯 —— 负责接收命令,返回数据
测量 —— 负责超声波发射、回波检测、计算和数据处理
    为了让程序可靠运转,各功能所需的定时要求得到满足,增加时基处理。程序的基本框架如图1所示。