main.lst

来自「这是一整套USB2.0试验程序」· LST 代码 · 共 1,034 行 · 第 1/5 页

LST
1,034
字号
 193          //-------------------------------------------------------------------------------------------
 194          //-----------------------------标定参数--------------------------------------------------
 195          //参数表fPara备忘:0~7电流,8~11电压,12~18转速,19~23加速时间,24~35闭合角,36~44提前角
 196          //参数表Para_Array备忘:0~7电流*100,8~11电压*100,12~18七个转速值的整数第一部分,
 197          //19~23五个加速时间的整数第一部分,24~35十二个闭合角的整数部分,
 198          //36~44九个提前角的整数部分,45~51七个转速值的整数第二部分,
 199          //52~56五个加速时间的整数第二部分,57~68十二个闭合角的小数部分,
 200          //69~77九个提前角的小数部分,78~84七个转速值的的小数部分,
 201          //85~89五个加速时间的小数部分,
 202          //90~101电压电流的3、4位小数
 203          float fPara[47];                                                                //电流8个系数,,电压4个系数,两位小数
 204          uchar Para_Array[108];
 205          uchar ParaFlag=0;                                                               //参数表标志变量
 206          float fSpeedParaMul = 1.0f;                                                     //当前乘系数
 207          float fSpeedParaAdd = 0.0f;                                                     //当前加系数
 208          float fTimeParaMul = 1.0f;                                                      //当前乘系数
 209          float fTimeParaAdd = 0.0f;                                                      //当前加系数
 210          float fCloseAngleParaMul = 1.0f;                                                        //当前乘系数
 211          float fCloseAngleParaAdd = 0.0f;                                                        //当前加系数
 212          float fAheadAngleParaMul = 1.0f;                                                        //当前乘系数
 213          float fAheadAngleParaAdd = 0.0f;                                                        //当前加系数
 214          float fCurrentPara;
 215          float fVoltagePara;
 216          uchar VoltageFlag = 0;
 217          //-----------------------------屏幕位置变量----------------------------------------------------------
 218          uchar PromptX1;
 219          uchar PromptY1;
 220          uchar PromptX2;
 221          uchar PromptY2;
 222          uchar PromptX3;
 223          uchar PromptY3;
 224          uchar PromptX4;
 225          uchar PromptY4;
 226          //-----------------------------DA/AD控制变量---------------------------------
 227          bit AD0ProcessEnd=0;
 228          bit AD1ProcessEnd=0;
 229          bit StartFlag = 0;
 230          //bit EndFlag = 0;
 231          bit bVoltageAdjusting = 1;
 232          bit bVoltageOk = 0;
 233          bit bCurrentAdjusting = 1;
 234          bit CurrentAdjusted = 0;
 235          bit bCurrentWaitForAdj = 0;
 236          uchar CurrentOkCounter = 0;
 237          
 238          uchar VOLTAGEDATA = 0;                                                          //电压设定值
 239          uchar VOLTAGEDATAADJUSTED = 0;                                          //电压设定值
 240          uchar VOLTAGEDATAADJUSTEDUP = 0;                                                //电压设定值
 241          uchar VOLTAGEDATAADJUSTEDDOWN = 0;                                              //电压设定值
C51 COMPILER V7.50   MAIN                                                                  04/22/2008 11:45:45 PAGE 5   

 242          uint VoltageCounter = 0;
 243          uint VoltageOkCounter = 0;
 244          //uchar VOLTAGEDATAUP = 0;
 245          
 246          //float VoltageAdjusted = 12.0f;                                                //标定后的电压设定值
 247          uint CURRENT = 100;                                                                 //电流设定值
 248          uint CURRENTDATA = 100;
 249          uchar CURRENTDISP = 5;                                                          //电流偏移值
 250          uint CURRENTDOWN = 100;                                                         //电流设定值下限
 251          uint CURRENTUP = 200;                                                           //电流设定值上限
 252          float fVoltage = 0.0f;                              //实际测得电压值
 253          float fCurrent = 0.0f;                                                          //采样阻值
 254          float fRSample = 2.0f;                             //实际测得电流值
 255          float fGain0 = 2.0f;                                                            //AD0的增益
 256          //uchar fGain1 = 1;                                                                 //AD1的增益
 257          uchar CurrentFlag = 0;                                                          //电流档位标志
 258          
 259          uint AD0TraceCounterMax = 0;                                            //AD跟踪器在调整后的等待上限值(电容充放电时间)
 260          uint ValueOut_DA1 = 0xfff;                                                                      //DA1输出变量
 261          
 262          uint ValueOut_DA0 = 0xfff;                                                                      //DA0输出变量
 263          ulong ADC0_SUM;                                                                         //ADC1数值和
 264          ulong ADC1_SUM;                                                                         //ADC1数值和
 265          uint COUNTER_ADC1 = 0;                                                          //ADC1计数器
 266          //-------------------------------------------------------------------
 267          uchar KeyCounter = 0;                                                           //键盘中断计数
 268          //-------------------------------------------------------------------
 269          uchar BDBegin = 0;
 270          uchar BDEnd = 0;
 271          //-------------------------------------------------------------------
 272          //----------------闪光中断--------------------
 273          //EIE2 |= 0x10;//允许INT7外部中断
 274          //EIP2 |= 0x10;//INT7外部中断置为高优先级
 275          bit bFlash = 0;
 276          */
 277          //--------------USB---------------------------
 278          //sbit SLRD=P7^0;//OUT                                  
 279          //sbit SLWR=P7^1;//OUT
 280          //sbit SLCS=P7^2;//OUT
 281          //sbit SLOE=P7^3;//OUT
 282          //sbit FIFOADR1=P7^4;//OUT
 283          //sbit FIFOADR0=P7^5;//OUT
 284          //sbit Start=P6^0;//IN
 285          //P5应配置为输出
 286          //SLRD(RDY0/SLRD)、1 
 287          //SLWR(RDY1/SLWR)、 1
 288          //SLCS(PA7/FLAGD/SLCS)、0
 289          //SLOE(PA2/ SLOE) 1
 290          //FIFOADR1(PA5/ FIFOADR1)1
 291          //FIFOADR0(PA4/ FIFOADR0)0
 292          int     inData[256];
 293          //-------------------------------------------=
 294          
 295          void main(void)                                                                                   
 296          {
 297   1              int FD;
 298   1              int i;
 299   1      
 300   1      //      FIFOADR0=1;                                     //选择EP6
 301   1      //      FIFOADR1=0;
 302   1      //      SLWR=1;                                         //初始化各个控制引脚
 303   1      //      SLRD=1;
C51 COMPILER V7.50   MAIN                                                                  04/22/2008 11:45:45 PAGE 6   

 304   1      //      SLCS=0;
 305   1      //      SLOE=1;
 306   1              WDTCN = 0xde;                                                           // disable watchdog timer
 307   1              WDTCN = 0xad;
 308   1              Init_Device();
*** WARNING C206 IN LINE 308 OF MAIN.C: 'Init_Device': missing function-prototype
 309   1          P7 = 0x0B;
 310   1              
 311   1              while(1)                                        //主循环
 312   1              {
 313   2                      P7 |= 0x30;//选择端点8,看是否有输出包
 314   2      //              P5 = 0x00;//设置P5为输入                
 315   2                      if(!(P6&0x01))//若已满,读取命令包,或者利用可编程标志PF,读取设定字节的数据
 316   2                      {
 317   3                              P7 &= 0xF3;     //SLOE
 318   3                              for (i=0;i<256;i++)
 319   3                              {
 320   4                                      P7 &= 0xFE;
 321   4                                      inData[i] = P5<<8;//仅读取高8位;                               
 322   4                                      P7 |= 0x01;
 323   4              //                      SLRD=0;
 324   4              //                      SLRD=1;
 325   4                              }
 326   3                              for (i=0;i<256;i++)//两重缓冲,读两次
 327   3                              {
 328   4                                      P7 &= 0xFE;
 329   4                                      inData[i] += P5;//第二个缓冲区的高8位放在输入缓冲区的低字节                             
 330   4                                      P7 |= 0x01;
 331   4                              }
 332   3                              P7 |= 0x08;
 333   3                      }
 334   2                      else
 335   2                      {
 336   3                              
 337   3                              P7 &= 0xcf;//选择端点2
 338   3                              if(P6&0x01)                     //如果未满,满标志高电平
 339   3                              {
 340   4                                      P74OUT    |= 0x0c;
 341   4                                      for (i=0;i<512;i++)
 342   4                                      {
 343   5                                              P5 = i;         //循环写入512个数据0x05
 344   5                                              P7 &= 0xFD;
 345   5                                              P7 |= 0x02;
 346   5              //                              SLWR=0;
 347   5              //                              SLWR=1;
 348   5                                      }
 349   4                                      P74OUT    &= 0xF3;
 350   4                                      P5 = 0xff;//设置P5为输入
 351   4                              }
 352   3                              else //已满
 353   3                              {
 354   4                                      FD = 0;
 355   4                              }
 356   3                              
 357   3                      }
 358   2                      
 359   2              }
 360   1      /*      uchar key;
 361   1              uint i;
 362   1              bit ParaError0=0;
 363   1              bit ParaError1=0;
 364   1              bit ParaError2=0;
C51 COMPILER V7.50   MAIN                                                                  04/22/2008 11:45:45 PAGE 7   

 365   1              bit ParaError3=0;
 366   1              WDTCN = 0xde;                                                           // disable watchdog timer
 367   1              WDTCN = 0xad;
 368   1      //      LockFlash();
 369   1      //      P3 = 0x00;
 370   1              //
 371   1              K4 = 0;
 372   1              K5 = 0;
 373   1              K6 = 0;
 374   1      //      K3 = 0;
 375   1              Init_Device();
 376   1              
 377   1              K4 = 0;
 378   1              K5 = 0;
 379   1              K6 = 0;
 380   1      //      K3 = 0;
 381   1      
 382   1              //lcd 显示
 383   1      
 384   1      //      DelayM(10);                                    // 足够的延时确保lcm已经准备好
 385   1              LcmInitialize();                                           //LCM初始化
 386   1              LcmClear();                                                        //LCM清屏
 387   1              DisplayStart();                                            //显示欢迎界面
 388   1      //      DelayM(5000);                                              //延时5秒
 389   1      
 390   1              //===================================
 391   1      
 392   1              //==========================================

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?