亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 單片機FM收音機芯片(cs1100)程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*--------------------------------------------------------*/
/* 2007-8-9 9:58 */
/*--------------------------------------------------------*/
#include <avr/interrupt.h>
#include <string.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/boot.h>
#include <util/twi.h>
#include <avr/wdt.h>
#include <stdio.h>
#include <stdlib.h>
#include <util/delay.h>
/*--------------------------------------------------------*/
#define SIM_IIC_SCL_HIGH()                      (PORTC |= 0x20)     //PC5
#define SIM_IIC_SCL_LOW()                       (PORTC &= 0xDF)

#define SIM_IIC_SDA_HIGH()                      (PORTC |= 0x10)     //PC4
#define SIM_IIC_SDA_LOW()                       (PORTC &= 0xEF)

#define SIM_IIC_SDA_Output_status()             (DDRC |= 0x10)
#define SIM_IIC_SDA_Input_status()              (DDRC &= 0xEF)
#define ReadSimIICSDA()                         (PINC&0x10)
#define STREAM_COMP_BIT                         0x10

volatile unsigned int frequency_1 = 8750;
#define ISSUE_CHANNEL 													10400
#define ISSUE_CHANNEL_1 												8750

/*--------------------------------------------------------*/
#define NOP()                                   asm("nop")
#define FOSC                                    7372800
#define BAUD                                    115200
/*--------------------------------------------------------*/
#define MAX_COMM_REPEAT_TIMES                   200
/*--------------------------------------------------------*/

#define MAX_SERIAL_SEND_BUFF_LEN                16
volatile unsigned char serial_send_buff[MAX_SERIAL_SEND_BUFF_LEN];
volatile unsigned char g_ucSerialSendCounter;
volatile unsigned char g_ucSerialCurSendTotalCounter;
volatile unsigned char g_ucSerialReceBuf;
volatile unsigned char CS1100ControlData[32];
unsigned char volume_count = 0x08;
unsigned char CS1100_Power_down_up_count = 0;
unsigned char CS1100_PA_TUNER_MODE_count = 0;

unsigned int FREQUENCY = 8750;   //start frequency is 87.5MHz   end frequency is 108MHz

#define TEST_BIT(value, bitmask)            (((value) & (1<<bitmask)) == (1<<bitmask))
#define SET_BIT(value, bitmask)             (value |= (1<<bitmask))
#define CLEAR_BIT(value, bitmask)           (value &= ~(1<<bitmask))
#define BIT0                                0
#define BIT1                                1
#define BIT2                                2
#define BIT3                                3
#define BIT4                                4
#define BIT5                                5
#define BIT6                                6
#define BIT7                                7

volatile unsigned char g_ucByteFlag0;
#define b_serial_active                     BIT0
#define b_sim_iic_comm_error                BIT1
#define b_serial_frame_head_byte            BIT2
#define b_serial_subaddress_flag            BIT3
#define b_serial_length_flag                BIT4

void Write_AR0_and_PR0(void);
void Write_G0(void);
void Send_Const_String_to_Device(unsigned char length, unsigned char * p_string);
void ReadAAC(void);
void TransCh(void);
void GenerateCh(void);
void GenerateNewCiSki(void);
void Read_Ci(void);
void GenerateRandom(void);
void ProcessSerialSend(unsigned char frame_code);


void PutChar(unsigned char send_char)
{
    cli();
    cli();
    while(!(UCSR0A & (1<<UDRE0)));
    UDR0 = send_char;
    while(!(UCSR0A & (1<<UDRE0)));
    sei();
}

#define ENABLE_SERIAL_FUNCTION

#ifdef ENABLE_SERIAL_FUNCTION
void PutAscii(unsigned char hex_data)
{
    unsigned char temp;
    temp = hex_data>>4;
    if(temp<10) temp += 48;
    else temp += 55;
    PutChar(temp);
    
    temp = hex_data&0x0f;
    if(temp<10) temp += 48;
    else temp += 55;
    PutChar(temp);
}

unsigned char GetStringLength(const unsigned char *_str)
{
    unsigned char _cnt_=0;
    while((*_str++)!='\0') ++_cnt_;
    return (_cnt_);
}

void PutEnterChar(void)
{
    PutChar(0x0D);
    PutChar(0x0A);
}

void PutString(const unsigned char * string_pointer)
{
    unsigned char i,str_len;
    const unsigned char *pointer;
    str_len = GetStringLength(string_pointer);
    pointer = string_pointer;
    for(i=0; i<str_len; i++) PutChar(*pointer++);
		PutEnterChar();
}
#endif

void port_init(void)
{
    DDRD  = 0xfe;
    PORTD = 0xfe;
    DDRB  = 0xff;
    PORTB = 0xff;
    DDRC  = 0xff;
    PORTC = 0xff;
}

void uart_init(void)
{
	  UCSR0B = 0;
	  UCSR0A = 0x00;
	  UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
    UBRR0L = (FOSC/16/BAUD - 1)%256;
	  UBRR0H = (FOSC/16/BAUD - 1)/256;
	  UCSR0B = (1<<RXCIE0) | (1<<RXEN0) | (1<<TXEN0) | (1<<TXCIE0);
}

ISR(USART_RX_vect)
{
    g_ucSerialReceBuf = UDR0;
    if(!TEST_BIT(g_ucByteFlag0, b_serial_frame_head_byte))
			SET_BIT(g_ucByteFlag0, b_serial_frame_head_byte);
}

ISR(USART_TX_vect)
{
    if(g_ucSerialSendCounter++ < g_ucSerialCurSendTotalCounter)
    {
        UDR0 = serial_send_buff[g_ucSerialSendCounter];
    }
}

void delay_ms(unsigned char delay)
{
    while(delay>0) delay--;
}

void sim_iic_start(void)
{
    SIM_IIC_SDA_LOW();
    SIM_IIC_SCL_LOW();
    delay_ms(1);
    SIM_IIC_SDA_HIGH();
    delay_ms(2);
    SIM_IIC_SCL_HIGH();
    delay_ms(2);
    SIM_IIC_SDA_LOW();
    delay_ms(2);
    SIM_IIC_SCL_LOW();
}

void sim_iic_stop(void)
{
    SIM_IIC_SDA_LOW();
    SIM_IIC_SCL_HIGH();
    delay_ms(2);
    SIM_IIC_SDA_HIGH();
    delay_ms(2);
    SIM_IIC_SCL_LOW();
    delay_ms(2);
    SIM_IIC_SDA_LOW();
}

unsigned char sim_iic_write_byte_to_device(unsigned char send_data)
{
    unsigned char i;
    unsigned char return_value;

    for(i=0; i<8; i++)
    {
        if((send_data & 0x80) == 0x80) SIM_IIC_SDA_HIGH();
        else SIM_IIC_SDA_LOW();
        delay_ms(2);
        SIM_IIC_SCL_HIGH();
        delay_ms(4);
        SIM_IIC_SCL_LOW();
        send_data <<= 1;
    }

    SIM_IIC_SDA_Input_status();       //check ACK
    SIM_IIC_SDA_Input_status();
    delay_ms(1);
    SIM_IIC_SCL_HIGH();
    delay_ms(2);
    i = ReadSimIICSDA();
    i = ReadSimIICSDA();
    delay_ms(1);
    SIM_IIC_SCL_LOW();
    i = ReadSimIICSDA();

    if(i == STREAM_COMP_BIT)
    {
        if(!TEST_BIT(g_ucByteFlag0, b_sim_iic_comm_error))
        {
            SET_BIT(g_ucByteFlag0, b_sim_iic_comm_error);
        }
        return_value = 0;
    }
    else
    {
    		return_value = 1;
    }
    
    SIM_IIC_SDA_Output_status();
    SIM_IIC_SDA_Output_status();
    return return_value;
}

unsigned char sim_iic_read_byte_from_device(void)
{
    unsigned char i;
    unsigned char bit_data;
    unsigned char byte_data=0;

    SIM_IIC_SDA_Input_status();
    SIM_IIC_SDA_Input_status();
    for(i=0; i<8; i++)
    {
        byte_data <<= 1;
        SIM_IIC_SCL_HIGH();
        delay_ms(2);
        bit_data = ReadSimIICSDA();
        SIM_IIC_SCL_LOW();
        //if(bit_data == STREAM_COMP_BIT) byte_data += 1;
        if((bit_data&STREAM_COMP_BIT)==STREAM_COMP_BIT) byte_data += 1;
        else byte_data += 0;
    }
    SIM_IIC_SDA_Output_status();            // answer ack
    SIM_IIC_SDA_Output_status();
    SIM_IIC_SDA_LOW();
    delay_ms(2);
    SIM_IIC_SCL_HIGH();
    delay_ms(4);
    SIM_IIC_SCL_LOW();
    SIM_IIC_SDA_HIGH();
    return byte_data;
}
/***********************************************************************/
void CS1100_FMTune(unsigned int TunerFrequency)
{
	unsigned int ch = 0;

	// frequency transfer to channel number,  channel=(frequencyMhz-60)/0.05, e.g. 87.5Mhz->550
	ch = (TunerFrequency - 6000)/5; 

	// set channel number 
	CS1100ControlData[2] &= 0xfc;
	CS1100ControlData[2] |= (ch & 0x0300)>>8;
	CS1100ControlData[3] =	ch & 0xff;

	// tune function
	CS1100ControlData[0] &= 0xdf;// mute off
	CS1100ControlData[0] &= 0xfd;// tune=0
	
	sim_iic_start();
	sim_iic_write_byte_to_device(0x20);
	sim_iic_write_byte_to_device(CS1100ControlData[0]);
	sim_iic_write_byte_to_device(CS1100ControlData[1]);
	sim_iic_write_byte_to_device(CS1100ControlData[2]);
	sim_iic_write_byte_to_device(CS1100ControlData[3]);
	sim_iic_stop();

	CS1100ControlData[0] |= 0x02;//tune=1, begin tune operaton

	sim_iic_start();
	sim_iic_write_byte_to_device(0x20);
	sim_iic_write_byte_to_device(CS1100ControlData[0]);
	sim_iic_stop();
}


#define OUTPUT_CS1100_REGISTER

int CS1100_FMSeek_TuneMethod(unsigned int TunerFrequency, signed short *pryFD)
{
	  unsigned int ch = 0;
    unsigned char snr,rssi,st,loop;
	  unsigned char fd;
	  unsigned char seekover, stcflag;
    unsigned int Temp[27] = { 0x00 };

    
	  // frequency transfer to channel number,  channel=(frequencyMHz-60)/0.05, e.g. 87.5Mhz->550
	  ch = (TunerFrequency - 6000)/5;
	  CS1100ControlData[2] &= 0xfc;
	  CS1100ControlData[2] |= (ch & 0x0300)>>8;
	  CS1100ControlData[3] =	ch & 0xff;

    sim_iic_start();
		sim_iic_write_byte_to_device(0x20);
		sim_iic_write_byte_to_device(CS1100ControlData[0]);
		sim_iic_write_byte_to_device(CS1100ControlData[1]);
		sim_iic_write_byte_to_device(CS1100ControlData[2]);
		sim_iic_write_byte_to_device(CS1100ControlData[3]);
		sim_iic_stop();

	  // seek operation
	  CS1100ControlData[0] |= 0x20; //mute on
	  CS1100ControlData[0] &= 0xfd; //tune=0

	  sim_iic_start();
		sim_iic_write_byte_to_device(0x20);
		sim_iic_write_byte_to_device(CS1100ControlData[0]);
		sim_iic_stop();

	  CS1100ControlData[0] |= 0x02; // TUNE=1, begin tune operation

	  sim_iic_start();
		sim_iic_write_byte_to_device(0x20);
		sim_iic_write_byte_to_device(CS1100ControlData[0]);
		sim_iic_stop();

	  delay_ms(50);

	  // read STC indicator and judgement of seek threshold
	  seekover=0;
	  stcflag=0;

	  loop=0;
    do
	  {
	      sim_iic_start();
				sim_iic_write_byte_to_device(0x21);
				
				#ifdef OUTPUT_CS1100_REGISTER
				PutChar(' ');
				Temp[0] = sim_iic_read_byte_from_device();
				PutAscii(Temp[0]);
				PutChar(' ');
				Temp[1] = sim_iic_read_byte_from_device();
				PutAscii(Temp[1]);
				PutChar(' ');
				Temp[2] = sim_iic_read_byte_from_device();
				PutAscii(Temp[2]);
				PutChar(' ');
				Temp[3] = sim_iic_read_byte_from_device();
				PutAscii(Temp[3]);
				PutChar(' ');
				Temp[4] = sim_iic_read_byte_from_device();
				PutAscii(Temp[4]);
				PutChar(' ');
				Temp[5] = sim_iic_read_byte_from_device();
				PutAscii(Temp[5]);
				sim_iic_stop();
				PutChar(0x0d);
				PutChar(0x0a);
				#else
				Temp[0] = sim_iic_read_byte_from_device();
				Temp[1] = sim_iic_read_byte_from_device();
				Temp[2] = sim_iic_read_byte_from_device();
				Temp[3] = sim_iic_read_byte_from_device();
				Temp[4] = sim_iic_read_byte_from_device();
				Temp[5] = sim_iic_read_byte_from_device();
				sim_iic_stop();
				#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧亚洲嫩模精品一区三区| 激情欧美一区二区| 久久精品一区二区| 欧美日韩精品一区二区三区 | 国产精品自在欧美一区| 亚洲蜜桃精久久久久久久| wwwwxxxxx欧美| 日韩精品一区二区三区蜜臀| 欧美日韩国产成人在线91| 在线观看网站黄不卡| 久99久精品视频免费观看| 婷婷综合久久一区二区三区| 午夜a成v人精品| 三级欧美在线一区| 日本不卡高清视频| 美女在线一区二区| 精品一区二区三区视频| 国产在线精品一区在线观看麻豆| 美脚の诱脚舐め脚责91| 另类调教123区| 国产麻豆精品视频| 国产成人av一区二区三区在线 | 在线亚洲一区二区| 在线观看一区二区精品视频| 在线视频一区二区三| 欧美性生活久久| 91精品在线免费观看| 欧美一区二区三区免费观看视频 | 日韩经典一区二区| 玖玖九九国产精品| 国产在线乱码一区二区三区| 国产成人免费视频精品含羞草妖精| 丁香一区二区三区| 在线影院国内精品| 欧美一区二区三区色| 国产亚洲精久久久久久| 亚洲精选免费视频| 男女男精品网站| 成人av手机在线观看| 欧美性大战久久久久久久| 日韩一本二本av| 国产精品久久久久国产精品日日| 亚洲一区二区三区视频在线播放| 精品中文字幕一区二区小辣椒| 国产激情偷乱视频一区二区三区| 一本久道久久综合中文字幕| 欧美大片顶级少妇| 亚洲婷婷在线视频| 免费看日韩a级影片| 99国产精品国产精品久久| 日韩一区二区三区四区五区六区| 亚洲国产精品成人久久综合一区| 亚洲综合视频在线| 国产精品伊人色| 欧美性欧美巨大黑白大战| 久久亚洲精华国产精华液| 一区二区三区在线高清| 免费高清在线一区| 99在线精品一区二区三区| 欧美一卡二卡三卡四卡| 亚洲美女区一区| 国产精品一二三在| 欧美一级午夜免费电影| 亚洲人xxxx| 国产一区二区三区免费看| 欧美三级欧美一级| 欧美国产一区二区在线观看 | 欧美日韩亚州综合| 中文字幕欧美三区| 日本不卡的三区四区五区| 色综合天天综合网天天狠天天| 亚洲精品一区二区三区在线观看| 亚洲va在线va天堂| 色综合久久久久久久久久久| 国产性做久久久久久| 狂野欧美性猛交blacked| 欧美日韩一区二区在线观看| 中文字幕综合网| 成人精品免费看| 久久免费美女视频| 久久99精品网久久| 欧美丰满少妇xxxxx高潮对白| 亚洲激情自拍视频| 97精品国产露脸对白| 国产精品卡一卡二卡三| 国产91综合网| 欧美激情一区二区三区全黄 | 国产日韩精品一区| 国内精品免费在线观看| 91精品午夜视频| 日韩国产一区二| 欧美日韩亚洲另类| 亚洲图片有声小说| 欧美在线小视频| 亚洲午夜精品在线| 欧美性生活大片视频| 亚洲一区中文在线| 欧美日韩一级视频| 日韩成人免费在线| 3d动漫精品啪啪一区二区竹菊| 天堂影院一区二区| 日韩亚洲电影在线| 韩国中文字幕2020精品| 国产欧美一区二区三区在线老狼| 国模无码大尺度一区二区三区| 欧美xxxxxxxxx| 国产乱码精品1区2区3区| 欧美经典一区二区三区| 国产福利精品一区| 国产精品成人网| 欧美日韩免费观看一区三区| 日韩电影在线免费看| 日韩一级完整毛片| 国产精品资源站在线| 欧美韩国日本一区| 91啪亚洲精品| 琪琪久久久久日韩精品| 欧美大度的电影原声| 国产 日韩 欧美大片| 亚洲欧美国产三级| 91精品在线一区二区| 国产精品一区二区三区乱码| 亚洲精品中文字幕在线观看| 欧美日韩国产精品成人| 国产麻豆视频精品| 亚洲视频图片小说| 51午夜精品国产| 成人午夜视频网站| 亚洲成人av一区二区三区| 亚洲精品日日夜夜| 9191久久久久久久久久久| 国产高清不卡二三区| 亚洲国产日日夜夜| 精品国产乱码久久久久久闺蜜 | 美女www一区二区| 国产午夜亚洲精品午夜鲁丝片| 91浏览器在线视频| 蜜臀91精品一区二区三区| 国产精品污www在线观看| 欧美日韩情趣电影| 成人一区二区三区| 日本中文字幕一区二区视频| 国产精品久久久久影院色老大| 欧美日韩免费不卡视频一区二区三区| 极品少妇xxxx精品少妇| 亚洲麻豆国产自偷在线| 久久久电影一区二区三区| 在线日韩av片| www.亚洲精品| 国产一区二区女| 丝袜美腿亚洲一区| 国产精品久久福利| 欧美videossexotv100| 91福利区一区二区三区| 成人黄色av电影| 在线观看91精品国产入口| 专区另类欧美日韩| 日韩精品一区二区三区视频播放 | 日韩欧美专区在线| 成人av动漫在线| 国产呦萝稀缺另类资源| 肉肉av福利一精品导航| 亚洲精品中文在线影院| 国产色综合一区| 精品国产电影一区二区| 欧美精品视频www在线观看| 色呦呦国产精品| 99久久久精品免费观看国产蜜| 狠狠久久亚洲欧美| 蜜臀av在线播放一区二区三区| 午夜视频久久久久久| 亚洲精品亚洲人成人网在线播放| 欧美经典一区二区| 欧美不卡一区二区三区四区| 51精品久久久久久久蜜臀| 欧洲精品在线观看| 色8久久人人97超碰香蕉987| 色综合一个色综合| 色婷婷av一区二区三区之一色屋| 91日韩精品一区| 在线观看成人免费视频| 欧美在线播放高清精品| 欧美人与z0zoxxxx视频| 在线观看91av| 欧美一区二区人人喊爽| 日韩精品一区二区在线| 26uuu国产一区二区三区 | 91精品国产全国免费观看| 欧美日韩精品一区二区在线播放| 欧美私人免费视频| 欧美精品18+| 日韩一区二区免费电影| 精品日韩99亚洲| 国产欧美一区二区精品仙草咪| 国产免费成人在线视频| 亚洲欧洲精品成人久久奇米网| 亚洲欧美偷拍另类a∨色屁股| 亚洲激情自拍视频| 日韩av电影免费观看高清完整版| 美国毛片一区二区|