📄 power.lst
字号:
C51 COMPILER V8.05a POWER 05/14/2008 15:39:54 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE POWER
OBJECT MODULE PLACED IN power.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE power.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x51.h>
2 #include "lcd_h.h"
3 const char LCDnum[10]="0123456789";
4 unsigned int value=255,result1=0,result2=0,svalue=255,tri=263;
5 unsigned char y=0,z=0,j=0,true=1;
6 float x1=0,x2=0;
7 void display(void)
8 {
9 1 write_LCD_data(LCDnum[9-y]);
10 1 display_LCD_string(".");
11 1 write_LCD_data(LCDnum[9-z]);
12 1 display_LCD_string("V");
13 1 }
14 void delay_50us(unsigned int t)
15 {
16 1 unsigned char j;
17 1 for(;t>0;t--)
18 1 for(j=19;j>0;j--);
19 1 }
20 void main(void)
21 {
22 1 delayms(50);
23 1 init_LCD(); // 初始化LCD
24 1 clear_LCD(); //
25 1 movexy(2,5); //
26 1 value=P1; // 指拨开关设初值
27 1 svalue=value;
28 1 x1=(value+0.0)/256*100; // 数据处理
29 1 y=x1/10; //
30 1 z=(x1-y*10); //
31 1 P2=value; //往DS0832写数据
32 1 P3_0=0; //启动D/A
33 1 P3_0=1; //关闭D/A
34 1 display(); //1602显示数据
35 1 do //查询按键情况
36 1 {
37 2 if (P3_1==0) //-0.1V
38 2 {
39 3 delay_50us(200);
40 3 if (P3_1==0)
41 3 {
42 4 do
43 4 {
44 5 if (y==9&&z==9) break; //若输出为0.0V,退出
45 5 value++;
46 5 x1=(value+0.0)/256*100;
47 5 x2=(value+1.0)/256*100;
48 5 result1=(unsigned int)(x1);
49 5 result2=(unsigned int)(x2);
50 5 }while((result2-result1)!=1);
51 4 clear_LCD();
52 4 movexy(2,5);
53 4 y=x1/10;
54 4 z=(x1-y*10);
55 4 display();
C51 COMPILER V8.05a POWER 05/14/2008 15:39:54 PAGE 2
56 4 P2=value;
57 4 P3_0=0;
58 4 P3_0=1;
59 4 svalue=value; //保存当前值,为切换输出类型准备
60 4 while(P3_1==0);
61 4 }
62 3 }
63 2 if (P3_2==0) //+0.1V
64 2 {
65 3 delay_50us(200);
66 3 if (P3_2==0)
67 3 {
68 4 do
69 4 {
70 5 if (y==0&&z==0) //若输出为9.9V,保持不变
71 5 {
72 6 value=4;
73 6 break;
74 6 }
75 5 value--;
76 5 x1=(value-0.0)/256*100;
77 5 x2=(value-1.0)/256*100;
78 5 result1=(unsigned int)(x1);
79 5 result2=(unsigned int)(x2);
80 5 }while((result1-result2)!=1);
81 4 clear_LCD();
82 4 movexy(2,5);
83 4 y=x2/10;
84 4 z=(x2-y*10);
85 4 display();
86 4 P2=value-1;
87 4 svalue=value-1;
88 4
89 4 P3_0=0;
90 4 P3_0=1;
91 4 while(P3_2==0);
92 4 }
93 3 }
94 2 if (P3_3==0) //方波输出按钮
95 2 {
96 3 delay_50us(200);
97 3 if (P3_3==0)
98 3 {
99 4 clear_LCD();
100 4 movexy(1,0);
101 4 display_LCD_string("SQUARE POWER");
102 4 while(P3_3==0);
103 4 do
104 4 {
105 5 P2=255; //低点平0V
106 5 P3_0=0;
107 5 P3_0=1;
108 5 delay_50us(100);
109 5 P2=128; //高电平5V
110 5 P3_0=0;
111 5 P3_0=1;
112 5 delay_50us(100);
113 5 if (P3_3==0) true=0; //再按一次方波输出返回
114 5 }while(true);
115 4 true=1;
116 4 P2=svalue;
117 4 P3_0=0;
C51 COMPILER V8.05a POWER 05/14/2008 15:39:54 PAGE 3
118 4 P3_0=1;
119 4 clear_LCD();
120 4 movexy(2,5);
121 4 display();
122 4 while(P3_3==0);
123 4 }
124 3 }
125 2 if (P3_4==0) //三角波输出
126 2 {
127 3 delay_50us(200);
128 3 if (P3_4==0)
129 3 {
130 4 clear_LCD();
131 4 movexy(1,0);
132 4 display_LCD_string("TRIANGLE POWER");
133 4 while(P3_4==0); //循环输出三角波
134 4 do
135 4 {
136 5 for (j=0;j<=16;j++) //从0V到5V
137 5 {
138 6 tri=tri-8;
139 6 P2=tri;
140 6 P3_0=0;
141 6 P3_0=1;
142 6 delay_50us(100);
143 6 if (P3_4==0) break;
144 6 }
145 5 if (P3_4==0) break;
146 5 tri=tri+8;
147 5 for (j=0;j<=15;j++) //从5V到0V
148 5 {
149 6 P2=tri;
150 6 tri=tri+8;
151 6 P3_0=0;
152 6 P3_0=1;
153 6 delay_50us(100);
154 6 if (P3_4==0) break;
155 6 }
156 5 tri=263;
157 5 if (P3_4==0) break;
158 5 }while(1);
159 4 P2=svalue;
160 4 P3_0=0;
161 4 P3_0=1;
162 4 clear_LCD();
163 4 movexy(2,5);
164 4 display();
165 4 while(P3_4==0);
166 4 }
167 3 }
168 2 }while(1);
169 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1011 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 32 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V8.05a POWER 05/14/2008 15:39:54 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -