📄 开关式的 锁相环bh1415的调频参考c程序.lst
字号:
C51 COMPILER V8.08 开关式的____薩相环BH1415的调频参考C程序 10/02/2002 11:31:23 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 开关式的____薩相环BH1415的调频参考C程序
OBJECT MODULE PLACED IN 开关式的 锁相环BH1415的调频参考C程序.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 开关式的 锁相环BH1415的调频参考C程序.c BROWSE DEBUG OBJECTEXTEND LISTINC
-LUDE
line level source
1 //***************************************************************
2 // 锁相环BH1415的调频程序
3 //作者:Shang Xianglu
4 //电子信息工程专业 航空工程学院
5 //日期:2008.9.25
6 //说明:四个按键分别控制:频率步进,步退,立体声开关,音频静音
7 // 复位默认:频率是 98MHZ ,立体声, 正常模式。
8 // 频率调节范围 :88MHZ--108MHZ
9 //硬件连接:
10 // MUTE ------- P1^0
11 // DI ------- P1^1
12 // CLK ------- P1^2
13 // CE ------- P1^3
14 // 按键 静音控制 ------- P1^4
15 // 按键 频率步进 ------- P1^5
16 // 按键 频率步退 ------- P1^6
17 // 按键 立体声控制 ------- P1^7
18 //
19 //***************************************************************
20
21 #include<reg51.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 REG51.H
3 =1
4 =1 Header file for generic 80C51 and 80C31 microcontroller.
5 =1 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __REG51_H__
10 =1 #define __REG51_H__
11 =1
12 =1 /* BYTE Register */
13 =1 sfr P0 = 0x80;
14 =1 sfr P1 = 0x90;
15 =1 sfr P2 = 0xA0;
16 =1 sfr P3 = 0xB0;
17 =1 sfr PSW = 0xD0;
18 =1 sfr ACC = 0xE0;
19 =1 sfr B = 0xF0;
20 =1 sfr SP = 0x81;
21 =1 sfr DPL = 0x82;
22 =1 sfr DPH = 0x83;
23 =1 sfr PCON = 0x87;
24 =1 sfr TCON = 0x88;
25 =1 sfr TMOD = 0x89;
26 =1 sfr TL0 = 0x8A;
27 =1 sfr TL1 = 0x8B;
28 =1 sfr TH0 = 0x8C;
29 =1 sfr TH1 = 0x8D;
30 =1 sfr IE = 0xA8;
31 =1 sfr IP = 0xB8;
32 =1 sfr SCON = 0x98;
33 =1 sfr SBUF = 0x99;
C51 COMPILER V8.08 开关式的____薩相环BH1415的调频参考C程序 10/02/2002 11:31:23 PAGE 2
34 =1
35 =1
36 =1 /* BIT Register */
37 =1 /* PSW */
38 =1 sbit CY = 0xD7;
39 =1 sbit AC = 0xD6;
40 =1 sbit F0 = 0xD5;
41 =1 sbit RS1 = 0xD4;
42 =1 sbit RS0 = 0xD3;
43 =1 sbit OV = 0xD2;
44 =1 sbit P = 0xD0;
45 =1
46 =1 /* TCON */
47 =1 sbit TF1 = 0x8F;
48 =1 sbit TR1 = 0x8E;
49 =1 sbit TF0 = 0x8D;
50 =1 sbit TR0 = 0x8C;
51 =1 sbit IE1 = 0x8B;
52 =1 sbit IT1 = 0x8A;
53 =1 sbit IE0 = 0x89;
54 =1 sbit IT0 = 0x88;
55 =1
56 =1 /* IE */
57 =1 sbit EA = 0xAF;
58 =1 sbit ES = 0xAC;
59 =1 sbit ET1 = 0xAB;
60 =1 sbit EX1 = 0xAA;
61 =1 sbit ET0 = 0xA9;
62 =1 sbit EX0 = 0xA8;
63 =1
64 =1 /* IP */
65 =1 sbit PS = 0xBC;
66 =1 sbit PT1 = 0xBB;
67 =1 sbit PX1 = 0xBA;
68 =1 sbit PT0 = 0xB9;
69 =1 sbit PX0 = 0xB8;
70 =1
71 =1 /* P3 */
72 =1 sbit RD = 0xB7;
73 =1 sbit WR = 0xB6;
74 =1 sbit T1 = 0xB5;
75 =1 sbit T0 = 0xB4;
76 =1 sbit INT1 = 0xB3;
77 =1 sbit INT0 = 0xB2;
78 =1 sbit TXD = 0xB1;
79 =1 sbit RXD = 0xB0;
80 =1
81 =1 /* SCON */
82 =1 sbit SM0 = 0x9F;
83 =1 sbit SM1 = 0x9E;
84 =1 sbit SM2 = 0x9D;
85 =1 sbit REN = 0x9C;
86 =1 sbit TB8 = 0x9B;
87 =1 sbit RB8 = 0x9A;
88 =1 sbit TI = 0x99;
89 =1 sbit RI = 0x98;
90 =1
91 =1 #endif
22
23 #define uchar unsigned char
24 #define uint unsigned int
25
C51 COMPILER V8.08 开关式的____薩相环BH1415的调频参考C程序 10/02/2002 11:31:23 PAGE 3
26 sbit MUTE = P1^0;
27 sbit DI = P1^1;
28 sbit CLK = P1^2;
29 sbit CE = P1^3;
30 sbit KEY_1= P1^4;
31 sbit KEY_2= P1^5;
32 sbit KEY_3= P1^6;
33 sbit KEY_4= P1^7;
34
35 void Send_16(uint ui_Date, uchar uc_MONO ,uchar uc_PD); //发送数据函数
36 void Key_Scan_1(void); //控制静音
37 void Key_Scan_2(void); //频率步进 精度0.1MHZ
38 void Key_Scan_3(void); //频率步退 精度0.1MHZ
39 void Key_Scan_4(void); //立体声控制
40 void Delay(void);
41
42 uchar uc_Count_1;
43 uchar uc_Count_2;
44 uchar uc_Count_3;
45 uchar uc_Count_4;
46 uint ui_TEMP_1; //保存频率数据
47 uint ui_TEMP_2; //保存立体声数据
48
49 //主函数
50 void main(void)
51 {
52 1 Send_16(0x3d4,0x01,0x00);
53 1 while(1)
54 1 {Key_Scan_1();
55 2 Key_Scan_2();
56 2 Key_Scan_3();
57 2 Key_Scan_4();}
58 1 }
59
60
61 //延迟函数
62 void Delay()
63 {
64 1 uchar i,j;
65 1 for(i=100;i;--i)
66 1 for(j=200;j;--j);
67 1 }
68
69
70 //控制静音
71 void Key_Scan_1(void)
72 {
73 1 if(KEY_1==0)
74 1 {
75 2 Delay();
76 2 if(KEY_1==0)
77 2 {
78 3 MUTE=(uc_Count_1++)%2;
79 3 while(KEY_1==0);
80 3 }
81 2 }
82 1 }
83
84
85 //频率步进
86 void Key_Scan_2(void)
87 {
C51 COMPILER V8.08 开关式的____薩相环BH1415的调频参考C程序 10/02/2002 11:31:23 PAGE 4
88 1 if(KEY_2==0)
89 1 {
90 2 Delay();
91 2 if(KEY_2==0)
92 2 {
93 3 uc_Count_2++;
94 3 if(uc_Count_2==100)
95 3 {
96 4 uc_Count_2=0;
97 4 Send_16(0x3d4,ui_TEMP_2,0x00);
98 4 }
99 3 Send_16(ui_TEMP_1+1,ui_TEMP_2,0x00);
100 3 while(KEY_2==0);
101 3 }
102 2 }
103 1 }
104
105
106 //频率步退
107 void Key_Scan_3(void)
108 {
109 1 if(KEY_3==0)
110 1 {
111 2 Delay();
112 2 if(KEY_3==0)
113 2 {
114 3 uc_Count_3++;
115 3 if(uc_Count_3==100)
116 3 {
117 4 uc_Count_3=0;
118 4 Send_16(0x3d4,ui_TEMP_2,0x00);
119 4 }
120 3 Send_16(ui_TEMP_1-1,ui_TEMP_2,0x00);
121 3 while(KEY_3==0);
122 3 }
123 2 }
124 1 }
125
126
127
128 //立体声控制
129 void Key_Scan_4(void)
130 {
131 1 if(KEY_4==0)
132 1 {
133 2 Delay();
134 2 if(KEY_4==0)
135 2 {
136 3 uc_Count_4++;
137 3 if(ui_TEMP_2=uc_Count_4%2)
138 3 Send_16(ui_TEMP_1,0x01,0x00);
139 3 else
140 3 Send_16(ui_TEMP_1,0x00,0x00);
141 3 while(KEY_4==0);
142 3 }
143 2 }
144 1 }
145
146
147 //发送数据函数
148 void Send_16(uint ui_Date,uchar uc_MONO ,uchar uc_PD)
149 {
C51 COMPILER V8.08 开关式的____薩相环BH1415的调频参考C程序 10/02/2002 11:31:23 PAGE 5
150 1 uchar i;
151 1 ui_TEMP_1=ui_Date;
152 1 CLK=0;
153 1 CE=0;
154 1 CE=1;
155 1 for(i=11;i;--i)
156 1 {
157 2 DI=ui_Date&0x01;
158 2 ui_Date>>=1;
159 2 CLK=1;
160 2 CLK=0;
161 2 }
162 1 DI=uc_MONO&0x01;
163 1 CLK=1;
164 1 CLK=0;
165 1 DI=uc_PD&0x20;
166 1 CLK=1;
167 1 CLK=0;
168 1 uc_PD<<=1;
169 1 DI=uc_PD&0x20;
170 1 CLK=1;
171 1 CLK=0;
172 1 DI=1;
173 1 CLK=1;
174 1 CLK=0;
175 1 DI=0;
176 1 CLK=1;
177 1 CLK=0;
178 1 CE=0;
179 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 257 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -