📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 05/04/2009 15:04:02 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /************************************************************************
2 *文件名:main。C *
3 *功能: 高频实验箱DDS程序。 *
4 *作者: 杨乐 *
5 *日期: 2009年1月21日 *
6 ************************************************************************/
7 #include<REG52.h>
8 #include<intrins.h>
9 #include<string.h>
10 #include"mainloop.h"
11 #include "dds9851.h"
12 #include"key.h"
13 #include"lcd.h"
14 #include "volcontrol.h"
15 /************************************************************************
16 *作者: 杨乐 *
17 *函数名: Init_special_interrupts *
18 *功能: 中断设置 *
19 *入口参数:无 *
20 *返回值: 无 *
21 *日期: 2009年1月21日 *
22 ************************************************************************/
23 void Init_special_interrupts(void)
24 {
25 1 EA = 1;
26 1 // ES = 1;
27 1 ES = 0;
28 1 ET1 = 0;
29 1 ET0 = 1;
30 1 EX1 = 0;
31 1 // EX0 = 1;
32 1 EX0 = 0;
33 1 TR0 = 1;
34 1 // IT0 = 1;
35 1 // IP = #10H;
36 1 }
37 /************************************************************************
38 *作者: 杨乐 *
39 *函数名: Init_MCU *
40 *功能: I/O口初始化 *
41 *入口参数:无 *
42 *返回值: 无 *
43 *日期: 2009年1月21日 *
44 ************************************************************************/
45 void Init_MCU()
46 {
47 1 P0 = 0xFF;
48 1 P1 = 0xFF;
49 1 P2 = 0xFF;
50 1 P3 = 0xFF;
51 1
52 1 //串口配置
53 1 // SCON = 0xD8;
54 1 //电源设置
55 1 // PCON = 0x80; //波特率加倍
C51 COMPILER V8.08 MAIN 05/04/2009 15:04:02 PAGE 2
56 1 }
57 /************************************************************************
58 *作者: 杨乐 *
59 *函数名: Init_timer *
60 *功能: 定时器初始化 *
61 *入口参数:无 *
62 *返回值: 无 *
63 *日期: 2009年1月21日 *
64 ************************************************************************/
65 void Init_timer()
66 {
67 1 TMOD = 0x21; //T1为8位,T0为16位
68 1 TH0 = 0xF0; //T0定时扫描键盘,4ms×
69 1 TL0 = 0x5F;
70 1 TH1 = 0xF3;
71 1 TL1 = 0xF3;
72 1 }
73 /************************************************************************
74 *作者: 杨乐 *
75 *函数名: Timer_0 *
76 *功能: 定时器中断程序(键盘扫描) *
77 *入口参数:无 *
78 *返回值: 无 *
79 *日期: 2009年1月21日 *
80 ************************************************************************/
81 void Timer_0(void) interrupt 1 //中断方式0
82 {
83 1 TR0 = 0;
84 1 ET0 = 0;
85 1
86 1 //--------------------------------------------
87 1 // 添加周期性处理程序,如定时等
88 1 // if (!(DisplayTimer--)) DEnable = TRUE;
89 1 // KeyEnable = TRUE;
90 1
91 1 // 读键盘---------------------------------
92 1 new_key = Read_Key();
93 1 if ((new_key & 0xF0) == 0x00)
94 1 {
95 2 if (new_key != old_key) // 有新的按键被按下
96 2 {
97 3 key_counter = 0; // 计时开始
98 3 Key_Process = FALSE;
99 3 }
100 2 else
101 2 {
102 3 if ((key_counter >= 5) && !Key_Process) // 按下键超过20ms且未处理
103 3 {
104 4 Key_Push_Flag = TRUE;
105 4 Key_Code = new_key;
106 4 }
107 3 else key_counter++; // 连续计数
108 3 }
109 2 }
110 1
111 1 old_key = new_key; // 保存键值
112 1
113 1 TH0 = 0xDA;
114 1 TL0 = 0xF0;
115 1
116 1 TR0 = 1;
117 1 ET0 = 1;
C51 COMPILER V8.08 MAIN 05/04/2009 15:04:02 PAGE 3
118 1 }
119 /************************************************************************
120 *作者: 杨乐 *
121 *函数名: main *
122 *功能: 主程序 *
123 *入口参数:无 *
124 *返回值: 无 *
125 *日期: 2009年1月21日 *
126 ************************************************************************/
127 void main(void)
128 {
129 1 // unsigned char i,j;
130 1 Init_MCU();
131 1 Init_timer();
132 1 Init_special_interrupts();
133 1 Init_DDS();
134 1 SetVoltage(5000);
135 1 initi();
136 1 //-----------------------------------//
137 1 Key_Push_Flag = FALSE;
138 1 Key_Process = FALSE;
139 1
140 1 ichar = 0;
141 1 Renew_Key = TRUE;
142 1 En_Key = FALSE;
143 1
144 1 Fnc = FSK;
145 1 mul = 1;
146 1
147 1 K_M = 0;
148 1 Freq_Vol = 0;
149 1 p = 0;
150 1 p1 = 0;
151 1 c = 1;
152 1 fd = 0;
153 1 fd1 = 0;
154 1 display(0x80," ");
155 1 display(0xc0," ");
156 1 display(0x84,"1000");
157 1 display(0xC0,"HZ");
158 1 // Freqdisplay[7]={0,0,0,1,};
159 1 while(1)
160 1 {
161 2 if(Key_Push_Flag)
162 2 {
163 3 if ((Key_Code <= 9)&&(Renew_Key)&&(p_bit==0))
164 3 {
165 4 // if (Freq_Vol == 0)
166 4 // {
167 4 Fichar = 0;
168 4 memset(Freqdisplay,0,8);
169 4 f = 0;
170 4 mul = 1;
171 4 /* }
172 4 else
173 4 {
174 4 Vichar = 0;
175 4 memset(Voldisplay,0,8);
176 4 v = 0;
177 4 }*/
178 4 Fnc = FSK;
179 4 En_Key = TRUE;
C51 COMPILER V8.08 MAIN 05/04/2009 15:04:02 PAGE 4
180 4 Renew_Key = FALSE;
181 4 display(0x80," ");
182 4 // Display_8X16(3,0," ");
183 4 }
184 3 if ((Key_Code <= 9)&&(En_Key)&&(p_bit==0))
185 3 {
186 4 /*if (Freq_Vol == 1)
187 4 {
188 4 v = Dis(Voldisplay,&Vichar,0x80);
189 4 // display(0x80,Voldisplay);
190 4 }
191 4 else
192 4 {*/
193 4 f = Dis(Freqdisplay,&Fichar,0x88);
194 4 // display(0x80,Freqdisplay);
195 4 // }
196 4
197 4 Key_Push_Flag = FALSE; // 处理完,清除标志
198 4 Key_Process = TRUE; // 置处理标志
199 4 }
200 3 }
201 2 //确定
202 2 if ((Key_Code == 0x0F))
203 2 {
204 3 // if(!Freq_Vol)
205 3 // {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -