打印

我接手过程序,胃都气疼了。

[复制链接]
19429|99
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1icme|  楼主 | 2009-10-9 09:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 1icme 于 2009-10-9 16:21 编辑

当时设计者和经理还牛气哄哄的,要我学习和参考这个程序,还好我没听他们的,自己先整了个,然后才接手。
接手后就被要求修改。那可真叫吐血,改得胃都疼,而且只有1000元工资啊。
注意,没有仿真器。我只能是改一点烧一次芯片,然后安装一次外壳,从三楼跑到一楼,去测试,测试结果都由售后人员评判。碰上想象力丰富一点的售后人员,我就改惨了。

这个是对24C16的执行数据写入和读出的代码,代码量只有全部总量的三十分之一。   

另外,这里面有错误。还好我自己写过,所以看到现象就感觉可能出错的地方。现象就是对不同的24C16有时可以存入有时不行。
那个装逼的经理根本想不明白是怎么回事。当时设计者已经走人了,经理把我叫过去,怀疑是我烧写芯片时把程序弄错了,或者是擅自修改程序,或者是偷梁换柱。反正他脑子里净是些乱七八糟的念头。最后他的结论就是24C16质量怎么这么差。

void wit16(uint suba,uint *s,uchar no)//EEPROM存函数16位,suba为要存的地址,*s为存的数据,no要存的个数
  {
   uchar i,i1,i2;
   uchar a;
   uint *s1;
   s1=s;
   i2=0;
   EA=0;
loop4:   Start_I2c1();               /*启动总线*/
   i1=suba>>8;
   i1<<=1;
   SendByte1(0xa0+i1);                  /*发送器件地址*/
     if(ack1==0) goto loop2;
   i=suba&0xff;
   SendByte1(i);                  /*发送器件子地址*/
     if(ack1==0) goto loop2;

   for(i=0;i<no;i++)
    {for(i1=0;i1<2;i1++)
       {if(i1==0)
          {a=*s;
           SendByte1(a);              /*发送数据*/
           if(ack1==0) goto loop2;
          }
        if(i1==1)
          {a=*s>>8;
           
          SendByte1(a);               /*发送数据*/
           if(ack1==0) goto loop2;
          }
          }
     s++;
    }
loop2: Stop_I2c1();                  /*结束总线*/
if(ack1==0&&i2<4)
  
     {s=s1;
      i2++;
      goto loop4;
     }
     EA=1;
}

void red16(uint suba,uint *s,uchar no)    //EEPROM读函数16位,suba为要读的地址,*s为存放读的数据,no要读的个数
    {
   uchar i,i1,i2;
   uint a;
   uint *s1;
   s1=s;
   i2=0;
   EA=0;
loop4:  Start_I2c1();               /*启动总线*/
   i1=suba>>8;
   i1<<=1;
   SendByte1(0xa0+i1);            /*发送器件地址*/
    if(ack1==0) goto loop1;
    i=suba&0xff;
   SendByte1(i);            /*发送器件子地址*/
     if(ack1==0) goto loop1;

   Start_I2c1();
   SendByte1(0xa1+i1);
      if(ack1==0) goto loop1;

   for(i=0;i<no;i++)
    {for(i1=0;i1<2;i1++)   
       {
        if(i1==0)
          {*s=RcvByte1();               /*发送数据*/
           Ack_I2c1(0);                /*发送就答位*/  
          }
        if(i1==1)
          {
           a=RcvByte1();               /*发送数据*/
           *s+=a<<8;
           if(i+1<no)
              Ack_I2c1(0);  
           else
             Ack_I2c1(1);                /*发送就答位*/  
          }
        }      

     s++;
    }

loop1:Stop_I2c1();                    /*结束总线*/
  if(ack1==0&&i2<4)
   
    {s=s1;
    i2++;
     goto loop4;
    }
    EA=1;
}

void wit32(uint suba,ulong *s,uchar no)//EEPROM存函数32位,suba为要存的地址,*s为存的数据,no要存的个数
{

   uchar i,i1,i2;
   uchar a;
   ulong *s1;
   s1=s;
   i2=0;
   EA=0;
loop4:   Start_I2c1();               //启动总线
    i1=suba>>8;
   i1<<=1;
   SendByte1(0xa0+i1);            //发送器件地址
     if(ack1==0) goto loop2;
       i=suba&0xff;
   SendByte1(i);            //发送器件子地址
     if(ack1==0) goto loop2;

   
   for(i=0;i<no;i++)
    {for(i1=0;i1<4;i1++)
       {if(i1==0)
          {a=(*s)&0xff;
           SendByte1(a);               //发送数据
           if(ack1==0) goto loop2;
          }
        if(i1==1)
          {a=(*s>>8)&0xff;
           
          SendByte1(a);               //发送数据
           if(ack1==0) goto loop2;
          }
        if(i1==2)
          {a=(*s>>16)&0xff;
           
          SendByte1(a);               //发送数据
           if(ack1==0) goto loop2;
          }
         if(i1==3)
          {a=(*s>>24)&0xff;
           
          SendByte1(a);               //发送数据
           if(ack1==0) goto loop2;
          }
      
        }
     s++;
    }
loop2: Stop_I2c1();                 //结束总线
if(ack1==0&&i2<4)
   
     {s=s1;
      i2++;
      goto loop4;
     }
  EA=1;

  _nop_();_nop_();
  _nop_();_nop_();
  _nop_();_nop_();
  _nop_();_nop_();


}

void red32(uint suba,ulong *s,uchar no)   //EEPROM读函数32位,suba为要读的地址,*s为存放读的数据,no要读的个数
{
   uchar i,i1,i2;
   ulong a;
   ulong *s1;
   s1=s;
   i2=0;
   EA=0;
loop4:  Start_I2c1();               /*启动总线*/
   i1=suba>>8;
   i1<<=1;
   SendByte1(0xa0+i1);            /*发送器件地址*/
    if(ack1==0) goto loop1;
    i=suba&0xff;
   SendByte1(i);            /*发送器件子地址*/
     if(ack1==0) goto loop1;

   Start_I2c1();
   SendByte1(0xa1+i1);
      if(ack1==0) goto loop1;

   for(i=0;i<no;i++)
    {for(i1=0;i1<4;i1++)   
       {
        if(i1==0)
          {*s=RcvByte1();               /*发送数据*/
           Ack_I2c1(0);                /*发送就答位*/  
          }
        if(i1==1)
          {
           a=RcvByte1();               /*发送数据*/
           *s+=a<<8;
           Ack_I2c1(0);                /*发送就答位*/  
          }
        if(i1==2)
          {a=RcvByte1();               /*发送数据*/
           *s+=a<<16;
           Ack_I2c1(0);                /*发送就答位*/  
          }
        if(i1==3)
          {
           a=RcvByte1();               /*发送数据*/
           *s+=a<<24;
           if(i+1<no)
              Ack_I2c1(0);  
           else
           Ack_I2c1(1);                /*发送就答位*/  
          }
        }      
     s++;
    }
loop1:Stop_I2c1();                    /*结束总线*/
  if(ack1==0&&i2<4)
     {s=s1;
      i2++;
      goto loop4;
     }
     EA=1;
}

相关帖子

来自 2楼
kcl123| | 2009-10-10 18:11 | 只看该作者
83楼何必这么悲观呢?俺就是这样的,现在开始有了自己的公司,虽然不大,但是前景不错!
困难不少,我们做技术的尤其不适合引来送往,吹捧溜须,正因为这样困难,用我们的额努力和智慧取得一点成功,俺都觉得是很大的幸福!
想啊,猪给他100W,给他锦衣玉食,它还永远是猪!怎么的也成不了人!---不好听的话这叫啊Q好听的话这叫格调!^_^!

做技术是辛苦,但是还是那句话,不是什么人都有资格做的!

技术人员如果一辈子在做纯技术,可能从某种意义上时失败

更何况所谓的幸福感和金钱不成正比!这个恐怕和个人的心态修养等有关!

做技术的俺觉得应该平时有机会多学习一些,不要浪费时间,同时要多长点心眼,看看有没有什么机会,千万不要听老板忽悠了,尤其是非技术出生的老板,还好这辈子没被这些老板涮过,倒是调戏了他们几个,无他,牛X啊!!!俺觉得这些人除了钱,什么都不是!


技术人员最大的而缺点可能就是心高气傲!其实比我们厉害的多的是,老板是最喜欢技术人员争来争去的!他们渔翁得利啊!如果技术人员私心少一些联合起来,我看,整个中国知识分子的**将都有大的改观!-有时候老觉得别人有问题,可能反观自己的时候,我们自己有很多缺点


相当佩服ZLG 老板,听说原来还是中专毕业!努力加勤奋,再精明点,他就是老板了,那些除了吃喝玩乐,搞关系走后门的所谓老板,和老周一笔简直就是垃圾了!
---哈哈!仅仅是个人的而一些看法,敬请包涵!
忠言从来逆耳,请各位多担待些噻!!!

使用特权

评论回复
板凳
john_light| | 2009-10-9 09:47 | 只看该作者
厉害,连EA都操作上了。

使用特权

评论回复
地板
cantou| | 2009-10-9 09:52 | 只看该作者
楼主好厉害呀,不知道搞掂咩

使用特权

评论回复
5
1icme|  楼主 | 2009-10-9 09:59 | 只看该作者
不光驱动程序上有错误,而且主程序要实现的功能上也有潜在错误。碰上这些急功近利的人,根本没有任何测试就卖出去,然后让客户去做测试员。有问题再催促修改。而这个经理也只会在出问题之后骂娘。这个装逼的混混。

使用特权

评论回复
6
duojinian| | 2009-10-9 10:02 | 只看该作者
工,挣钱;作,挣钱;工作不挣钱。
在其位,未必谋其政

使用特权

评论回复
7
ZRL700424| | 2009-10-9 10:06 | 只看该作者
我就是你说的那个经理!

为什么以前的程序行呢?

使用特权

评论回复
8
1icme|  楼主 | 2009-10-9 10:22 | 只看该作者
楼上你少来了。你要是他,那你就应该知道为什么。因为这个问题早在两年前就解决了。

使用特权

评论回复
9
ZRL700424| | 2009-10-9 10:27 | 只看该作者
楼主,你胆子也太大了吧?居然没把你吓着!

既然问题早在两年前就解决了,那你改他的程序怎么会出错呢?

使用特权

评论回复
10
1icme|  楼主 | 2009-10-9 10:29 | 只看该作者
本帖最后由 1icme 于 2009-10-9 10:30 编辑

拜托。是他的程序出错,我来改。我讲的是往事。反正我又不在那干了,也和装逼的混混吵翻了,我怕个鸟。

使用特权

评论回复
11
ZRL700424| | 2009-10-9 10:37 | 只看该作者
哦,也就是你接手时程序还没有测试完或者已经测试完也出货了但还没发现这个问题,你接手后再改点别的什么功能时发现这个问题了

使用特权

评论回复
12
1icme|  楼主 | 2009-10-9 10:50 | 只看该作者
本帖最后由 1icme 于 2009-10-9 10:57 编辑

no,是经过短期的试用后就批量出货,在某个时候,质检发现怎么会有这个毛病,就报告给经理,经理在经过一番盘问后,得出是这批24C16质量不行的结论。我对此结论持怀疑态度,自己把程序里的错误找出来了。我当时完全可以不吭气。让他们去折腾24C16。而我主动请缨的结果就是不光改得累,而且还要把所有芯片都重新烧写一遍。却没有任何口头或者物质的奖励。甚至于可能被怀疑是我擅自修改导致的问题。

使用特权

评论回复
13
1icme|  楼主 | 2009-10-9 10:53 | 只看该作者
"注意,没有仿真器。我只能是改一点烧一次芯片,然后安装一次外壳,从三楼跑到一楼,去测试,测试结果都由售后人员评判。碰上想象力丰富一点的售后人员,我就改惨了。"
----------------------------
这个事情则是发生在售后人员在出货前做测试,发现了一些功能不对。然后心急火燎地要我马上改。

使用特权

评论回复
14
ZRL700424| | 2009-10-9 10:57 | 只看该作者
从三楼跑到一楼,去测试

没有模拟检测台?如果要现场调试的,我一般都用手提电脑

使用特权

评论回复
15
ZRL700424| | 2009-10-9 11:00 | 只看该作者
用单片机开发产品快7年了,还从来没改过别人的程序(就是要我改也改不了,因为我一般都看不懂也不愿意看别人的程序)

使用特权

评论回复
16
1icme|  楼主 | 2009-10-9 11:02 | 只看该作者
本帖最后由 1icme 于 2009-10-9 11:03 编辑

没有模拟检测台。更没有手提电脑。也不会有现场调试。最多就是跑去现场看看是什么现象,回来推想一下问题可能出在哪里。更多的时候是售后人员打电话告诉我他们看到的现象,甚至有时他们不说现象,而是自以为是地说问题出在哪里。把我搞得云里雾里。

使用特权

评论回复
17
ryq123321| | 2009-10-9 11:10 | 只看该作者
不擅于看懂别人程序的程序员算NB吗?

使用特权

评论回复
18
思考| | 2009-10-9 11:17 | 只看该作者
怎么在这个坛子里面经常发现有人指责别人的程序如何如何的差劲啊!那位懂心理学的能不能分析一下这些人想做什么?

使用特权

评论回复
19
1icme|  楼主 | 2009-10-9 11:20 | 只看该作者
接手这个的一个月里真是非常痛苦的一个月。
自打发现有错误以后,经理要我把十几个产品的程序都测试一遍,把错误解决掉,并且把产品说明书写出来(先前根本没有写像样的说明书,都是COPY加COPY,错误一大堆)。
而在付出这些辛苦之后,经理却决定使用新的硬件平台。我的辛苦都付之东流了。shit!
最可气的是,我离职前和老板的谈话里,老板认为我的工作很轻松,因为我接手了这些程序,不用再重头来!

使用特权

评论回复
20
ZRL700424| | 2009-10-9 11:22 | 只看该作者
不擅于看懂别人程序的程序员算NB吗?
ryq123321 发表于 2009-10-9 11:10


我说我NB了吗?看来你的中文水平还要加强啊

使用特权

评论回复
21
ZRL700424| | 2009-10-9 11:24 | 只看该作者
怎么在这个坛子里面经常发现有人指责别人的程序如何如何的差劲啊!那位懂心理学的能不能分析一下这些人想做什么?
思考 发表于 2009-10-9 11:17


楼主不是指责别人的程序不行,而是对他的经理有意见

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

242

帖子

0

粉丝