?? ss_sweep.lst
字號:
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 1
C51 COMPILER V7.07, 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
stmt level source
1 #include <absacc.h>
2 #include <reg51.h>
3 #include <stdlib.h>
4 #include <math.h>
5 #include <intrins.h>
6 #include "display_drv.h"
7
8
9 #define uchar unsigned char
10 #define uint unsigned int
11
12 /*定義開關中斷*/
13 #define DISABLE EA=0
14 #define ENABLE EA=1
15 #define ON 1
16 #define OFF 0
17
18 /*定義鍵盤*/
19 #define key0 0
20 #define key1 1
21 #define key2 2
22 #define key3 3
23 #define key4 4
24 #define key5 5
25 #define key6 6
26 #define key7 7
27 #define key8 8
28 #define key9 9
29 #define key_mod 10
30 #define key_clr 11
31 #define key_enter 12
32
33 /*define Command*/
34
35 #define Wsin 0
36 #define Wtri 1
37 #define Wpul 2
38 #define Wclr 3
39
40 /*定義端口,P2口用作控制線*/
41 sbit WR_M=P2^4; //回送M控制線
42 sbit RESET_PHASEREG=P2^5; //復位相位累加器
43
44 /*P1口用作LED顯示線*/
45 sbit LED_CLK=P1^0; //LED時鐘線
46 sbit LED_DAT=P1^1; //LED數據線
47
48 sbit Cmd_CS=P2^5;
49 sbit DC=P2^6;
50 sbit Mh=P2^7;
51 sbit Int_wire=P3^2;
52
53
54 uchar count=0; //顯示的位數
55 bit flag=0; //是否按了ENTER,為0表示沒有按
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 2
56 uchar idata value[5]={0,2,0,0,0}; //存儲顯示的數值
57 uchar mh_data=0; //送給CPLD的頻率步進值高位
58 uchar ml_data=0; //送給CPLD的頻率步進值低位
59
60 uchar idata key_pressed;
61 static uchar key_no;
62
63 void led_display(uchar i);
64 /*數字'1','2','3','4','5','6','7','8','9','0'的七段碼字庫*/
65 const uchar code LED_FONT[11]={ //
66 0xFC, //0
67 0x60, //1
68 0xDA, //2
69 0xF2, //3
70 0x66, //4
71 0xB6, //5
72 0xBE, //6
73 0xE0, //7
74 0xFE, //8
75 0xF6, //9
76 0x00, //不顯示
77 };
78
79 void init_port()
80 {
81 1 uchar i;
82 1 P0 = 0xFF;
83 1 P1 = 0xFF;
84 1 RESET_PHASEREG=1; //禁止相位累加器工作
85 1 WR_M=1; //回送M控制線初始為高電平
86 1 Cmd_CS=1;
87 1 P3 = 0xFF;
88 1 for(i=0;i<6;i++)
89 1 led_display(10);
90 1 }
91
92
93 void init_interrupt()
94 {
95 1 IE=0x81;
96 1 PX0=1;
97 1 EX0=1;
98 1 IE0=0;
99 1 EA=1;
100 1 IT0=1; //外部中斷0為跳變觸發方式
101 1 ENABLE;
102 1
103 1 //CPU開中斷
104 1 }
105
106 void led_display(uchar i)
107 {
108 1 uchar j,mask;
109 1 mask=0x01;
110 1 for(j=0;j<8;j++){
111 2 LED_CLK=0;
112 2 LED_DAT=( (LED_FONT[i]) & mask);
113 2 mask<<=1;
114 2 LED_CLK=1; //上升沿移位
115 2 }
116 1 }
117
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 3
118
119 void wait(void)
120 {
121 1 unsigned int i;
122 1 for(i=0;i<5000;i++);;
123 1 }
124
125 void delayMs(unsigned char dly)
126 {
127 1 unsigned char i;
128 1 unsigned int k;
129 1 for(i=dly;i!=0;i--)
130 1 {
131 2 for(k=0;k<1000;k++);
132 2 }
133 1 }
134
135
136
137 #define SysFrq 12
138
139 void SetPhase(unsigned long int Freq)
140 {
141 1 unsigned char div;
142 1 unsigned int phase;
143 1 #if SysFrq==12
144 1 if(Freq>31250)
145 1 {
146 2 Freq=31250;
147 2 value[0]=3;
148 2 value[1]=1;
149 2 value[2]=2;
150 2 value[3]=5;
151 2 value[4]=0;
152 2 }
153 1 if(Freq<1007)
154 1 {
155 2 div=31;
156 2 phase=Freq/0.4922;
157 2 }
158 1
159 1 if((Freq>=1007)&&(Freq<2081))
160 1 {
161 2 div=15;
162 2 phase=Freq/1.0173;
163 2 }
164 1 if((Freq>=2081)&&(Freq<4463))
165 1 {
166 2 div=7;
167 2 phase=Freq/2.1798;
168 2 }
169 1 if((Freq>=4463)&&(Freq<6249))
170 1 {
171 2 div=5;
172 2 phase=Freq/3.0517;
173 2 }
174 1 if((Freq>=6249)&&(Freq<7811))
175 1 {
176 2 div=4;
177 2 phase=Freq/3.8147;
178 2 }
179 1 if((Freq>=7811)&&(Freq<10415))
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 4
180 1 {
181 2 div=3;
182 2 phase=Freq/5.0863;
183 2 }
184 1 if((Freq>=10415)&&(Freq<15624))
185 1 {
186 2 div=2;
187 2 phase=Freq/7.6294;
188 2 }
189 1 if((Freq>=15624))
190 1 {
191 2 div=1;
192 2 phase=Freq/15.2588;
193 2 }
194 1 #endif
195 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))
{
div=7;
phase=Freq/2.0090;
}
if((Freq>=4113)&&(Freq<5759))
{
div=5;
phase=Freq/2.8125;
}
if((Freq>=5759)&&(Freq<7199))
{
div=4;
phase=Freq/3.5156;
}
if((Freq>=7199)&&(Freq<10104))
{
div=3;
phase=Freq/4.9345;
}
if((Freq>=10104)&&(Freq<15157))
{
div=2;
phase=Freq/7.4017;
}
if((Freq>=30316))
C51 COMPILER V7.07 SS_SWEEP 05/29/2007 13:40:18 PAGE 5
{
div=1;
phase=Freq/14.8034;
}
#endif
247 1 P0=phase&0xff;//((unsigned char *)&phase)[1];
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -