📄 xinhao.lst
字号:
C51 COMPILER V7.06 XINHAO 05/24/2007 21:19:42 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE XINHAO
OBJECT MODULE PLACED IN D:\MYDOCU~1\AD9851~1\XINHAO.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\MYDOCU~1\AD9851~1\XINHAO.C DB SB OE
stmt level source
1 #include <reg52.h>
2 #include <math.h>
3 #include <stdio.h>
4 #include <absacc.h>
5
6 #define KEY XBYTE[0x8000]
7 #define DATAPORT XBYTE[0xb000] //点阵数据口地址
8 #define COMPORT XBYTE[0xb200] //点阵命令口地址
9 #define FRE1_A XBYTE [0x9000] //频率控制字一正弦波,调幅载波,FSK载波f1,ASK,PSK载波
10 #define FRE1_B XBYTE [0x9001]
11 #define FRE1_C XBYTE [0x9002]
12 #define FRE1_D XBYTE [0x9003]
13 #define FRE2_A XBYTE [0x9005] //频率控制字二 FSK载波f2
14 #define FRE2_B XBYTE [0x9006]
15 #define FRE2_C XBYTE [0x9007]
16 #define FRE2_D XBYTE [0x9008]
17 #define MODE XBYTE [0x9004] //功能切换控制:1.AM 与 Sin 2.FM 3.ASK 4.FSK 5.PSK
18 #define DDS_D0 XBYTE [0xc000] //AM调制波控制字
19 #define DDS_D1 XBYTE [0xc001]
20 #define DDS_D2 XBYTE [0xc002]
21 #define DDS_D3 XBYTE [0xc003]
22 #define DA0832 XBYTE [0xd000] //AM调制波幅度控制端口
23
24 #define uchar unsigned char
25 #define uint unsigned int
26 #define ulong unsigned long int
27
28 #define NUM 18
29 /**************************************/
30 /***************公用子程序声明***********************/
31 void Init_Int(void); //中断初始化
32 void Delay(uint Time); //延时子程序
33 void L_delay(uchar T); //长时间延时程序
34 void Datas_dis(ulong Datas,uchar P_str,uchar P_end,uchar P_pon);//数字送显程序
35 void Chars_dis(uchar *s); //一整行英文字符显示送显程序
36 void Chars_dis_s(uchar str,uchar end,uchar *s); //更改一行中的几个字符
37 void Out_data(uchar dat); //向点阵数据口发数据
38 void Check(void); //检查点阵读写状态
39 void Out_com(uchar com); //写一个命令
40 void Out_data_com(uchar dat1,uchar com1);//写一个数据和一个命令
41 void Out_data2_com(uchar dat1,uchar dat2,uchar com1);//写两个数据和一个命令
42 void Init_Dian(uchar l); //点阵初始化 8:8*8字符, 6:6*8字符
43 void Clear_Dian(uchar a); //字符和图形显示清屏
44 void Dis_line(uchar Line_num); //点阵显示一行字符
45 /**************功能子程序声明************/
46 void DDS(ulong F); //DAC0800 DDS程序
47 void AD9851_DDS(ulong frequence); //AD9851 单频或AM模式
48 void AD9851_FSK(ulong f1,ulong f2);
49 /*
50 void AD9851_FSK(ulong f1,ulong f2,ulong fsk);//fsk
51 void AD600_WR(uint kp); //AD600增益控制电压输出设置程序
52 void OFFSET_WR(uchar kk); //调制深度设置程序
53 void AMPL_WR(uint la); //DAC0800 幅度控制程序 */
54
55 void Manu0_Dis(void); //0层菜单显示程序
C51 COMPILER V7.06 XINHAO 05/24/2007 21:19:42 PAGE 2
56 void Freq_Dis(ulong ff); //频率显示程序
57 void Ampl_Dis(uint aa); //幅度显示程序
58 void Manu1_Dis(void); //1层菜单显示程序
59 void Manu2_Dis(void); //2层菜单显示程序
60 void Manu3_Dis(void); //3层菜单显示程序
61 void Manu4_Dis(void); //4层菜单显示程序
62 void Manu5_Dis(void); //5层菜单显示程序
63 void Manu6_Dis(void); //6层菜单显示程序
64 void Input_Dis(void); //输入缓冲显示
65
66 /***********************************************************/
67 ulong FREQ1=0;
68 ulong FREQ2=0;
69 ulong FSK=0;
70 uchar DEEP=0;
71 uint AMP1=0;
72 uint AMP2=0;
73 ulong Input_Temp=0;
74 uchar Point=0;
75 uchar Step=0;
76 uint C_V=0;
77
78 sbit ET_SIX=P1^7; //点阵字符大小选择,1:8*8 0:6*8
79 sbit XSK_AM=P1^4; // 数字调制或调幅
80 sbit MD_SIN=P1^2; //正弦或调制 ,0:正弦,1:调制信号
81 sbit FIVE_TEN=P1^3; //10K/5K最大角频偏选择 1:5K ,0:10K
82 sbit PSK_ASK=P1^1; //PSK/ASK选择 1:ASK 0:PSK
83
84 uchar ten_five=0; //最大频偏标志位
85 uint amp;
86 /********************************/
87 /* 程序状态转换 */
88 /* 0:根菜单显示状态 */
89 /* 1:正弦输出静态模式 */
90 /* 11:频率设定 */
91 /* 12:幅度设定 */
92 /* */
93 /* 2:AM输出静态模式 */
94 /* 21:载波频率设定 */
95 /* 22:调制深度设定 */
96 /* */
97 /* 3:FSK输出静态模式 */
98 /* 31:载波频率设定 */
99 /* 32:幅度设定 */
100 /* 33:跳变频率设定 */
101 /* 34:FSK跳变频率设定 */
102 /* 4:FM输出静态模式 */
103 /* 41:中心频率设定 */
104 /* 42:幅度设定 */
105 /* 43:频偏选择 */
106 /* 5:PSK输出静态模式 */
107 /* 6:ASK输出静态模式 */
108 /********************************/
109
110 /****************特殊存储区*****************/
111 /*****************************/
112 uchar Disp_Buff[21]; //显示缓冲区
113 /*****************************/
114
115 /*****************************/
116 /**********中 断 设 定***********************/
117 /**********************************************************************/
C51 COMPILER V7.06 XINHAO 05/24/2007 21:19:42 PAGE 3
118 void Init_Int(void)
119 {
120 1 EX0=1; //开外部中断0
121 1 IT0=1; //边沿触发
122 1 EX1=1; //开外部中断1
123 1 IT1=1; //边沿触发
124 1 EA=1; //开全局中断
125 1 }
126
127 /**********************************************************************/
128 /****************数据显示程序******************/
129 /*Datas:The data to be displayed;P_str:Starting display position;
130 P_end:Ending display position; P_pon:Point display position;
131 以上所述显示位置均为LCD上的绝对位置。
132 P_end比P_pon小1,则无小数点,按整数方式显示,以此方式显示时不能显示到显示屏的最右边一位;
133 所有的整型都化成ulong后送显,小数以整数表示以减少代码量 */
134 void Datas_dis(ulong Datas,uchar P_str,uchar P_end,uchar P_pon)
135 {
136 1 ulong d_t;
137 1
138 1 for(d_t=1;P_end>=P_str;P_end--)
139 1 {
140 2 if(P_end==P_pon)
141 2 {
142 3 Disp_Buff[P_end]='.';
143 3 }
144 2 else
145 2 {
146 3 Disp_Buff[P_end]=(Datas/d_t>0)?0x30+((Datas/d_t)%10):((P_end<P_pon-1)?0x20:0x30);
147 3 d_t=d_t*10;
148 3 }
149 2 }
150 1 }
151 /***************字符显示程序*******************/
152 /*整体刷以便显示缓冲区,在Data_dis();之前使用,将要显示数字的位用空格填充,
153 用其他符号填充也可。
154 入口为字符串首地址 */
155 void Chars_dis(uchar *s)
156 {
157 1 uchar w;
158 1 for(w=0;w<21;w++)
159 1 Disp_Buff[w]=s[w];
160 1 }
161 /************************************************************************/
162 /****************更改一行中的几个字符子程序***********/
163 void Chars_dis_s(uchar str,uchar end,uchar *s)
164 /*S为要替换的字符,uchar str 为起始地址,uchar end 为结束地址*/
165 {
166 1 uchar w;
167 1 for(w=0;str<=end;str++,w++)
168 1 Disp_Buff[str]=s[w];
169 1 }
170 /******************软件延时子程序***************************************/
171 /***********************************************************************/
172 void Delay(uint Time)
173 {
174 1 while(Time--); //软件短时间延迟
175 1 }
176 /***********************************************************************/
177 void L_delay(uchar T)
178 {
179 1 uchar o;
C51 COMPILER V7.06 XINHAO 05/24/2007 21:19:42 PAGE 4
180 1 for(o=0;o<T;o++) //软件长时间延时
181 1 Delay(40000);
182 1 }
183 /******************************************************************/
184 /*****************************************/
185 /* 点 阵 相 关 程 序 */
186 /*****************************************/
187 /*****************************************************************************/
188 /************检查读写状态*******************/
189 void Check(void)
190 {
191 1 uchar sta_1;
192 1 do
193 1 {
194 2 sta_1=COMPORT;
195 2 sta_1=sta_1&0x03;
196 2 }
197 1 while(sta_1!=0x03);
198 1 }
199 /************向数据口发数据*****************/
200 void Out_data(uchar dat)
201 {
202 1 Check();
203 1 DATAPORT=dat;
204 1 }
205 /***********写一个命令**********************/
206 void Out_com(uchar com)
207 {
208 1 Check();
209 1 COMPORT=com;
210 1 }
211 /*************写一个参数及命令**************/
212 void Out_data_com(uchar dat1,uchar com1)
213 {
214 1 Out_data(dat1);
215 1 Out_com(com1);
216 1 }
217 /************写两个参数及命令***************/
218 void Out_data2_com(uchar dat1,uchar dat2,uchar com1)
219 {
220 1 Out_data(dat1);
221 1 Out_data(dat2);
222 1 Out_com(com1);
223 1 }
224 /**************点阵初始化程序*******************/
225 void Init_Dian(uchar l)
226 {
227 1 if(l==6) //8*6型字符
228 1 {
229 2 Out_data2_com(0x00,0x00,0x40);
230 2 Out_data2_com(0x15,0x00,0x41);
231 2 Out_data2_com(0x00,0x04,0x42);
232 2 Out_data2_com(0x15,0x00,0x43);
233 2 //Out_com(0xa7);
234 2 }
235 1 Out_com(0x80); //逻辑或合成
236 1 Out_com(0x9c);
237 1 }
238 /*************清RAM区*********************/
239 void Clear_Dian(uchar a) //0:清除文本区;1:清除图形区
240 {
241 1 uint l,i;
C51 COMPILER V7.06 XINHAO 05/24/2007 21:19:42 PAGE 5
242 1 if(a==0)
243 1 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -