📄 text1.lst
字号:
C51 COMPILER V7.20 TEXT1 08/11/2007 16:02:31 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //*********************************************************
2 //File Name :AD9850.c
3 //Author :GHL
4 //Date :2007/8/6
5 //Desciption :AD9850的控制字串行加载程序
6 // 加入键盘实现步进
7 //*********************************************************
8
9 #include<reg51.h>
10
11 #define uchar unsigned char
12 #define uint unsigned int
13 #define key_bus P1
14
15 sbit load=P0^1; //FQUD
16 sbit sclk=P0^0; //W_CLK
17 sbit sdata=P0^2; //DATA
18 sbit reset=P0^3;
19
20 unsigned char code key_decode[]={'*',0,'#','D',7,8,9,'C',4,5,6,'B',1,2,3,'A'};
21 /*************************延时子程序********************************/
22
23 delay(uchar d)
24 {
25 1 while(--d);
26 1 }
27
28 /*************************AD9850初始化********************************/
29 void init()
30 {
31 1 reset=0;
32 1 reset=1;
33 1 reset=0;
34 1 load=0;
35 1 }
36
37 /*************************AD9850显示正弦波********************************/
38 AD9850(float freq)
39 {
40 1 float fw;
41 1 uchar i,j,temp;
42 1 uchar d[5];
43 1 fw=freq*34.359738368; //d[4]中存放控制字最高位,即相位控制字
44 1 //Freq=MCLK*FW/2^32
45 1 d[4]=0;
46 1 d[0]=(unsigned long)fw;
47 1 d[1]=(unsigned long)fw>>8;
48 1 d[2]=(unsigned long)fw>>16;
49 1 d[3]=(unsigned long)fw>>24;
50 1
51 1
52 1 load=0;
53 1 sclk=0;
54 1 sclk=1;
55 1 sclk=0;
C51 COMPILER V7.20 TEXT1 08/11/2007 16:02:31 PAGE 2
56 1 load=1;
57 1 load=0;
58 1
59 1 for(i=0;i<5;i++)
60 1 {
61 2 temp=d[i];
62 2 for(j=0;j<8;j++)
63 2 {
64 3 sclk=0;
65 3 if(temp&1) sdata=1;
66 3 else sdata=0;
67 3 sclk=1;
68 3 temp=temp>>1;
69 3 }
70 2 }
71 1 load=1;
72 1 load=0;
73 1
74 1 }
75
76
77 /************矩阵键盘读键程序*******************/
78
79 unsigned char keytest()
80 {
81 1 unsigned char keycode=0xff,temp,i;
82 1 key_bus=0x0f;
83 1 temp=key_bus&0x0f;
84 1 if(temp!=0x0f) //有键按下
85 1 {
86 2 key_bus=0x7f;
87 2 for(i=0;i<4;i++)
88 2 {
89 3 temp=key_bus&0x0f;
90 3 if(temp==0x07) //输出端口示数
91 3 {
92 4 keycode=i*4;
93 4 break;
94 4 }
95 3 else if(temp==0x0b)
96 3 {
97 4 keycode=i*4+1;
98 4 break;
99 4 }
100 3 else if(temp==0x0d)
101 3 {
102 4 keycode=i*4+2;
103 4 break;
104 4 }
105 3 else if(temp==0x0e)
106 3 {
107 4 keycode=i*4+3;
108 4 break;
109 4 }
110 3 key_bus=(key_bus>>1)|0x80;
111 3 }
112 2
113 2 while((key_bus&0x0f)!=0x0f) //等待释放
114 2 {
115 3 key_bus=0x0f;
116 3 }
117 2
C51 COMPILER V7.20 TEXT1 08/11/2007 16:02:31 PAGE 3
118 2 }
119 1 return keycode;
120 1 }
121
122
123 main()
124 {
125 1
126 1 long freq;
127 1 unsigned char keycode;
128 1
129 1 AD9850(500000);
130 1
131 1 while(1)
132 1 {
133 2 keycode=keytest();
134 2
135 2 if(keycode==0xff)
136 2 {
137 3 delay(10000);
138 3 continue;
139 3 }
140 2
141 2 if(key_decode[keycode]==2)
142 2 {
143 3 freq=freq+100;
144 3
145 3 AD9850(freq);
146 3
147 3 }
148 2 else if(key_decode[keycode]==1)
149 2 {
150 3 freq=freq-100;
151 3
152 3 AD9850(freq);
153 3
154 3 }
155 2 }
156 1 }
157
158
159
160
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 380 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 18
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 + -