技术源于采集,成功源于倒塌!

  • 《HotPower的水潭》21IC主站
  • 《HotPower的水潭》EDN副站
  • 《HotPower的水潭》dianyuan副站
  • 《HotPower的水潭》MCUBLOG副站
  • 设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

    天气预报
    菜农日历

    绿色蔬菜

    载入中...

    农家信息

    载入中...

    水潭流量
    (2006-10-21开始)

     
     

    芯片专题

    器件专题

    软件专题

    硬件专题

    综合专题

    项目专题

    原创专题

    LCD LED
    按键 触摸键
    E2PROM
    电池 电机
    电阻 电容 电感

    滤波算法
    串行通讯

    I2C
    红外遥控
    充电技术

    匠人手记
    匠人夜话
    网络心路

    DSP281X硬件SPI读写一体化C++函数(驱动74hc595)
    雁塔菜农 发表于 2008-4-17 2:46:00
    hotpower 发表于 2008-4-17 02:01 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

    楼主: DSP281X硬件SPI读写一体化C++函数(驱动74hc595)

    //菜农HotPower@126.com 2008.4.17 1:58
    void SystemObj::InitSpi(void)
    {

        EALLOW;
        GpioMuxRegs.GPFMUX.all |= 0x000F;    // Select GPIOs to be SPI pins     
                                         // Port F MUX - x000 0000 0000 1111
          EDIS;

    // Initialize SPI FIFO registers
        SpiaRegs.SPIFFTX.all=0xE040;
        SpiaRegs.SPIFFRX.all=0x204f;
        SpiaRegs.SPIFFCT.all=0x0;

          SpiaRegs.SPICCR.all =0x0008;                 // Reset on, rising edge, 8-bit char bits  
          SpiaRegs.SPICTL.all =0x0006;                 // Enable master mode, normal phase,
                                                     // enable talk, and SPI int disabled.
          SpiaRegs.SPIBRR =0x007F;                                    
        SpiaRegs.SPICCR.all =0x009F;                 // Relinquish SPI from Reset   
        SpiaRegs.SPIPRI.bit.FREE = 1;                // Set so breakpoints don't disturb xmission
        
        //(CLKPOLARITY,CLK_PHASE )01 10支持74HC595,00或11不支持  测试通过
        SpiaRegs.SPICCR.bit.CLKPOLARITY = 1;
        SpiaRegs.SPICTL.bit.CLK_PHASE = 0;
        
          System.SpiReadWrite(0xff);//LED数码管灭
        //发送595锁存脉冲信号RCLK
          SpiRclkRegs = 0;
          SpiRclkRegs = 1;
    }

    //硬件SPI读写一体化函数
    unsigned char SystemObj::SpiReadWrite(unsigned char cData)
    {
          SpiaRegs.SPITXBUF = cData;
        // Wait until data is received
          while(SpiaRegs.SPIFFRX.bit.RXFFST !=1)
          {
    //        KickDog();//喂狗测试
          }             
        // Check against sent data
          return SpiaRegs.SPIRXBUF;                
    }



    //数码管
    #define LedSegA  0x01
    #define LedSegB  0x02
    #define LedSegC  0x04
    #define LedSegD  0x08
    #define LedSegE  0x10
    #define LedSegF  0x20
    #define LedSegG  0x40
    #define LedSegH  0x80
    /*
    #define LedSegA  0x80
    #define LedSegB  0x40
    #define LedSegC  0x20
    #define LedSegD  0x10
    #define LedSegE  0x08
    #define LedSegF  0x04
    #define LedSegG  0x02
    #define LedSegH  0x01
    */

    #define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF          )
    #define LedChar1 (          LedSegB + LedSegC                                        )
    #define LedChar2 (LedSegA + LedSegB           + LedSegD + LedSegE           + LedSegG)
    #define LedChar3 (LedSegA + LedSegB + LedSegC + LedSegD                     + LedSegG)
    #define LedChar4 (          LedSegB + LedSegC                     + LedSegF + LedSegG)
    #define LedChar5 (LedSegA           + LedSegC + LedSegD           + LedSegF + LedSegG)
    #define LedChar6 (LedSegA           + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedChar7 (LedSegA + LedSegB + LedSegC                                        )
    #define LedChar8 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedChar9 (LedSegA + LedSegB + LedSegC + LedSegD           + LedSegF + LedSegG)
    #define LedCharA (LedSegA + LedSegB + LedSegC           + LedSegE + LedSegF + LedSegG)
    #define LedCharB (                    LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedCharC (LedSegA                     + LedSegD + LedSegE + LedSegF          )
    #define LedCharD (          LedSegB + LedSegC + LedSegD + LedSegE           + LedSegG)
    #define LedCharE (LedSegA                     + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedCharF (LedSegA                               + LedSegE + LedSegF + LedSegG)



    interrupt void ISRTimer2(void)
    {
    //以下定义为共阳数码管
    static const unsigned char LedTab[] =
    {//显示字符表存放在ROM中
      LedChar0, LedChar1, LedChar2, LedChar3,
      LedChar4, LedChar5, LedChar6, LedChar7,
      LedChar8, LedChar9, LedCharA, LedCharB,
      LedCharC, LedCharD, LedCharE, LedCharF
    };
        System.SpiReadWrite(~LedTab[Timer.Count2 & 0x0f]);//硬件SPI读写一体化函数
        Timer.Count2++;
    //发送595锁存脉冲信号RCLK
        SpiRclkRegs = 0;
        SpiRclkRegs = 1;
    }

    //数码管
    #define LedSegA  0x01
    #define LedSegB  0x02
    #define LedSegC  0x04
    #define LedSegD  0x08
    #define LedSegE  0x10
    #define LedSegF  0x20
    #define LedSegG  0x40
    #define LedSegH  0x80
    /*
    #define LedSegA  0x80
    #define LedSegB  0x40
    #define LedSegC  0x20
    #define LedSegD  0x10
    #define LedSegE  0x08
    #define LedSegF  0x04
    #define LedSegG  0x02
    #define LedSegH  0x01
    */

    #define LedChar0 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF          )
    #define LedChar1 (          LedSegB + LedSegC                                        )
    #define LedChar2 (LedSegA + LedSegB           + LedSegD + LedSegE           + LedSegG)
    #define LedChar3 (LedSegA + LedSegB + LedSegC + LedSegD                     + LedSegG)
    #define LedChar4 (          LedSegB + LedSegC                     + LedSegF + LedSegG)
    #define LedChar5 (LedSegA           + LedSegC + LedSegD           + LedSegF + LedSegG)
    #define LedChar6 (LedSegA           + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedChar7 (LedSegA + LedSegB + LedSegC                                        )
    #define LedChar8 (LedSegA + LedSegB + LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedChar9 (LedSegA + LedSegB + LedSegC + LedSegD           + LedSegF + LedSegG)
    #define LedCharA (LedSegA + LedSegB + LedSegC           + LedSegE + LedSegF + LedSegG)
    #define LedCharB (                    LedSegC + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedCharC (LedSegA                     + LedSegD + LedSegE + LedSegF          )
    #define LedCharD (          LedSegB + LedSegC + LedSegD + LedSegE           + LedSegG)
    #define LedCharE (LedSegA                     + LedSegD + LedSegE + LedSegF + LedSegG)
    #define LedCharF (LedSegA                               + LedSegE + LedSegF + LedSegG)


    阅读全文 | 回复(0) | 引用通告 | 编辑
     


    发表评论:
    载入中...

    菜贩子摊位 [投放]

     



    站内搜索

    站外搜索


    百度  google
    mp3  歌词 
    图片  FLASH 
    知道  文档
    新闻  词典 
    地图  mp3 
    软件  天网 
    雅虎  爱问 
    搜狗  讯雷 
    网讯  华军 
    天空 

    21IC器件搜索
    匠人代理商品

    学习板、开发板、编程器、下载器、仿真器(查看详情……)

    匠人广告位 [投放]

    新鲜蔬菜

    匠人写书近况

    匠人团队精华

    匠人往日酷贴

    社区热点 更多>>

    载入中...

    2007年匠人的新目标是写书。书名:《匠人手记——一个单片机工作者的实践与思考》。
    感谢各位网友的关注、支持和鼓励!(点击查看写书详情和近况)

     

    匠人写书调查

    匠人栏目调查

    匠人原创

    农友评论

    农友留言

    载入中...

    载入中...



    大千八卦

    菜地友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [柔月阁]

     

     

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    《HotPower的水潭》