打印

不想因为我是女孩让老板轻视

[复制链接]
12726|72
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
123294382|  楼主 | 2009-10-5 23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我今年毕业在珠海灯饰电子公司上班,在产品研发部上班,可是我的能力有限,唯一的一个工程师辞职了,还有一个,我不想问他,老板让我看辞职的那个工程师的代码,并且开发这个渐变的灯饰产品,我有好多地方看不懂,我不想第一次就此卡壳了,让老板另眼相看,所以求救大家给我看看
  如果能逐句解释一下,我谢谢你了,并不是都看不懂,看懂的了也是很模糊,我们公司就五六个大程序,也就是五六个灯种,我要把这六个大程序看懂,让后能在基础上修改就行了
/***********************************************************
*项目名称   渐变控制器
*程序编写   ***
*创建日期   2007-4-18
*修改日期   2007-4-18
*程序说明   七彩跳变及渐变
*CPU        STV12C2052
************************************************************/
#include<reg51.h>               /*预处理命令*/
#include<stdio.h>               /*预处理命令用到标准输入输出函数时,就要调用这个头文件*/
#define uchar unsigned char     //*无符号字符型  1Byte
#define uint unsigned int       //*无符号整数型  2Byte
#define ulong unsigned long       //*无符号整数型  4Byte
//**********************************************
sbit  R1=P3^7;
sbit  G1=P3^5;
sbit  B1=P3^4;   
sbit  biaozhi=P1^7;
sfr   AUXR=0x8e;
sfr   P1M0=0x91;
sfr   P1M1=0x92;
sfr   P3M0=0xb1;
sfr   P3M1=0xb2;
// sfr   WDT=0xe1;  //看门狗
//**********************************************
//  interrupt 0=外部中断0  1=定时器0中断 2=外部中断1  3=定时器1中断  4=串行口中断
void YIANSHI(uint);//延时函数声明
void YS(uint);
void TMRJIA();
void TMGJIA();
void TMBJIA();
void huayang1();
void huayang2();
void HL();
void LH();
//**********************************************
uint TM0,TMR,TMG,TMB,acc,i;
uchar a,ADD,WDTTMP;
uchar XS[10];
uint DE,bz2;
uchar JISHU;
uchar JISHU1;
bit bz1;
bit bz3;
//**********************************************
void main()
{
  
  AUXR=0x40;   //设置定时器为1T
  TMOD=0x15;   //定时器方式设定
  SCON=0X50;   //串行口控制
  TL0=0xcd;
  TH0=0xff;
  TL1=0x00;
  TH1=0x00;
  TR0=0;       //定时器0使能
  TR1=1;       //定时器1使能
  IT0=1;       //INT0触发方式    IT0=0 低电平触发  IT1=0 下降沿触发
  IT1=0;       //INT1触发方式    IT1=0 低电平触发  IT1=1 下降沿触发
  EA=1;        //全局中断
  ES=0;        //串行口中断
  ET1=1;       //定时器1中断
  ET0=0;       //定时器0中断
  EX1=0;       //外部1中断
  EX0=1;       //外部0中断
  P3M1=0XF0;
//  WDTTMP=0X3F;
//  WDT=WDTTMP;
  TMR=0;
  TMG=0;
  TMB=250;
  XS[1]=250;
  ADD=P1;
  ADD&=0X7F;
  while(1)
  {  
    if(biaozhi==1)
    {
      if(JISHU1==1)
      {
        if(bz3==1)
        {
         bz2++;
        if(bz2==3) bz2=0;
        if(bz2==0)
        {
         XS[1]=250;XS[3]=0;
        }
        if(bz2==1)
        {
         XS[1]=0;XS[3]=250;
        }
        if(bz2==2)
        {
        XS[1]=250;XS[3]=250;
        }
        bz3=0;
        }
      }
      else {bz3=1;}
    }
    else
    {
     if(JISHU1==1)
     {
       if(bz1==0)
       {
         HL();
         bz1=1;   
       }
       else
       {
         LH();
         bz1=0;            
       }
     }
    }  
  }
}
//*****************************************
void YS(uint b)         //延时   延时时间约等于10个机器周期*b
{
  uint a;
  for(a=0;a<b;a++);
}
void YIANSHI(uint b)         //延时   延时时间约等于10个机器周期*b
{
  uint a;
  for(a=0;a<b;a++)
  YS(12000);
}
//*****************************************
void TMRJIA()  //分段延时
{
          if(TMR<=5)
         {
           YS(10000);
         }
         if((TMR<20)&(TMR>5))
         {
           YS(6000);
         }
         if((TMR<=60)&(TMR>=20))
         {
           YS(3000);
         }
         if(TMR>60)
         {
           YS(1000);
         }
}
void TMGJIA()  //分段延时
{
          if(TMG<=5)
         {
           YS(10000);
         }
         if((TMG<20)&(TMG>5))
         {
           YS(6000);
         }
         if((TMG<=60)&(TMG>=20))
         {
           YS(3000);
         }
         if(TMG>60)
         {
           YS(1000);
         }
}
//*****************************************定时器中断
void DSQ()interrupt 3
{

  TR1=0;
  TL1=0X00;
  TH1=0XFE;
  TR1=1;
  if(XS[1]==0) R1=0;
  else
  {
    if(TM0==0) R1=1;
    else
    {
      if(TM0<XS[1]) R1=1;
      else R1=0;
    }
  }
  if(XS[2]==0) G1=0;
  else
  {
    if(TM0==0) G1=1;
    else
    {
      if(TM0<XS[2]) G1=1;
      else G1=0;
    }
  }
  
  if(XS[3]==0) B1=0;
  else
  {
    if(TM0==0) B1=1;
    else
    {
      if(TM0<XS[3]) B1=1;
      else B1=0;
    }
  }

  TM0++;
  if(TM0>254) TM0=0;
}
//*****************************************计数器中断
void JSQ()interrupt 0
{
  JISHU++;
  if(JISHU==50)
  {
    JISHU=0;
    JISHU1++;
    if(JISHU1==ADD)  JISHU1=0;        
  }
}
//****************花样1******************
//************花样2**************************
void huayang2()
{
      DE=ADD;
      ET1=1;
      XS[1]=0;
      XS[2]=0;
      XS[3]=0;
//红
//******红-》蓝
      TMR=250;  
      TMG=0;  
      for(acc=0;acc<260;acc++)
      {
        if(TMR!=0)
        {
         TMR--;
         if(TMR>250) TMR=250;
         XS[1]=TMR;         
         TMRJIA();
        }
        else YS(300);      
//绿   
         TMG++;
         if(TMG>250) TMG=250;
         XS[3]=TMG;         
         TMGJIA();
      }
      YIANSHI(DE);
//******蓝  -红
      TMR=250;  
      TMG=0;   
      for(acc=0;acc<260;acc++)
      {
        if(TMR!=0)
        {
         TMR--;
         if(TMR>250) TMR=250;
         XS[3]=TMR;         
         TMRJIA();
        }
        else YS(300);      
         TMG++;
         if(TMG>250) TMG=250;
         XS[1]=TMG;         
         TMGJIA();
      }
      YIANSHI(DE);
}
void HL()
{
      XS[1]=0;
      XS[2]=0;
      XS[3]=0;
      DE=ADD;
      ET1=1;
      TMR=250;  
      TMG=0;  

      for(acc=0;acc<260;acc++)
      {      
        if(TMR!=0)
        {
         TMR--;
         if(TMR>250) TMR=250;
         XS[1]=TMR;         
         TMRJIA();
        }
        else YS(300);      
//绿   
         TMG++;
         if(TMG>250) TMG=250;
         XS[3]=TMG;         
         TMGJIA();
      }
}
void LH()
{
      DE=ADD;
      ET1=1;
      TMR=250;  
      TMG=0;   
      for(acc=0;acc<260;acc++)
      {      
        if(TMR!=0)
        {
         TMR--;
         if(TMR>250) TMR=250;
         XS[3]=TMR;         
         TMRJIA();
        }
        else YS(300);      
         TMG++;
         if(TMG>250) TMG=250;
         XS[1]=TMG;         
         TMGJIA();
      }

}

相关帖子

沙发
myic200610| | 2009-10-5 23:17 | 只看该作者
关注

使用特权

评论回复
板凳
ningling_21| | 2009-10-5 23:37 | 只看该作者
好长,比较长...

使用特权

评论回复
地板
yewuyi| | 2009-10-6 08:29 | 只看该作者
呵呵,这样的程序,看不懂反而是好事。。。

使用特权

评论回复
5
5880527| | 2009-10-6 08:56 | 只看该作者
对自己有信心点,这样的程序从零开始也要不了几天就能修改了,人家说依葫芦画瓢,但这个瓢的样子真不是太好,凑合着用吧。看见那几个眼屎我就有杀人的冲动

使用特权

评论回复
6
zhuhai2004| | 2009-10-6 09:04 | 只看该作者
我也是珠海的,这个程序也是新手写的吧;不值得你在上面花时间研究.

使用特权

评论回复
7
5880527| | 2009-10-6 09:13 | 只看该作者
新手有个样板照着改还是要轻松点,否则那几个寄存器都不知道怎么配

使用特权

评论回复
8
有风| | 2009-10-6 09:26 | 只看该作者
我今年毕业在珠海灯饰电子公司上班,在产品研发部上班,可是我的能力有限,唯一的一个工程师辞职了,还有一个,我不想问他,老板让我看辞职的那个工程师的代码,并且开发这个渐变的灯饰产品,我有好多地方看不懂,我 ...发表于 2009-10-5 23:07
其实,看产品规格书,自己重写,要比修改别人的好N倍。不外乎就一个初始化寄存器,一个中断处理,一个控制程序。

使用特权

评论回复
9
z055795694| | 2009-10-6 09:34 | 只看该作者
参考一下他的思路  还是自己写比较好

使用特权

评论回复
10
Finnyip| | 2009-10-6 09:54 | 只看该作者
楼主留个联系方式啥的,交流交流吧。

使用特权

评论回复
11
kankan888| | 2009-10-6 10:06 | 只看该作者
LZ 那女的说事??太假了吧,真能编故事

使用特权

评论回复
12
Finnyip| | 2009-10-6 10:09 | 只看该作者
应该不是假的吧,没必要吧。呵呵

使用特权

评论回复
13
salonydeny| | 2009-10-6 10:16 | 只看该作者
c8051?呵呵,就用过一次,忘记得差不多了,是不是还不确定

使用特权

评论回复
14
zhaiweilei| | 2009-10-6 11:06 | 只看该作者
要先知道这个程序是在做什么,实现什么功能。其次,看这个程序流程图。这样才能看懂他的程序。如果只把这个程序按c语法逐句解释一遍的话,你还是不清楚这个程序的功能。因为按c语法解释有时可能只解释到字面意思,没有解释到逻辑含义,逻辑含义在流程图里。

就相当于看一个电路板一样,要先看逻辑框图,再看原理图。

使用特权

评论回复
15
123294382|  楼主 | 2009-10-6 12:50 | 只看该作者
你好,能说说原因吗?谢谢你啊 4# yewuyi

使用特权

评论回复
16
123294382|  楼主 | 2009-10-6 12:51 | 只看该作者
谢谢 你,但是我现在弄不到流程图,谢谢你啊 15# zhaiweilei

使用特权

评论回复
17
123294382|  楼主 | 2009-10-6 12:55 | 只看该作者
我为什么要编故事,你们都是怎么想的啊,我是真心请教的,但还是谢谢你 11# kankan888

使用特权

评论回复
18
feng186jie| | 2009-10-6 13:06 | 只看该作者
建议!

看这个程序还不如你自己在写一个``拿着产品说明书``有些什么要求``自己在画一个流程图``
对首流程图再一步步的编写```花不了多少时间```反而比你去看他的学得快些```

使用特权

评论回复
19
huangqi412| | 2009-10-6 14:26 | 只看该作者
神啊。。。

使用特权

评论回复
20
Toddhan| | 2009-10-6 20:44 | 只看该作者
我是刚学单片机,这长串程序一看就晕了:(

使用特权

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

本版积分规则

11

主题

45

帖子

0

粉丝