<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          ATmega8---SPI總線控制

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
          開(kāi)發(fā)中對(duì)ATmega8外設(shè)SPI總線使用:
          在發(fā)送數(shù)據(jù)之前都處于從模式,處于接收狀態(tài)。在發(fā)送的時(shí)候,需要進(jìn)入主模式,完成發(fā)送之后再進(jìn)入從模式。
          以下為操作函數(shù):

          interrupt [SPI_STC] void spi_interrupt(void)
          {
          //uchar tmp;
          uchar i,b;
          //tmp=SPSR;
          b=SPDR;
          r_buf[0]=r_buf[1];
          r_buf[1]=r_buf[2];
          r_buf[2]=r_buf[3];
          r_buf[3]=r_buf[4];
          r_buf[4]=r_buf[5];
          r_buf[5]=b;
          if((r_buf[0]==0xff)&&(r_buf[5]==0xaa))
          {
          r_full=1;
          r_data[0]=r_buf[0];
          r_data[1]=r_buf[1];
          r_data[2]=r_buf[2];
          r_data[3]=r_buf[3];
          r_data[4]=r_buf[4];
          r_data[5]=r_buf[5];
          }
          if(r_full)
          {
          r_full=0;
          if(r_data[1]!=99)return;
          switch(r_data[2])
          {
          case 3:
          case 0x31:
          if((r_data[4]>16)||(r_data[3]>16))return;
          if(r_data[3]==0)return;
          else if(r_data[4]==0)
          {
          for(i=0;i<16;i++)
          {
          tmp_ddc[i]=r_data[3];
          }
          }
          else
          {
          tmp_ddc[r_data[4]-1]=r_data[3];
          }
          break;
          default:
          break;
          }
          }
          }
          //-------------------------------------------------
          void spi_init_s() //在沒(méi)有通訊之前,處于從模式
          {
          DDRB.4=1;
          DDRB.2=0;
          PORTB.2=1;
          DDRB.3=0;
          DDRB.5=0;
          SPCR=0XC0;
          }
          void spi_init_m()
          {
          DDRB.4=0;
          DDRB.2=1;
          DDRB.3=1;
          DDRB.5=1;
          SPCR=0x52;
          SPSR=0X01;
          }
          //-------------------------------------
          void send_spi()
          {
          uchar i;
          while(PINB.2==0){;}
          spi_init_m();
          #asm("cli")
          PORTB.2=0;
          delay_ms(1);
          for(i=0;i<2;i++)
          {
          SPDR=video_new[i];
          #asm("wdr")
          while((SPSR&0X80)!=0X80);
          }
          delay_ms(10);
          PORTB.2=1;
          #asm("sei")
          spi_init_s();
          }



          關(guān)鍵詞: ATmega8SPI總線控

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();