📄 freq.lst
字号:
C51 COMPILER V6.23a FREQ 12/12/2008 00:51:37 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE FREQ
OBJECT MODULE PLACED IN freq.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE freq.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <absacc.h>
3 #include <math.h>
4
5 #define dac XBYTE[0xa000]
6 #define pi 3.14
7
8 sbit set =P3^3;
9 sbit add =P3^4;
10 sbit dec =P3^5;
11 unsigned int current[2]={127,127};
12
13 unsigned int dot=127;
14 unsigned char TS=100;
15 unsigned char KT=0;
16 unsigned char ms=0;
17
18 unsigned char xdata dacval[500];
19
20 void Delayms(unsigned int t)
21 {
22 1 unsigned char i;
23 1 while(--t)
24 1 for(i=0;i<125;i++)
25 1 { ; }
26 1 }
27
28 void Sin_val(void) reentrant
29 {
30 1 unsigned char i;
31 1 for(i=0;i<dot;i++)
32 1 {
33 2 dacval[i]=(unsigned char)(127.5*sin(2*pi*(i/dot))+127.5);
34 2 }
35 1
36 1 }
37
38 void Sin_wave(void)
39 {
40 1 static unsigned int i=0;
41 1 if(++i>dot) i=0;
42 1 else dac=dacval[i];
43 1
44 1 }
45
46
47 void set_(void)
48 {
49 1 KT++;
50 1 if(KT>=3)KT=0;
51 1 }
52
53 void add_(void)
54 {
55 1 switch(KT)
C51 COMPILER V6.23a FREQ 12/12/2008 00:51:37 PAGE 2
56 1 {
57 2 case 1:if(TS>250)TS=10;
58 2 else TS=TS+10;
59 2 break;
60 2 case 2:if(dot>=500)dot=128;
61 2 else dot=dot+5;
62 2 current[0]=dot;
63 2 if(current[1]!=current[0])
64 2 Sin_val();
65 2 current[1]=current[0];
66 2 break;
67 2 default:break;
68 2 }
69 1 }
70
71 void dec_(void)
72 {
73 1 switch(KT)
74 1 {
75 2 case 1:if(TS<10)TS=10;
76 2 else TS=TS-10;
77 2 break;
78 2 case 2:if(dot<128)dot=128;
79 2 else dot=dot-5;
80 2 current[0]=dot;
81 2 if(current[1]!=current[0])
82 2 Sin_val();
83 2 current[1]=current[0];
84 2 break;
85 2 default:break;
86 2 }
87 1 }
88
89 void Key_Scan(void)
90 {
91 1
92 1 if(set==0)
93 1 {
94 2 Delayms(20);
95 2 if(set==0)
96 2 { set_(); }
97 2 }while(set==0);
98 1
99 1 if(add==0)
100 1 {
101 2 Delayms(20);
102 2 if(add==0)
103 2 { add_(); }
104 2 }while(add==0);
105 1
106 1 if(dec==0)
107 1 {
108 2 Delayms(20);
109 2 if(dec==0)
110 2 { dec_(); }
111 2 }while(dec==0);
112 1
113 1 }
114
115 void Time_init(void)
116 {
117 1 TMOD=0x12;
C51 COMPILER V6.23a FREQ 12/12/2008 00:51:37 PAGE 3
118 1 PT0 =1;
119 1 TH0 =(-TS);
120 1 TH1 =(-10000)>>8;
121 1 TL1 =(-10000);
122 1 ET0=1;
123 1 ET1=1;
124 1 TR0=1;
125 1 TR1=1;
126 1 }
127
128 void main(void)
129 {
130 1 Time_init();
131 1 EA=1;
132 1 Sin_val();
133 1 while(1)
134 1 { ; }
135 1 }
136 void Time_int0(void) interrupt 1
137 {
138 1 ET0=0;TR0=0;TH0 =(-TS);TR0=1;
139 1 Sin_wave();
140 1 ET0=1;
141 1 }
142
143 void Time_int1(void) interrupt 3
144 {
145 1 TL1 =(-10000);
146 1 TH1 =(-10000)>>8;
147 1 ms++;
148 1 if(ms==15)
149 1 {
150 2 ms=0;
151 2 Key_Scan();
152 2 }
153 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 533 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 500 ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
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 + -