📄 mb1504.lst
字号:
C51 COMPILER V8.02 MB1504 11/24/2008 14:35:57 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MB1504
OBJECT MODULE PLACED IN MB1504.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MB1504.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 //数字锁相环(MB1504)驱动程序
3 //针对晶体 采用 12M 步进采用 10 KHz 的驱动程序
4 // 12M / 10K = 1200 = 0x04b0
5 // Refer counter = ( 0x04b0 << 1 ) & 0x8001 SW = 32
6 // Refer counter = ( 0x0960 ) & 0x8001
7 // Refer counter = 0x8961 ;
8
9 //针对使用频率范围为 8M -> 60M
10 // Frequence
11 // 8M 60M
12 // 800 6000
13 // 0x0320 0x1770
14 // peijianguo
15 */
16 #include < reg52.h >
17 #include < intrins.h >
18
19 sbit CLK = P1^0; //// 9 脚
20 sbit DATA = P1^1; //// 10脚
21 sbit LE = P1^2; //// 11脚
22
23 void Send16Bit( unsigned int SendData )
24 {
25 1 unsigned char i;
26 1 unsigned int SendMiddle;
27 1
28 1 SendMiddle = SendData;
29 1 LE = 0;
30 1 CLK = 0;
31 1 for( i = 0; i < 16; i ++ )
32 1 {
33 2 DATA = ( SendMiddle & 0x8000 );
34 2 _nop_( ); CLK = 1;
35 2 _nop_( ); CLK = 0;
36 2 SendMiddle = SendMiddle << 1;
37 2 }
38 1 LE = 1; _nop_( ); LE = 0;
39 1 }
40
41 void Send11Bit( unsigned int SendData )
42 {
43 1 unsigned char i;
44 1 unsigned int SendMiddle;
45 1
46 1 SendMiddle = SendData;
47 1 LE = 0; CLK = 0;
48 1 for( i = 0; i < 11; i ++ )
49 1 {
50 2 DATA = ( SendData & 0x8000 );
51 2 _nop_( ); CLK = 1;
52 2 _nop_( ); CLK = 0;
53 2 SendData = SendData << 1;
54 2 }
55 1 }
C51 COMPILER V8.02 MB1504 11/24/2008 14:35:57 PAGE 2
56
57 void Send8Bit( unsigned char SendData )
58 {
59 1 unsigned char i;
60 1 unsigned char SendMiddle;
61 1
62 1 SendMiddle = SendData;
63 1 for( i = 0; i < 8; i ++ )
64 1 {
65 2 DATA = ( SendData & 0x80 );
66 2 _nop_( ); CLK = 1;
67 2 _nop_( ); CLK = 0;
68 2 SendData = SendData << 1;
69 2 }
70 1 LE = 1; _nop_( ); LE = 0;
71 1 }
72
73 void SendReferF( void )
74 { //针对晶体 采用 12M
75 1 Send16Bit( 0x8961 ); // 12M Crystal
76 1 }
77
78 void FrequenceToSend( unsigned int FrequenceD )
79 {
80 1 unsigned char AD = 0, i = 0;
81 1 unsigned int ND = 0, MiddleF = 2000;
82 1
83 1 if( ( FrequenceD >= 800 ) && ( FrequenceD <= 6000 ) )
84 1 { // 限制 锁定频率范围
85 2 MiddleF = FrequenceD;
86 2 ND = ( unsigned int ) ( MiddleF / 32 );
87 2 AD = ( unsigned char ) ( MiddleF % 32 );
88 2 ND = ND << 5; AD = AD << 1; AD = AD & 0xfe;//////////
89 2 Send11Bit( ND ); Send8Bit( AD );
90 2 }
91 1 }
92
93 void main( void )
94 {
95 1 SendReferF( ); ////MB1504 送基准数 // 初始化
96 1 FrequenceToSend( 4800 ); ////MB1504 送30 M
97 1 while( 1 )
98 1 {
99 2 }
100 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 189 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -