📄 波形发生器.lst
字号:
C51 COMPILER V8.05a 波形发蒧芲 09/09/2008 00:02:51 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 波形发蒧芲
OBJECT MODULE PLACED IN 波形发生器.OBJ
COMPILER INVOKED BY: D:\Keil c51\C51\BIN\C51.EXE 波形发生器.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<absacc.h>
3 #define DAC0832 XBYTE[0xfffe]
4 #define DAC0832R XBYTE[0xfffd]
5 #define uchar unsigned char
6 #define uint unsigned int
7 sbit P10=P1^0;
8 sbit P11=P1^1;
9 sbit P12=P1^2;
10 sbit P13=P1^3;
11 sbit P14=P1^4;
12 sbit P15=P1^5;
13 sbit P16=P1^6;
14 sbit P17=P1^7;
15 sbit P33=P3^3;
16 uchar regi,freq=1;
17 uchar code tab1[128]={
18 64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,
19 109,111,113,115,117,118,120,121,123,124,125,126,126,
20 127,127,127,127,127,127,127,126,126,125,124,123,121,
21 120,118,117,115,113,111,109,106,104,102,99,96,94,91,
22 88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39,
23 36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,
24 1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,
25 25,28,31,33,36,39,42,45,48,51,54,57,60};
26
27 uchar code tab3[2]={0,1};
28
29 void delay2() /* 延时2us函数 */
30 {
31 1 TF1=0;
32 1 TMOD=0x10;
33 1 TH1=0xff;
34 1 TL1=0xfe;
35 1 TR1=1;
36 1 while(TF1==0){}
37 1 TF1=0;
38 1 }
39
40 void delay(uchar t) /*延迟函数*/
41 {while(t--);}
42
43 void square() /* 方波发生函数 */
44 {
45 1 uint i,j;
46 1 while(1)
47 1 {
48 2 for(i=0;i<=63;i++)
49 2 { DAC0832=0x00;
50 3 for(j=freq;j>0;j--)delay2();
51 3 }
52 2 for(i=0;i<=63;i++)
53 2 { DAC0832=0xff;
54 3 for(j=freq;j>0;j--)delay2();
55 3 }
C51 COMPILER V8.05a 波形发蒧芲 09/09/2008 00:02:51 PAGE 2
56 2 if(P12==0){while(P12==0);break;}
57 2 }
58 1 }
59
60 void saw() /* 锯齿波发生函数 */
61 {
62 1 while(1)
63 1 { uchar i,j;
64 2 for (i=0;i<=128;i++)
65 2 { DAC0832=i; for(j=freq;j>0;j--)delay2();}
66 2 if(P11==0){while(P11==0);break;}
67 2 }
68 1 }
69
70 void sin( ) /*正弦波*/
71 {
72 1 unsigned int i,j;
73 1 while(1)
74 1 {
75 2 if(i==128)i=0;
76 2 DAC0832=tab1[i++];
77 2 for(j=freq;j>0;j--)delay2();
78 2 if(P10==0){while(P10==0);break;}
79 2 }
80 1 }
81
82 void tran(void) /*三角波*/
83 {
84 1 uchar i,j;
85 1 while(1)
86 1 {
87 2 for(i=0;i<=63;i++)
88 2 { for(j=freq;j>0;j--)delay2();DAC0832=i;}
89 2 for(i=63;i>=0;i--)
90 2 { for(j=freq;j>0;j--)delay2();DAC0832=i;}
91 2 if(P13==0){while(P13==0);break;}
92 2 }
93 1 }
94
95
96 void main() /*主函数*/
97 {
98 1 EA=1;EX0=1;EX1=1; regi=102;
99 1 while(1)
100 1 { DAC0832R=regi;
101 2 if(P10==0){delay(3);while(P10==0);sin();}
102 2 if(P11==0){delay(3);while(P11==0);saw();}
103 2 if(P12==0){delay(3);while(P12==0);square();}
104 2 if(P13==0){delay(3);while(P13==0);tran();}
105 2 if(P14==0){delay(3);while(P14==0);regi=regi+25.5;}
106 2 if(P15==0){delay(3);while(P15==0);regi=regi-25.5;}
107 2 if(P16==0){delay(3);while(P16==0);freq=freq+1;}
108 2 if(P17==0){delay(3);while(P17==0);freq=freq-1;}
109 2 }
110 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 447 ----
CONSTANT SIZE = 130 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V8.05a 波形发蒧芲 09/09/2008 00:02:51 PAGE 3
DATA SIZE = 2 2
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 + -