📄 dds.lst
字号:
C51 COMPILER V7.50 DDS 08/22/2008 20:46:04 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DDS
OBJECT MODULE PLACED IN dds.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dds.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "intrins.h"
2 #include"reg51.h"
3 #include "lcd1602.h"
4 #include "stdio.h"
5
6 #define uchar unsigned char
7 #define uint unsigned int
8 #define key_bus P0
9
10 sbit reset=P1^0;
11 sbit sclk=P1^1;
12 sbit load=P1^2; //FQUD
13 sbit sdata=P1^3; //DATA
14
15
16 bit TIflag=1;//Note:It must be 1.
17
18 #define KEYPAD_IN XBYTE[0XF050]//XBYTE[0xA000]
19 #define KEYPAD_OUT XBYTE[0XF051]//XBYTE[0x8000]
20
21 sbit ds=P1^3;
22 sbit sh=P1^4;
23 sbit st=P1^5;
24
25 void WriteSIOByte(unsigned char led,unsigned char sel,unsigned char seg)
26 {
27 1 unsigned char i;
28 1 for (i=0;i<8;i++)
29 1 {
30 2 led=led<<1; ds=CY; sh=1; sh=0;
31 2 }
32 1 _nop_();//延时
33 1 for (i=0;i<8;i++)
34 1 {
35 2 sel=sel<<1; ds=CY; sh=1; sh=0;
36 2 }
37 1 _nop_();//延时
38 1 for (i=0;i<8;i++)
39 1 {
40 2 seg=seg<<1; ds=CY; sh=1; sh=0;
41 2 }
42 1 st=0;
43 1 st=1;//打入并行数据
44 1 }
45
46 /*************************AD9850初始化********************************/
47 void ad9850init()
48 {
49 1 reset=0;
50 1 reset=1;
51 1 reset=0;
52 1 load=0;
53 1 }
54
55 /*************************AD9850显示正弦波********************************/
C51 COMPILER V7.50 DDS 08/22/2008 20:46:04 PAGE 2
56 AD9850(float freq)
57 {
58 1 float fw;
59 1 uchar temp;
60 1 uchar i,j;
61 1 uchar d[5]; //d[4]中存放控制字最高位,即相位控制字
- //Freq=MCLK*FW/2^32
62 1 fw=freq*85.89934592;
63 1 d[4]=0;
64 1 d[0]=(unsigned long)fw;
65 1 d[1]=(unsigned long)fw>>8;
66 1 d[2]=(unsigned long)fw>>16;
67 1 d[3]=(unsigned long)fw>>24;
68 1 load=0;
69 1 sclk=0;
70 1 sclk=1;
71 1 sclk=0;
72 1 load=1;
73 1 load=0;
74 1 for(i=0;i<5;i++)
75 1 {
76 2 temp=d[i];
77 2 for(j=0;j<8;j++)
78 2 {
79 3 sclk=0;
80 3 if(temp&1) sdata=1;
81 3 else sdata=0;
82 3 sclk=1;
83 3 temp=temp>>1;
84 3 }
85 2 }
86 1
87 1 load=1;
88 1 load=0;
89 1 load=0;
90 1 load=0;
91 1 }
92
93
94 main()
95 {
96 1 uchar s[20]=0; //8位数字,含小数点
97 1 float freq=1000;
98 1 float step_value=100;
99 1 int step_state=2;//0=1HZ,1=10HZ,2=100HZ,3=1KHZ,4=10KHZ,5=100KHZ,6=1MHZ
100 1 int state=0; //state=0等待输入步进值状态,state=1改变频率值状态
101 1 ad9850init();
102 1 AD9850(freq);
103 1 P1=0x2;
104 1 while(1)
105 1 {
106 2 }
107 1
108 1 }
109
110
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 355 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- 45
C51 COMPILER V7.50 DDS 08/22/2008 20:46:04 PAGE 3
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -