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 + -
显示快捷键?