📄 ss_sweep.lst
字号:
C51 COMPILER V8.02 SS_SWEEP 12/07/2007 16:59:16 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SS_SWEEP
OBJECT MODULE PLACED IN ss_sweep.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ss_sweep.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <absacc.h>
2 #include <reg52.h>
3 #include <stdlib.h>
4 #include <math.h>
5 #include <intrins.h>
6 #include "display_fun.h"
7 #include "ziku.h"
8 #include "wave.h"
9
10 #define uchar unsigned char
11 #define uint unsigned int
12
13 /*定义开关中断*/
14 #define DISABLE EA=0
15 #define ENABLE EA=1
16 #define ON 1
17 #define OFF 0
18
19 /*定义键盘*/
20 #define key0 0
21 #define key1 1
22 #define key2 2
23 #define key3 3
24 #define key4 4
25 #define key5 5
26 #define key6 6
27 #define key7 7
28 #define key8 8
29 #define key9 9
30 #define key_mod 10
31 #define key_clr 11
32 #define key_enter 12
33 #define key_tiao 13
34 #define key_xuan1 14
35 #define key_xuan2 15
36 /*define Command*/
37
38 #define Wsin 0
39 #define Wtri 1
40 #define Wpul 2
41 #define Wclr 3
42
43 /*定义端口,P2口用作控制线*/
44 sbit WR_M=P2^4; //回送M控制线
45 sbit RESET_PHASEREG=P2^5; //复位相位累加器
46
47 /*P1口用作LED显示线*/
48 sbit LED_CLK=P1^0; //LED时钟线
49 sbit LED_DAT=P1^1; //LED数据线
50
51 sbit Cmd_CS=P2^5;
52 sbit DC=P2^6;
53 sbit Mh=P2^7;
54 sbit Int_wire=P3^2;
55
C51 COMPILER V8.02 SS_SWEEP 12/07/2007 16:59:16 PAGE 2
56
57 uchar count=0; //显示的位数
58 bit flag=0; //是否按了ENTER,为0表示没有按
59 uchar idata value[5]={0,0,0,0,0}; //存储显示的数值
60 uchar mh_data=0; //送给CPLD的频率步进值高位
61 uchar ml_data=0; //送给CPLD的频率步进值低位
62
63 uchar idata key_pressed;
64 static uchar key_no;
65
66 void led_display(uchar i);
67 /*数字'1','2','3','4','5','6','7','8','9','0'的七段码字库*/
68 const uchar code LED_FONT[11]={ //
69 0xFC, //0
70 0x60, //1
71 0xDA, //2
72 0xF2, //3
73 0x66, //4
74 0xB6, //5
75 0xBE, //6
76 0xE0, //7
77 0xFE, //8
78 0xF6, //9
79 0x00 //不显示
80 };
81
82 void init_port()
83 {
84 1 uchar i;
85 1 P0 = 0xFF;
86 1 P1 = 0xFF;
87 1 RESET_PHASEREG=1; //禁止相位累加器工作
88 1 WR_M=1; //回送M控制线初始为高电平
89 1 Cmd_CS=1;
90 1 P3 = 0xFF;
91 1 for(i=0;i<6;i++)
92 1 led_display(10);
93 1 }
94
95
96 void init_interrupt()
97 {
98 1 IE=0x81;
99 1 PX0=1;
100 1 EX0=1;
101 1 IE0=0;
102 1 EA=1;
103 1 IT0=1; //外部中断0为跳变触发方式
104 1 ENABLE;
105 1
106 1 //CPU开中断
107 1 }
108
109 void led_display(uchar i)
110 {
111 1 uchar j,mask;
112 1 mask=0x01;
113 1 for(j=0;j<8;j++){
114 2 LED_CLK=0;
115 2 LED_DAT=( (LED_FONT[i]) & mask);
116 2 mask<<=1;
117 2 LED_CLK=1; //上升沿移位
C51 COMPILER V8.02 SS_SWEEP 12/07/2007 16:59:16 PAGE 3
118 2 }
119 1 }
120
121
122 void wait(void)
123 {
124 1 unsigned int i;
125 1 for(i=0;i<5000;i++);;
126 1 }
127
128 void delayMs(unsigned char dly)
129 {
130 1 unsigned char i;
131 1 unsigned int k;
132 1 for(i=dly;i!=0;i--)
133 1 {
134 2 for(k=0;k<1000;k++);
135 2 }
136 1 }
137
138
139
140 #define SysFrq 12
141
142 void SetPhase(unsigned long int Freq)
143 {
144 1 unsigned char div;
145 1 unsigned int phase;
146 1 #if SysFrq==12
147 1 if(Freq>31250)
148 1 {
149 2 Freq=31250;
150 2 value[0]=3;
151 2 value[1]=1;
152 2 value[2]=2;
153 2 value[3]=5;
154 2 value[4]=0;
155 2 }
156 1 if(Freq<1007)
157 1 {
158 2 div=31;
159 2 phase=Freq/0.4922;
160 2 }
161 1
162 1 if((Freq>=1007)&&(Freq<2081))
163 1 {
164 2 div=15;
165 2 phase=Freq/1.0173;
166 2 }
167 1 if((Freq>=2081)&&(Freq<4463))
168 1 {
169 2 div=7;
170 2 phase=Freq/2.1798;
171 2 }
172 1 if((Freq>=4463)&&(Freq<6249))
173 1 {
174 2 div=5;
175 2 phase=Freq/3.0517;
176 2 }
177 1 if((Freq>=6249)&&(Freq<7811))
178 1 {
179 2 div=4;
C51 COMPILER V8.02 SS_SWEEP 12/07/2007 16:59:16 PAGE 4
180 2 phase=Freq/3.8147;
181 2 }
182 1 if((Freq>=7811)&&(Freq<10415))
183 1 {
184 2 div=3;
185 2 phase=Freq/5.0863;
186 2 }
187 1 if((Freq>=10415)&&(Freq<15624))
188 1 {
189 2 div=2;
190 2 phase=Freq/7.6294;
191 2 }
192 1 if((Freq>=15624))
193 1 {
194 2 div=1;
195 2 phase=Freq/15.2588;
196 2 }
197 1 #endif
198 1 #if SysFrq==11
if(Freq>30316)
{
Freq=30316;
value[0]=3;
value[1]=0;
value[2]=3;
value[3]=1;
value[4]=6;
}
if(Freq<928)
{
div=31;
phase=Freq/0.4536;
}
if((Freq>=928)&&(Freq<1919))
{
div=15;
phase=Freq/0.9375;
}
if((Freq>=1919)&&(Freq<4113))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -