主要是自己搞着玩儿,万一能用就自己做一个,搞不出来就当是深入学习单片机。
我现在的思路如下:
0. 按照Dot = 0、Dash = 1 的原则将每个字符转换为8位二进制数,如字符A,莫尔斯码为 • —,转换后为 0000 0001,以此类推做成一张CW字符表。
1. 通过中断读取按键的时长,并记入数组。时长小于最小Dot 或大于最大Dash 则忽略不计。
2. 当按键停顿的时间超过字符间隔或者点划数大于字符的最大点划数时,对数组中的时长记录进行分析。
3. 找出数组中最小的时长作为Dot的时长,并记入变量Dot,数组其余的时长数据均与这个变量做比较。
4. 循环认定,当时长大于或等于3 x Dot时,认定为 Dash(1),否则认定为Dot(0)。认定结果记入数组。
5. 以认定结果查CW字符表,找到相应的字符,如未查到则为拍发错误。
6. 返回第1步继续循环。