?? pll.lst
字號:
C51 COMPILER V8.02 PLL 06/25/2007 21:40:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE PLL
OBJECT MODULE PLACED IN PLL.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PLL.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #define uchar unsigned char
2 #define uint unsigned int
3 #define ulong unsigned long
4 #include <reg52.h>
5 #include <absacc.h>
6 #include "mylib.h"
7 #include "intrins.h"
8 #define input0 in0.in0
9 #define input1 in1.in1
10 #define fm 0
11 #define am 1
12 #define up 1
13 #define down 0
14 sbit din=P1^5;
15 sbit clk=P1^6;
16 sbit dou=P3^7;
17 sbit cen=P1^4;
18 extern bit band;
19 union
20 {
21 ulong all;
22 struct
23 {
24 uchar addr :8; //8位輸入輸出模式選擇地址
25 uint frq :16; //16位電臺頻率數值
26 uchar cankao :4; //4位參考頻率選擇
27 uchar xs :1; //晶振選擇 0:4.5m 1:7.2mhz
28 uchar cte :1; //中頻計數控制 1:START 0:REST
29 uchar inp :2; //輸入頻率范圍選擇
30 }in0;
31 }in0;
32 union
33 {
34 ulong da;
35 struct
36 {
37 uchar addr :8; //8位輸入輸出模式選擇地址
38 uchar bnc :1; //空輸出B01-B04四個輸出口,可以控制外圍的電路,常用來做波段切換。
39 uchar stmo :1; //立體單聲道強制轉換 設置為1可以選擇單聲道輸出
40 uchar ifen :1; //中頻緩沖輸出使能 設置為0選擇中頻輸出同時凈音
41 uchar band :1; //波段選擇 設置為0選擇調頻
42 uchar io :2; //兩個可以定義的端口,可以做輸入也可做輸出。再此程序中IO1空,IO2為立體聲檢測腳
43 uchar ioc :2; //設置IO口的工作模式,為0時設置為輸入模式,反之。
44 uchar dz :2; //鎖相環死區控制,不是很重要。
45 uchar ul :2; //鎖相環控制電壓輸出驅動模式設01時為直接輸出模式(一般采用此種模式)
46 uchar doc :3; //設置輸出數據端DO腳的輔助功能設置010時將指示中頻測量的完成狀況
47 uchar dnc :1; //空數據位,不用。
48 uchar test :3; //測試模式一般全部設置為0
49 uchar ifs :1; //中頻計數器控制,一般設置為1,主要設置中頻場強(1:40毫伏0:70毫伏)
50 uchar dlc :1; //電荷泵輸出,正常狀態為0,設置為1時拉低電位。
51 uchar tbc :1; //設置為1時使B01口輸出8HZ的基準脈沖,此時B01口將不能作為通用輸出口。
52 uchar gt :2; //中頻測量時間設置最大64MS最小4MS當GT=00時,前兩中等待時間3-4MS后兩中等待時間為7-8MS,
-中頻信號必須在等待時間結束之前輸入!!
53 }in1;
54 }in1;
C51 COMPILER V8.02 PLL 06/25/2007 21:40:12 PAGE 2
55 void iniband()
56 {
57 1 input0.addr=0x14; //輸入模式1的地址
58 1 input0.xs =0x00; //選擇0為4.5MHZ晶體
59 1 input0.cte =0x00; //鎖相環內部使能位設置0復位設置為1開始計數。
60 1 input1.addr=0x94; //輸入模式2的地址
61 1 input1.bnc =0x00; //B04本設計未用
62 1 input1.stmo=0x00; //默認為立體聲輸出
63 1 input1.ifen=0x01; //中頻輸出緩沖暫時關閉
64 1 input1.io =0x00; //沒有用到,但是可以做為立體聲單聲道信號檢測
65 1 input1.ioc =0x00; //將上兩個腳全部設置為輸出
66 1 input1.dz =0x00; //此設置效果不是很明顯可以設置捕捉范圍
67 1 input1.ul =0x01; //將鎖相環的誤差電壓直接輸出可以設置捕捉靈敏度
68 1 input1.doc =0x00; //將DOUT腳的輔助功能設置為中頻計數狀態檢測
69 1 input1.dnc =0x00; //空的數據位
70 1 input1.test=0x00; //全部設置為0設置為正常狀態
71 1 input1.ifs =0x00; //中頻輸入信號強度控制設置此狀態,最大限度的減少誤臺
72 1 input1.dlc =0x00; //設置電荷泵正常輸出
73 1 input1.tbc =0x00; //設置為1時B01將輸出8HZ的基準信號但是BO1本收音電路設置為FM/AM轉換,應設置為零
74 1 input1.gt =0x01; //將中頻測量時間設置為4MS設置太高自動搜索整個頻段將會很長
75 1 }
76 void iniband1(bit band)//設置調頻調幅的不同部分
77 {
78 1 if(band==fm)
79 1 {
80 2 input0.cankao=0x0c; //FM步進頻率50KHZ
81 2 input0.inp=0x01; //輸入頻率范圍10-160MHZ
82 2 input1.band=fm;
83 2 }
84 1 else
85 1 {
86 2 input0.cankao=0x05; //AM步進頻率10KHZ
87 2 input0.inp=0x00; //輸入頻率范圍0.5-10MHZ
88 2 input1.band=am;
89 2 }
90 1 }
91
92
93 ulong stepserch(bit direction,uint freq)//單步搜索形參:步進方向,和基頻率
94 {
95 1 uchar c;
96 1 uint a; //根據
97 1 c=(input1.band)?0x10:0x01; //根據波段選擇步進數據AM每次加0X10 FM每次加0X01,具體原因參照數
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -