📄 halas6001a.lst
字号:
C51 COMPILER V8.01 HALAS6001A 04/17/2008 09:55:02 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE HALAS6001A
OBJECT MODULE PLACED IN .\Debug\halas6001a.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE fmtx\halas6001a.c LARGE OPTIMIZE(9,SIZE) REGFILE(.\Debug\VA4010_SDK_V2.ORC)
- BROWSE NOINTPROMOTE INCDIR(.\common;.\e2prom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\s
-d;.\usbhost;.\include;.\lib) DEBUG OBJECTEXTEND PRINT(.\Debug\halas6001a.lst) OBJECT(.\Debug\halas6001a.obj)
line level source
1 /****************************************************************
2 * Viaon Technology (Suzhou) Co.,Ltd
3 *
4 * Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
5 * All rights reserved.
6 *
7 *
8 * Filename: halas6001a.c
9 *
10 * Programmer: Greg
11 *
12 * Created: 1/2/2008
13 *
14 * Description: public functions
15 *
16 *
17 * Change History (most recent first): 2008.1.2
18 ****************************************************************/
19 #include "utiltypedef.h"
20 #include "common.h"
21 #include "halas6001a.h"
22
23
24 #if (FM_TRANS_MODULE == FM_TRANS_AS6001A)
#if 0
void halSPIInit(void)
{
//set gpio direction, value
SPI_CLK = 0;
SPI_EN1 = 0;
SPI_CLK_OUT();
SPI_EN1_OUT();
return;
}
#endif
void _halSPISend0(void)
{
//SPI_EN should be setup before this function
SPI_DAT_OUT();
SPI_CLK = 0; //Here is the falling edge
SPI_DAT = 0;
DelayUs(SPI_CLK_TIME);
SPI_CLK = 1; // the raising edge
DelayUs(SPI_CLK_TIME);
return;
}
void _halSPISend1(void)
C51 COMPILER V8.01 HALAS6001A 04/17/2008 09:55:02 PAGE 2
{
//SPI_EN should be setup before this function
SPI_DAT_OUT();
SPI_CLK = 0; //Here is the falling edge
SPI_DAT = 1;
DelayUs(SPI_CLK_TIME);
SPI_CLK = 1; // the raising edge
DelayUs(SPI_CLK_TIME);
return;
}
void _halSPIWrite(WORD wVal) //LSB -> MSB
{
BYTE i;
SPI_EN1 = 1;
for(i=0;i<16;i++){
if(wVal&0x0001){
_halSPISend1();
}else{
_halSPISend0();
}
wVal >>= 1; //LSB will be put on the SPI bus first.
}
SPI_EN1 = 0;
SPI_CLK = 0;
return;
}
/*
Frequency: 87MHz -> 108MHz, step 0.1MHz
Steps: 0 -> 210
16bit SPI DATA:
T1(bit15/MSB), T0, PD1, PD0, MONO(bit11), D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0(bit0/LSB)
T0, T1: for test should be set 0
PD0, PD1: for charge pump output, (0, 0) for usual operation
MONO: 1(Stereo operation), 0(mono L+R)
D0~D10: Program Counter/(Steps + FM_FREQ_BASE)
Order when put on SPI DATA PIN:
MSB, ..., LSB -> DATA_PIN
*/
#define AS6001A_MONO 1 // 1: Stereo, 0:Mono
#define AS6001A_PD 0 // 00b: Usual, 01b: force low, 10b: force high, 11b: high impedence
static BYTE data s_FMIdx;
void halFMSet(BYTE byChIdx) //byChIdx: 0-> 210
{
WORD wProgCnt = 0;
s_FMIdx = byChIdx;
wProgCnt = FM_FREQ_BASE + byChIdx;
//Set MONO, PD0, PD1, T0, T1
wProgCnt |= (AS6001A_MONO<<11); //Set MON: Stereo operation
wProgCnt |= (AS6001A_PD<<12); //Set MON: Stereo operation
C51 COMPILER V8.01 HALAS6001A 04/17/2008 09:55:02 PAGE 3
#ifndef FM_NULL_TEST
_halSPIWrite(wProgCnt);
#endif
return;
}
void halFMUp(void) //byChIdx: 0-> 203
{
s_FMIdx++;
if(s_FMIdx >=FM_CHIDX_MAX){//Over Max
s_FMIdx = 0;
}
halFMSet(s_FMIdx);
return;
}
void halFMDown(void) //byChIdx: 0-> 203
{
if(s_FMIdx == 0){//Minmal
s_FMIdx = FM_CHIDX_MAX;//turn around
}else
s_FMIdx--;
halFMSet(s_FMIdx);
return;
}
WORD halFMGetFreq(void)
{
// FMDigital = FM_FREQ_BASE+FMLevel;
WORD wTmp = FM_FREQ_BASE + (WORD)s_FMIdx;
//UartOutText("-I-: halFMGetFreq 0x");UartOutValue(wTmp, 4);
return wTmp;
}
BYTE halFMGetIdx(void)
{
// FMDigital = FM_FREQ_BASE+FMLevel;
//WORD wTmp = FM_FREQ_BASE + s_FMIdx;
return s_FMIdx;
}
BYTE halFMFreq2Idx(WORD wFreq)
{
WORD wTmp = wFreq;
//Checking parameter validation
if((wFreq>=FM_FREQ_BASE) && (wFreq<=FM_FREQ_MAX)){
wTmp = wTmp - FM_FREQ_BASE;
}else{
wTmp = FM_CHIDX_INVALID;
}
return (BYTE)wTmp;
}
///////////////////////////////////
#if 0
C51 COMPILER V8.01 HALAS6001A 04/17/2008 09:55:02 PAGE 4
void halSPITest(void)
{
static BYTE byChIdx = 0;
halSPIInit();
halFMSet(byChIdx);
UartOutText("-I-: halFMSet: ");UartOutValue(byChIdx, 2);
byChIdx ++;
if(byChIdx > FM_CHIDX_MAX)
byChIdx = 0;
return;
}
#endif
#endif
196
197
198
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = ---- ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -