|
|
 |
I2C总线高频头控制程序(PLL芯片为TSA5522系列)
|
|
|
|
文章编号: |
090106163243 |
文章分类: |
单片机 > 51系列 |
|
点 击: |
|
关 键 词: |
I2C,高频头,TSA5522,PLL |
|
文章来源: |
网络,作者:徐文军 |
|
摘 要: |
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #define FUENCY 38900 /* 中频频率 */
- #define PLLdataH(f) ((f+FUENCY)*16/1000/256) /* 频率数据高 第1字节*/
- #define PLLdataL(f) ((f+FUENCY)*16/1000%256) /* 频率数据低 第2字节*/
- #define PLLCON1 0x8e /* 控制字1 第3字节*/
-
- #define PLLCON2(f) (((f)<(168000))?(0xa0):(((f)<(450000))?(0x90):(0x30)))
- #define PLLdata3(fchan) PLLdataH (fchan),PLLdataL (fchan),PLLCON2 (fchan)
-
- unsigned char code ucdataTab[][3]=
- {
- PLLdata3(49750),
- PLLdata3(57750),
- PLLdata3(65750),
- PLLdata3(77250),
- PLLdata3(85250),
- PLLdata3(112250),
- PLLdata3(120250),
- PLLdata3(128250),
- PLLdata3(136250),
- PLLdata3(144250),
- PLLdata3(152250),
- PLLdata3(160250),
-
- PLLdata3(168250),
- PLLdata3(176250),
- PLLdata3(184250),
- PLLdata3(192250),
- PLLdata3(200250),
- PLLdata3(208250),
- PLLdata3(216250),
- PLLdata3(224250),
- PLLdata3(232250),
- PLLdata3(240250),
- PLLdata3(248250),
- PLLdata3(256250),
- PLLdata3(264250),
- PLLdata3(272250),
- PLLdata3(280250),
- PLLdata3(288250),
- PLLdata3(296250),
- PLLdata3(304250),
- PLLdata3(312250),
- PLLdata3(320250),
- PLLdata3(328250),
- PLLdata3(336250),
- PLLdata3(344250),
- PLLdata3(352250),
- PLLdata3(360250),
- PLLdata3(368250),
- PLLdata3(376250),
- PLLdata3(384250),
- PLLdata3(392250),
- PLLdata3(400250),
- PLLdata3(408250),
- PLLdata3(416250),
- PLLdata3(424250),
- PLLdata3(432250),
- PLLdata3(440250),
- PLLdata3(448250),
-
- PLLdata3(456250),
- PLLdata3(464250),
- PLLdata3(471250),
- PLLdata3(479250),
- PLLdata3(487250),
- PLLdata3(495250),
- PLLdata3(503250),
- PLLdata3(511250),
- PLLdata3(519250),
- PLLdata3(527250),
- PLLdata3(535250),
- PLLdata3(543250),
- PLLdata3(551250),
- PLLdata3(559250),
- PLLdata3(607250),
- PLLdata3(615250),
- PLLdata3(623250),
- PLLdata3(631250),
- PLLdata3(639250),
- PLLdata3(647250),
- PLLdata3(655250),
- PLLdata3(663250),
- PLLdata3(671250),
- PLLdata3(679250),
- PLLdata3(687250),
- PLLdata3(695250),
- PLLdata3(703250),
- PLLdata3(711250),
- PLLdata3(719250),
- PLLdata3(727250),
- PLLdata3(735250),
- PLLdata3(743250),
- PLLdata3(751250),
- PLLdata3(759250),
- PLLdata3(767250),
- PLLdata3(775250),
- PLLdata3(783250),
- PLLdata3(791250),
- PLLdata3(799250),
- PLLdata3(807250),
- PLLdata3(815250),
- PLLdata3(823250),
- PLLdata3(831250),
- PLLdata3(839250),
- PLLdata3(847250),
- PLLdata3(855250),
- PLLdata3(863250),
-
- PLLdata3(90100-6500),
- PLLdata3(91000-6500),
- PLLdata3(91800-6500),
- PLLdata3(97500-6500),
- PLLdata3(100300-6500),
- PLLdata3(103200-6500),
- PLLdata3(105000-6500),
- PLLdata3(106500-6500),
- };
-
-
- #define AddPllWr 0xc2 /*TSA5522写地址*/
- #define AddPllRd 0xc3 /*TSA5522读地址*/
- sbit SDA = P0^4;
- sbit SCL = P0^5;
-
-
- void Start(void);
- void Stop(void);
- void SendACK(void);
- void SendNoACK(void);
- unsigned char SendByte(unsigned char d);
- unsigned char ReadByte(void);
-
- void SetChan(unsigned char chan);
- unsigned char ReadChan(void);
-
-
- void SetChan(unsigned char chan)
- {
- Start();
- SendByte(AddPllWr);
- SendByte(ucdataTab[chan][0]);
- SendByte(ucdataTab[chan][1]);
- SendByte(PLLCON1);
- SendByte(ucdataTab[chan][2]);
- Stop();
- }
-
-
- unsigned char ReadChan(void)
- {
- unsigned char i;
- Start();
- SendByte(AddPllRd);
- i = ReadByte();
- SendNoACK();
- Stop();
- return (i);
- }
-
-
- unsigned char SendByte(unsigned char a)
- {
- unsigned char i,j;
- for(i = 0;i < 8;i++)
- {
- if((a & 0x80) == 0)
- SDA = 0;
- else
- SDA = 1;
- _nop_();
- SCL = 1;
- _nop_();_nop_();
- SCL = 0;
- _nop_();
- a = a << 1;
- }
- _nop_();
- SDA = 1;
- _nop_();
- SCL = 1;
- j = 0;
- while (SDA == 0)
- if ((++j) == 0) {SCL = 0;return (1);}
- _nop_();
- SCL = 0;
- return (0);
- }
-
-
- unsigned char ReadByte(void)
- {
- unsigned char i;
- unsigned char bdata Sin;
- SDA = 1;
- for (i = 0;i < 8;i++)
- {
- Sin <<= 1;
- SCL = 0;
- _nop_();
- SCL = 1;
- if(SDA == 1)
- Sin|= 0x01;
- else
- Sin&= 0xfe;
- _nop_();
- }
- return(Sin);
- }
-
-
- void SendACK()
- {
- SCL = 0;
- _nop_();
- SDA = 0;
- _nop_();
- SCL = 1;
- _nop_();
- SCL = 0;
- }
-
-
- void SendNoACK()
- {
- SCL = 0;
- _nop_();
- SDA = 1;
- _nop_();
- SCL = 1;
- _nop_();
- SCL = 0;
- }
-
-
- void Start(void)
- {
- SDA = 1;
- _nop_();
- SCL = 1;
- _nop_();
- SDA = 0;
- _nop_();
- SCL = 0;
- }
-
-
- void Stop(void)
- {
- SDA = 0;
- _nop_();
- SCL = 1;
- _nop_();
- SDA = 1;
- _nop_();
- }
-
-
|
|
|
|
|
|