新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CEPARK AVR大學堂----Linglong AVR單片機之SPI通信

        CEPARK AVR大學堂----Linglong AVR單片機之SPI通信

        作者: 時間:2016-11-22 來源:網絡 收藏
        #include <avr/io.h>
        #include

        #define DD_SPI DDRB
        #define DD_MOSI PB5
        #define DD_SS PB4
        #define DD_SCK PB7

        unsigned char DispBuff[] = {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; //共陽數碼管字庫

        void SPIMasterInit(void ) //SPI初始代函數
        {
        DD_SPI = (1 << DD_MOSI)|(1 << DD_SS)|(1 << DD_SCK); // MOSI,SS,SCK 設置為輸出

        SPCR = (1 << SPE)|(1 << MSTR)|(1 << SPR0); //設置SPI始能,主機模式,時鐘速率為fck/16.

        }

        void SPIDataTrantsmit(unsigned char cData) //SPI傳輸函數
        {
        SPDR = cData;
        while(!(SPSR&(1 << SPIF))); //這里是判斷SPIF是否為1,為1表示8位數據傳完了。這里我們沒有用中斷的方式。
        }

        int main(void)
        {
        unsigned char count = 0; //設制循環變量
        PORTB = 0xff;
        // DDRB = 0xff;
        SPIMasterInit();

        while(1)
        {

        PORTB &= ~(1 << DD_SS);
        SPIDataTrantsmit(DispBuff[count]);
        PORTB |= (1 << DD_SS); //上升沿
        _delay_ms(500);


        count++;
        if(count > 9)
        {
        count = 0;
        }
        }

        }


        關鍵詞: AVR單片機SPI通

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 遵义县| 石屏县| 锡林浩特市| 墨江| 阳高县| 仁怀市| 黔西| 固阳县| 岗巴县| 高雄市| 利辛县| 和田市| 平山县| 扎鲁特旗| 阜阳市| 仙居县| 宁都县| 松阳县| 北辰区| 志丹县| 澄城县| 且末县| 普安县| 亳州市| 家居| 泾川县| 治县。| 东乌珠穆沁旗| 乌鲁木齐县| 韩城市| 辽中县| 玉林市| 略阳县| 三门县| 阳信县| 龙门县| 陕西省| 油尖旺区| 新民市| 辽宁省| 呼和浩特市|