⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmradio.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
字号:
/*************************************************************************** *             __________               __   ___. *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  / *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  < *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \ *                     \/            \/     \/    \/            \/ * $Id: fmradio.c,v 1.4 2003/11/07 12:15:22 linusnielsen Exp $ * * Copyright (C) 2002 by Linus Nielsen Feltzing * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/#include "lcd.h"#include "sh7034.h"#include "kernel.h"#include "thread.h"#include "debug.h"#include "system.h"#ifdef HAVE_FMRADIO/* Signals:   DI (Data In)     - PB0 (doubles as data pin for the LCD)   CL (Clock)       - PB1 (doubles as clock for the LCD)   CE (Chip Enable) - PB3 (also chip select for the LCD, but active low)   DO (Data Out)    - PB4*//* cute little functions */#define CE_LO  and_b(~0x08, PBDRL_ADDR)#define CE_HI  or_b(0x08, PBDRL_ADDR)#define CL_LO  and_b(~0x02, PBDRL_ADDR)#define CL_HI  or_b(0x02, PBDRL_ADDR)#define DO     (PBDR & 0x10)#define DI_LO  and_b(~0x01, PBDRL_ADDR)#define DI_HI  or_b(0x01, PBDRL_ADDR)#define START or_b((0x08 | 0x02), PBDRL_ADDR)/* delay loop */#define DELAY   do { int _x; for(_x=0;_x<10;_x++);} while (0)static int fmstatus = 0;int fmradio_read(int addr){    int i;    int data = 0;    START;        /* First address bit */    CL_LO;    if(addr & 2)        DI_HI;    else        DI_LO;    DELAY;    CL_HI;    DELAY;    /* Second address bit */    CL_LO;    if(addr & 1)        DI_HI;    else        DI_LO;    DELAY;    CL_HI;    DELAY;    for(i = 0; i < 21;i++)    {        CL_LO;        DELAY;        data <<= 1;        data |= (DO)?1:0;        CL_HI;        DELAY;    }    CE_LO;        return data;}void fmradio_set(int addr, int data){    int i;        /* Include the address in the data */    data |= addr << 21;    START;    for(i = 0; i < 23;i++)    {        CL_LO;        DELAY;        if(data & (1 << 22))            DI_HI;        else            DI_LO;        data <<= 1;        CL_HI;        DELAY;    }    CE_LO;}void fmradio_set_status(int status){    fmstatus = status;}int fmradio_get_status(void){    return fmstatus;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -