📄 aa.lst
字号:
C51 COMPILER V7.06 AA 12/22/2008 18:10:55 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AA
OBJECT MODULE PLACED IN aa.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE aa.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <string.h>
2 #include<reg51.h>
3 #include <stdio.h>
4 #include <absacc.h>
5
6 #define uchar unsigned char
7 #define uint unsigned int
8 #define DA0832 P2
9 uchar TAB[]={0,1,2,3,4,5,6,7,8,9};
10 uchar disp[6]={' ',' ',' ',' ','H','Z'};
11 uint freq=0;//频率变量
12 uchar code table1[]="Sinusoidal Wave"; //正弦波
13 uchar code table2[]="Pyramidal Wave"; //三角波
14 uchar code table3[]="Sawtooth Wave"; //锯齿波
15 uchar code table4[]="Square Wave"; //方波
16 uchar code tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99, //正弦波列表
17 0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,
18 0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,
19 0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,
20 0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,
21 0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
22 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,
23 0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,
24 0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,
25 0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,
26 0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,
27 0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,
28 0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,
29 0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,
30 0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,
31 0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,
32 0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,
33 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
34 0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
35 0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,
36 0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,
37 0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,
38 0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,
39 0x72,0x76,0x79,0x7c,0x80 };
40 /*------------------------位定义--------------------------------*/
41 /*sbit PB0=P1^0;
42 sbit PB1=P1^1;
43 sbit PB2=P1^2;
44 sbit PB3=P1^3;
45 sbit PB4=P1^4;
46 sbit PB5=P1^5;
47 sbit PB6=P1^6;
48 sbit PB7=P1^7;
49 /*----------------------*/
50 /*sbit Pc0=P2^0;
51 sbit Pc1=P2^1;
52 sbit Pc2=P2^2;
53 sbit Pc3=P2^3;
54 sbit Pc4=P2^4;
55 sbit Pc5=P2^5;
C51 COMPILER V7.06 AA 12/22/2008 18:10:55 PAGE 2
56 sbit Pc6=P2^6;
57 sbit Pc7=P2^7;*/
58 /*---------------------------*/
59 sfr16 DPTR=0x82;//声明DPTR
60
61 sbit RS=P3^0;
62 sbit RW=P3^1;
63 sbit E=P3^2;
64 sbit busy=P0^7;
65 uchar fun=0,b=0,c=0,d=0,e=0,tl,th;
66 /*-------------函数声明-------------------*/
67 int keyscan();
68 void key1(void);
69 void key2(void);
70 void key3(void);
71 void key4(void);
72 void delay_ms(int ms);
73 void write_cmd(uchar cmd) ;
74 void write_data(uchar d) ;
75 void init_lcd();
76 void lcd_display_xy(char *string , uchar x, uchar y);
77 void inter_int();
78 /*******主程序**********/
79 main()
80 {
81 1 inter_int();
82 1 init_lcd();
83 1 P2=0xff;
84 1 while(1)
85 1 {
86 2
87 2 keyscan();
88 2 }
89 1 }
90 /*----------定时器初始---------------*/
91 void inter_int()
92 {
93 1 TMOD=0X01;
94 1 TR0=1;
95 1 th=0xff;
96 1 tl=0xd0;
97 1 TH0=th;
98 1 TL0=tl;
99 1 ET0=1;
100 1 EA=1;
101 1 }
102 /*******延时**********/
103 void delay_ms(int ms)
104 {
105 1 uchar i;
106 1 uint j;
107 1 for(j=2*ms;j>0;j--)
108 1 for(i=250;i>0;i--);
109 1 }
110
111 /******扫描*********/
112 int keyscan()
113 {
114 1 uchar key_value;
115 1 uchar key_temp;
116 1 do
117 1 {
C51 COMPILER V7.06 AA 12/22/2008 18:10:55 PAGE 3
118 2 P1=0xff;
119 2 key_temp=P1;
120 2 delay_ms(5);
121 2 P1=0xff;
122 2 key_value=P1;
123 2 }
124 1 while(key_value!=key_temp);
125 1 if(key_value==0xfe)key1();
126 1 if(key_value==0xfd)key2();
127 1 if(key_value==0xfb)key3();
128 1 if(key_value==0xf7)key4();
129 1 }
130
131 /*-------------1602-------------------*/
132
133 void write_cmd(uchar cmd)
134
135 {
136 1
137 1 RS=0;
138 1 RW=0;
139 1 E=0;
140 1 P0=cmd;
141 1 delay_ms(2);
142 1 E=1;
143 1 delay_ms(2);
144 1 E=0;
145 1 }
146
147 void write_data(uchar d)
148
149 {
150 1
151 1 RS=1;
152 1 RW=0;
153 1 E=0;
154 1 P0=d;
155 1 delay_ms(2);
156 1 E=1;
157 1 delay_ms(2);
158 1 E=0;
159 1 }
160
161 void lcd_display_xy(char *string , uchar x, uchar y)
162 { uchar i;
163 1
164 1 write_cmd(0x80+0x40*y+x);
165 1 for (i=0;i<strlen(string);i++)
166 1 write_data(string[i]);
167 1 }
168
169
170 void init_lcd()
171 {
172 1 write_cmd(0x3f);
173 1 write_cmd(0x0c);//不显示光标
174 1 write_cmd(0x06);//指针自加一,整屏显示不移动
175 1 write_cmd(0x01);//清屏
176 1 // lcd_display_xy(table2,2,0);
177 1 }
178
179
C51 COMPILER V7.06 AA 12/22/2008 18:10:55 PAGE 4
180 /*-------------波形设置---------------------*/
181 void key1(void) //1键选择发波类型,1为正弦波,2为三角波,3为方波,4为锯齿波
182 {
183 1 fun++;
184 1 if(fun==5)fun=0x00;
185 1
186 1 }
187
188 void key2(void) //2键加大频率
189 {
190 1 tl++;
191 1 if(tl==0x1f)th++;
192 1 }
193
194 void key3(void) //3键减小频率
195 {
196 1 tl--;
197 1 if(tl==0x00)th--;
198 1 }
199
200 void key4(void) //4键显示频率
201 {
202 1 TR0=0; //关闭T0
203 1 DPL=TL0;
204 1 DPH=TH0;
205 1 freq=DPTR; //计数量放入freq
206 1 if(freq>=10000) //超过10KHZ
207 1 {
208 2 disp[4]=TAB[freq/1000]; // 十位
209 2 disp[3]=TAB[(freq/1000)%10]; //个位
210 2 disp[2]='K';
211 2 }
212 1 else //低于10KHZ
213 1 {
214 2 disp[5]=TAB[(freq/1000)%10]; //千位
215 2 disp[4]=TAB[(freq/100)%10]; //百
216 2 disp[3]=TAB[(freq/10)%10]; //十位
217 2 disp[2]=TAB[freq%10]; //个位
218 2 }
219 1
220 1 lcd_display_xy(disp,2,0);
221 1 TR0=1;
222 1 }
223
224
225 /*-----------------中断服务程序---------------------------*/
226 void time0_int(void) interrupt 1
227 {
228 1 TR0=0;
229 1 if(fun==1)
230 1 {
231 2 DA0832=tosin[b]; //正弦波
232 2 b++;
233 2 }
234 1 else if(fun==2) //三角波
235 1 {
236 2 if(c<128)
237 2 DA0832=c;
238 2 else
239 2 DA0832=255-c;
240 2 c++;
241 2 }
C51 COMPILER V7.06 AA 12/22/2008 18:10:55 PAGE 5
242 1 else if(fun==3) // 方波
243 1 {
244 2 d++;
245 2 if(d<=128)
246 2 DA0832=0x00;
247 2 else
248 2 DA0832=0xff;
249 2 }
250 1 else if(fun==4) //锯齿波
251 1 {
252 2 if(e<255)
253 2 DA0832=e;
254 2 else
255 2 DA0832=0;
256 2 e++;
257 2 }
258 1
259 1 TH0=th;
260 1 TL0=tl;
261 1 TR0=1;
262 1 }
263
264
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 550 ----
CONSTANT SIZE = 313 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 7
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -