📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 12/15/2008 15:08:22 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\proteus&keil\keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 /*
3 ****************************************************
4
5
6
7 ****************************************************
8 */
9
10 #include <reg52.H>
11 #include "Typedef.H"
12 #include "UserDef.H"
13 #include "Disp.H"
14 #include "ADC0809.H"
15
16
17 /* 常数定义 */
18 #define T_ADDA 10 //ADDA周期:10ms
19
20 #define V_REF_AD0 5.0 //ADC0809的基准电压值
21
22
23 /* 全局变量 */
24 bit bDispRef = FALSE; //信号灯:显示更新时间到
25 bit bADDARef = FALSE; //信号灯:ADDA采样时间到
26 sbit b00 = P2^0;
27 sbit b01 = P2^1;
28 /***************************************
29
30
31
32 ****************************************/
33 void main(void)
34 {
35 1 INT8U AD;
36 1 float Volt_AD,Volt_AD0;
37 1
38 1 //初始化
39 1 TMOD = 0x11;
40 1 TH0 = (INT8U)(KTDLY>>8);
41 1 TL0 = (INT8U)(KTDLY);
42 1 TR0 = 1;
43 1
44 1 ET0 = 1;
45 1 EA = 1;
46 1
47 1 DispInit(); //LCD初始化
48 1 AD0809_init(); //AD0809初始化
49 1
50 1 /* LCD清屏 */
51 1 DispCls();
52 1
53 1 /* 显示固定的文字 */
54 1 DispXYSet(0,35);
55 1 DispHZ(0); //欢
C51 COMPILER V7.50 MAIN 12/15/2008 15:08:22 PAGE 2
56 1 DispHZ(1); //迎
57 1 DispHZ(2); //使
58 1 DispHZ(3); //用
59 1 DispXYSet(2,20);
60 1 DispHZ(4); //光
61 1 DispHZ(5); //照
62 1 DispHZ(6); //度
63 1 DispHZ(7); //测
64 1 DispHZ(8); //量
65 1 DispHZ(9); //仪
66 1
67 1 DispXYSet(6,10);
68 1 DispHZ(4); //光
69 1 DispHZ(5); //照
70 1 DispHZ(6); //度
71 1
72 1
73 1 DispFontSet(1);
74 1 DispXYSet(4.5,10);
75 1 DispStr("AD=");
76 1
77 1 DispFontSet(1);
78 1 DispXYSet(6.5,55);
79 1 DispStr("=");
80 1
81 1 while(TRUE)
82 1 {
83 2
84 2
85 2 /* 显示扫描刷新,输出可变的文字 */
86 2 if (bDispRef == TRUE)
87 2 {
88 3 bDispRef = FALSE;
89 3
90 3 // 显示当前的AD、DA数值
91 3 DispFontSet(1);
92 3 DispXYSet(4.5,35);
93 3 DispInt(AD,3);
94 3
95 3
96 3 // 显示当前的AD、DA所对应的实际电压值
97 3 DispFontSet(0);
98 3 DispXYSet(6.5,65);
99 3 DispFloat(Volt_AD,6); DispStr("cd");
100 3
101 3 }
102 2
103 2 /* ADDA采样,进行AD、DA转换并计算AD、DA值对应的实际电压值 */
104 2 if (bADDARef == TRUE)
105 2 {
106 3 bADDARef = FALSE;
107 3
108 3 if (P2==0xfe)
109 3 /*----------------------<<< 修改3 >>>---------------------------------*/
110 3 // 根据公式计算AD,DA所对应的实际电压值
111 3 {AD = AD0809(0);
112 4 Volt_AD = AD / 256.0 * V_REF_AD0*1000.0;}
113 3
114 3 if (P2==0xfd)
115 3 {
116 4 AD = AD0809(0);
117 4 AD = AD/5;
C51 COMPILER V7.50 MAIN 12/15/2008 15:08:22 PAGE 3
118 4 Volt_AD0 = AD / 256.0 * V_REF_AD0;
119 4 Volt_AD =Volt_AD0 /5.0*1000.0;
120 4 }
121 3 /*--------------------------------------------------------------------*/
122 3
123 3 }
124 2
125 2
126 2 }
127 1 }
128
129
130
131
132 /*************************************
133
134 定时器中断程序
135
136 **************************************/
137 void int_t0(void) interrupt 1 using 1
138 {
139 1 static int cnt = 0;
140 1
141 1 TH0 = (unsigned char)(KTDLY>>8);
142 1 TL0 = (unsigned char)(KTDLY);
143 1
144 1 cnt ++;
145 1
146 1 /* 显示扫描信号灯 */
147 1 if ((cnt % T_DISPREF) == 0)
148 1 {
149 2 bDispRef = TRUE;
150 2 }
151 1
152 1 /* ADDA采样信号灯 */
153 1 if ((cnt % T_ADDA) == 0)
154 1 {
155 2 bADDARef = TRUE;
156 2 }
157 1
158 1 }
159
160
161
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 415 ----
CONSTANT SIZE = 9 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 9
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -