main.lst

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

LST
1,034
字号
C51 COMPILER V7.50   MAIN                                                                  04/22/2008 11:45:45 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************************************
   2          文件名:main.c
   3          日期:2006-4-25
   4          作者:李升义
   5          说明:主程序文件
   6          **********************************************/
   7          //xiugaibiaozhi5
   8          #include <C8051F020.H>
   9          //#include <global.h>
  10          //#include <IRQ_Vector.h>
  11          #include <math.h>
  12          
  13          #define uchar unsigned char
  14          #define uint unsigned int 
  15          #define ulong unsigned long
  16          
  17          #define SYSCLOCK  11059200                                                      //系统时钟 
  18          //#define DRVCLOCK  16000000                                                                    //驱动时钟
  19          
  20          //#define CYLINDERNUMBER 4                                                                              //发动机缸数
  21          #define PROCESSWRITHE 1200                                                                      //加速转速
  22          #define TOPWRITHE 2400                                                                          //最高转速*/
  23          
  24          #define SCRATCH_ADDR 0x0000            // address of Scratchpad
  25          
  26          //------------------定义4*4键盘编码--------------------
  27          #define KeyNum0  0x28                                                                           //11101110数字键0
  28          #define KeyNum1  0x11                                                                           //11011110
  29          #define KeyNum2  0x21                                                                           //10111110
  30          #define KeyNum3  0x41                                                                           //01111110
  31          #define KeyNum4  0x12                                                                           //11101101
  32          #define KeyNum5  0x22                                                                           //11011101
  33          #define KeyNum6  0x42                                                                           //10111101
  34          #define KeyNum7  0x14                                                                           //01111101数字键7
  35          #define KeyNum8  0x24                                                                           //11101011
  36          #define KeyNum9  0x44                                                                           //11011011数字键9
  37          #define KeyUp    0x82                                                                           //10111011上箭头键
  38          #define KeyDown  0x84                                                                           //01111011下箭头键
  39          #define KeyEsc   0x81                                                                           //11110111返回键
  40          #define KeyLeft  0x18                                                                           //11010111左箭头开始/停止键
  41          #define KeyRight 0x48                                                                           //10110111右箭头Back Space 键
  42          #define KeyEnter 0x88                                                                           //01110111回车(确认)输入键
  43          //--------------定义屏幕功能划分标记------------------------
  44          #define ScreenLeft     0                                                                        //左
  45          #define ScreenRight    319                                                                      //右
  46          #define ScreenTop      0                                                                        //上
  47          #define ScreenBottom   239                                                                      //下
  48          #define MainZoneTop    26                                                                       //主输出区顶
  49          #define CylinderOutLine 221                                                                     //缸数输出行
  50          #define CylinderOut1ColWord     10                                                              //左输出列
  51          #define CylinderOut2ColWord     30                                                              //右输出列
  52          #define LeftItem        6                                                                       //左边项目起始列
  53          #define RightItem       26                                                                      //右边项目起始列
  54          
  55          //---------------继电器控制位-------------------------------
