论坛风格切换切换到宽版
  • 3269阅读
  • 9回复

JJY 解码算法 [复制链接]

上一主题 下一主题
离线alphasun
 
发帖
51
只看楼主 倒序阅读 0楼 发表于: 2009-10-22
网络上流传的 jjy 解码算法写的不易读,而且还包含一个 bug。我在重写。
本程序还没有在单片机上调试。目前只在 pc 上完成调试。pc 上调试比较方便。好了之后再放到单片机上调试。
核心部分是 jjy.c ,unittest 是单元测试,用来触发核心部分代码。

请各位提意见。
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线alphasun
发帖
51
只看该作者 1楼 发表于: 2009-10-23
有没有人感兴趣的?
离线BG4UVR
发帖
11266
只看该作者 2楼 发表于: 2009-10-23
打开代码,没细看,看到这个

unsigned char g_puls_level = -1;
离线BH7KQK
发帖
3424
只看该作者 3楼 发表于: 2009-10-23
c语言高手多呀,你没看下面还有这样的吧!!

unsigned char g_puls_level = -1; //g_puls_level = 255;

if (g_puls_level == (unsigned char)-1) //相当于 if(g_puls_level == 255)
     {
           // 这是第一次电平采样
           g_puls_level = tco_in;
           return;
     }
......................

所以没问题呀。(如果下面用到的g_puls_level 的值不超过254的话)!!!
不过这样的东西还是要改改好!!!!
离线BH1KZM
发帖
1604
只看该作者 4楼 发表于: 2009-10-23
unsigned char g_puls_level = -1;
这个意思是设置成255 吧!
离线alphasun
发帖
51
只看该作者 5楼 发表于: 2009-10-23
'
unsigned char g_puls_level = -1;
这个意思是设置成255 吧!
'
是的,-1 就是 255. 这里用这个值表示尚未初始化的意思。实际的 puls level 值为 0,或者 1,表示高电平和低电平。
离线BG4UVR
发帖
11266
只看该作者 6楼 发表于: 2009-10-23
char的范围是-127到128
unsigned char的范围是0-255

我觉得unsigned char不应该给赋值成 -1。为此我刚才在winavr上做了一个实验:

  1. #include <avr/io.h>
  2. int main(void)
  3. {
  4.      unsigned char test = -1;
  5.      unsigned char test2= 100;
  6.      portd=test+test2;
  7.      while(1);
  8.      return(0);
  9. }


编译竟然不报警,结论:不懂~
离线alphasun
发帖
51
只看该作者 7楼 发表于: 2009-10-23
-1 这个问题,我还没在单片机上试过。pc 平台上,习惯采用这个方法,用 -1 来定义某个非正常值 (invalid value)。(unsigned char)-1 + 100 会溢出。"(unsigned char)-1" 这部分会由编译器转换成这个类型的 -1 如果是signed 类型,或者类型的最大值,如果是 unsigned 类型。

改天我试试单片机。

'
char的范围是-127到128
unsigned char的范围是0-255
我觉得unsigned char不应该给赋值成 -1。为此我刚才在winavr上做了一个实验:
  1. #include <avr/io.h>
  2. int main(void)
  3. {
  4.      unsigned char test = -1;
  5.      unsigned char test2= 100;
  6.      portd=test+test2;
  7.      while(1);
  8.      return(0);
  9. }

编译竟然不报警,结论:不懂~
'
离线BH7KQK
发帖
3424
只看该作者 8楼 发表于: 2009-10-23
没事的,照用不误,只是觉得不爽!!!
比如,
unsigned char i=200;
i+=200;
编译器也没理由会报错呀。对吧!!!
离线alphasun
发帖
51
只看该作者 9楼 发表于: 2009-10-24
已经在51上单元测试成功。接下来搞定时器,然后接 jjy 的解调电路。