美文网首页
EX20AVR ATmega8A SPI PORTC2PORTC

EX20AVR ATmega8A SPI PORTC2PORTC

作者: 山前雨1 | 来源:发表于2018-06-14 10:34 被阅读17次

    //EX19AVR SPI PORTC-PORTC/*//EX18AVR ATmega8A SPI master program//author :QI小米粥//data :2018.3.30#include#includevoid init(void) {SFIOR &=~BIT(2);//配置的上拉DDRC=0X00;PORTC=0XFF;//上拉电阻配置DDRB =BIT(2)|BIT(3)|BIT(5);//SS,MOSI,SCK设置位输出SPCR =BIT(6)|BIT(4)|BIT(0); }void master_t(char a) {PORTB &=~BIT(2);//拉低ssSPDR =a;//数据写入自动启动时钟SCKwhile(!(SPSR&BIT(7))) //完成中断产生后,可以继续往下走 {}SPSR &=~BIT(7);//清除中断PORTB |=BIT(2);//抬高ss清除spi}#pragma interrupt_handler inter_spi:11void inter_spi(void) {}void main(void) {init();while(1) {master_t(PINC);}}//默认输入引脚也要上拉,并没有这么做//按着datasheet中的简单的操作来的//SS开始转换要拉低,结束转换后要抬高*///EX19AVR ATmega8A SPI slave program//author:QI小米粥//data:2018.3.30#include#includeint a;

    void init(void)

    {

    DDRC =0xff;//slave的输出

    DDRB |=BIT(0);

    SFIOR &=~BIT(2);

    DDRB &=~BIT(2);//SS输入

    PORTB |=BIT(2);

    DDRB |=BIT(4);//MISO设置为输出

    SPCR |=BIT(6);//SPI使能

    }

    char slave_r(void)

    {

    while(!(SPSR&BIT(7)))//传输完成后产生,中断后继续往下走,

    {}

    /*清除中断标志位*/

    SPSR &=~BIT(7);//清除中断标志位

    return SPDR;

    }

    void main(void)

    {

    init();

    while(1)

    {

    a=slave_r();

    PORTC=a;

    }

    }

    相关文章

      网友评论

          本文标题:EX20AVR ATmega8A SPI PORTC2PORTC

          本文链接:https://www.haomeiwen.com/subject/pybeeftx.html