C51 COMPILER V7.50   MAIN                                                                  04/22/2008 11:45:45 PAGE 2   

  56          //sbit K3 =  P3^2;                                            //继电器3
  57          /*sbit K4 =  P3^3;                                            //继电器4
  58          sbit K5 =  P3^4;                                            //继电器5
  59          sbit K6 =  P3^5;                                            //继电器6
  60          sbit Cex1Flag = P0^7;                                                                           //P0.7,cex1输出标志
  61          ///sbit Int7 = P3^7;                                                                                    //中断7引脚
  62          //------------------Fuction dedlare--------------------
  63          //sbit StandardCylinder    = P0 ^ 6;
  64          void SetWrithe();
  65          void SetFreq(float freq);
  66          void ResetStepCounter();
  67          uchar ReadKeyBoard(void);
  68          void AnswerKeyBoard(uchar key);
  69          void DelayM(ulong n);
  70          void DisplayOneNumber(uchar x,uchar y,uchar number,uchar counter);
  71          void DeleteOneNumber(uchar x,uchar y,uchar counter);
  72          //void StartOutput();
  73          //void StopOutput();
  74          //void ClearLineZone(uchar x,uchar y,uchar col,uchar att);      //清屏1行字符(8行点)
  75          //void ClearZone(uchar beginY,uchar endY,uchar att);
  76          
  77          void PutLogo(uchar x,uchar y, uchar flag);                  /
  78          void DisplayStart();
  79          void DisplayMainMenu(uchar func,uchar oldfunc);
  80          void DisplayItem(uchar func);
  81          void DisableInput(uchar x,uchar y,uchar len);
  82          //uchar GetStrLength(uchar *pstr);                            
  83          void RenewSubMenu(uchar old,uchar new);                     //刷新子菜单
  84          void LockFlash(void);                                                                           //琐定flash,禁止从jtag读取代码
  85          void ReadFlash(void);                                //从FLASH的附加扇区读取标定系数
  86          void WriteFlash(void);                                                                                  //写入标定参数
  87          void FillParaArray(void);
  88          void Quit(void);                                                                                        //退出项目返回主菜单
  89          void OnEsc(void);                                                                                       //Esc键
  90          void OnEnter(void);                                                                                     //确认键
  91          void OnUp(void);                                                                                        //上行键
  92          void OnDown(void);                                                                                      //下行键
  93          void OnLeft(void);                                                                                      //左行键
  94          void OnRight(void);                                                                                     //右行键
  95          void OnNumber(uchar number);                                                            //数字键
  96          void BeginItem(void);                                                                       //进入子项目
  97          void StopNumberInput(void);                                                                     //结束数字输入
  98          void FunctionSwitch(void);                                                                      //各项目中功能转换
  99          void StartupCurrentOutput(void);                                                        //起动电流开始输出
 100          void ChargeCurrentOutput(void);                                                     //充电电流开始输出
 101          void StartupCurrentZero(void);                                                          //线圈中电流置0
 102          void SetFireAngle(void);                                                                        //设定提前角
 103          void ReSetAheadFlag(void);                                                                      //复位提前角标志变量
 104          //-------------------------------------------------------------------------
 105          extern Init_Device();
 106          //------------------LCM控制函数--------------------------------------------
 107          extern void EnableCursor(uchar flag);
 108          extern void LcmInitialize( void );
 109          extern void LcmClear( void );
 110          extern void Put_uint(uchar x,uchar y,uchar wei,uint shu,uchar attribte,bit inverse);
 111          extern void Putf(uchar x,uchar y,uchar *p,float fbuf,uchar attribte);
 112          extern void Locatexy(uchar x,uchar y, uchar attribs);
 113          extern void Linexy(uint x0,uchar y0,uint xt,uchar yt,uchar att);   
 114          extern void Putstr(uchar x,uchar y, uchar *pstr,uchar flag,bit inverse); 
 115          extern void PutHz_32(uchar x,uchar y, uchar *pstr,uchar flag);     
 116          extern void PutHz_24(uchar x,uchar y, uchar *pstr,uchar flag);     
 117          //extern void PutHz_12(uchar x,uchar y, uchar *pstr,uchar flag);     
C51 COMPILER V7.50   MAIN                                                                  04/22/2008 11:45:45 PAGE 3   

 118          //-----------------------------全局控制变量------------------------------------------------
 119          ulong PCADRVCLOCK;                                                                      //PCA驱动时钟
 120          ulong TIMER4DRVCLOCK;                                                           //TIMER4驱动时钟
 121          uchar Timer4Overflow = 0;                                                       //timer4溢出计数
 122          bit bUp = 1;                                                                            //加速时间上升阶段
 123          //ulong Timer4PointTotal = 0;                                               //timer4加速时间计数
 124          uchar CYLINDERNUMBER = 4;                                                       //发动机缸数
 125          ulong COUNTER = 0;                                                                  //计数器
 126          uint DisplayCounter = 0;                                                        //转速显示计数器
 127          uint FlashDisplayCounter = 0;                                           //闪光显示计数器 
 128          uint Timer4Counter = 0;                                                         //Timer4计数器
 129          uint outCounter;                                                                        //PCA输出计数,半周期
 130          
 131          uint WRITHE = 800;                                                                      //转速设定值(转/分)
 132          float fSpeedTime = 0.0f;                                                        //加速时间实测值
 133          uint SPEEDTIME = 200;                                                           //加速时间设定(毫秒)
 134          uchar CLOSEANGLE = 20;                              //闭合角(度)
 135          float fCloseAngle = 0.0f;                                                       //实测闭合角
 136          uchar FIREANGLE = 20;                                                           //提前角(度)
 137          float fFireAngle = 0;                                                           //提前角实测值
 138          float fSpeed = 0.0f;                                                            //实际测得转速值
 139          
 140          
 141          //bit CEX1=1;                                                                                   //PCA输出电平标志
 142          
 143          //uint DelayCounter=0;                                                          //Timer3控制的的毫秒计数器
 144          uchar StepCode = 0;                                                                     //程序进行标志
 145          uchar FunctionCode = 1;                                                         //项目标志
 146          uchar OldFCode = 1;                                                                     //旧项目
 147          uchar SubMenuCode = 1;                                                          //各项目子菜单标志
 148          uchar OldSubMenuCode = 1;                                                       //旧的各项目子菜单标志
 149          uchar MaxSubMenuCode = 14;                                                      //子菜单数目
 150          uchar LeftSubMenuCode = 8;                                                      //左边子菜单数目
 151          uchar StateCode=0;                                  //程序状态:进行、停止、输入
 152          //----------------------------键盘输入控制所用变量-----------------------------------------
 153          uchar InputCounter = 0;                                                         //输入计数值
 154          uchar InputCounterMax = 0;                          //最大输入位数
 155          uchar InputCounterInt = 0;                          //最大输入整数位数
 156          uint  InputValTemp = 0;                                                     //输入值的整数部分
 157          uint InputValTempF = 0;                                                 //输入值的小数部分
 158          float  InputValTempMax = 0;                                                     //输入值上限
 159          float  InputValTempMin = 0;                                                     //输入值下限
 160          float  InputValTempInit = 0;                                            //输入值默认
 161          uchar InputPosX = 0;                                                            //当前输入位置
 162          uchar InputPosY = 0;
 163          //-----------------------------加速时间所用变量---------------------------------------------                                    
 164          uint StepCounter[8];                                                            //加速时间步骤计数
 165          uchar PCACPAL[300];                                                                     //加速过程中的PCA比较器值低字节数组
 166          uchar PCACPAH[300];                                                                     //加速过程中的PCA比较器值高字节数组
 167          bit SwitchUp=0;                                                                         //加速开关
 168          //-----------------------------闭合角所用变量-----------------------------------------------
 169          uchar pcacpLH;                                      //高电平输出时的PCA比较器低字节
 170          uchar pcacpHH;                                      //高电平输出时的PCA比较器高字节
 171          uchar pcacpLL;                                      //低电平输出时的PCA比较器低字节
 172          uchar pcacpHL;                                      //低电平输出时的PCA比较器高字节
 173          //-----------------------------提前角所用变量-----------------------------------------------
 174          bit bAhead0=0;                                                                          //进行提前角输出标志
 175          bit bAhead1=0;                                                                          //进行提前角输出标志
 176          bit bAhead2=0;                                                                          //进行提前角输出标志
 177          bit bAhead3=0;                                                                          //进行提前角输出标志
 178          //bit bAhead4=0;                                                                                //进行提前角输出标志
 179          bit bTimer = 0;                                                                         //是否需要定时器3
C51 COMPILER V7.50   MAIN                                                                  04/22/2008 11:45:45 PAGE 4   

 180          uint PressValue = 0;                                                    //缸压波形零点
 181          uint PressValueMax=4000;
 182          uint PressValueMaxRec=3000;
 183          uint PressValueZero=0;
 184          uint PressValueStart=0;
 185          ulong TermCounters =0;                                                          //主循环在一缸期间的计数值
 186          long mainfunccounter = 0;
 187          //uint AheadCounterLimitBegin,AheadCounterLimitEnd;     //缸压波形起点
 188          //uint AheadPoints;
 189          long AheadCounters;
 190          uchar CylinderCounter=0;                                                        //脉冲循环计数,作为缸号标志
 191          uchar CylinderNumberEnd;                                                        //缸号循环尾标志
 192          //uint WaveLength=200;                                                                  //缸压波形的长度

⌨️ 快捷键说明

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