亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? m16-01.i

?? AVR單片機之間多機通信(通信方式采用的中斷進行)
?? I
字號:
/*  
  www.avrdiy.com AVR單片機DIY網 潘小藝 CVAVR1.25.9 
  通訊規則: 
  01:時鐘7.3728 MHz/波特率9600/9個數據位/奇校驗/1個停止位/硬件多機通訊功能/ 
  02:通訊連接采用硬件MAX485,雙向單工
  03:MAX485的RE/DE并聯接到單片機的PD2腳(高電平發送/低電平接收)
  04:所有MAX485的A腳并聯/B腳并聯/D腳接TXD/R腳接RXD
  05:每個上行/下行的數據包的字節個數都是一樣的(通訊數據量) 
  06:數據包格式: 地址_數據1_數據2_數據3_數據n_CRC8校驗碼
  07:主機使用查詢發送/接收中斷方式
  08:從機使用發送中斷/接收中斷方式
  09:總是由主機向從機下發一個數據包,從機收到數據包并校驗正確后向主機回復一個數據包 
  10:不管是主機還是從機,如果收到的數據包有任何錯誤,都將丟棄該數據包,等效于沒有接收 
  11:通訊采用主機輪詢方式,從機之間不能相互通訊,必須通過主機才能交換數據 
  12:無效地址是0,主機地址是1,從機地址是11.12.13...廣播地址是255 
*/ 
// CodeVisionAVR C Compiler
// (C) 1998-2001 Pavel Haiduc, HP InfoTech S.R.L.

// I/O registers definitions for the ATmega16


#pragma used+
#pragma used+
sfrb TWBR=0;
sfrb TWSR=1;
sfrb TWAR=2;
sfrb TWDR=3;
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access
sfrb ADCSRA=6;
sfrb ADMUX=7;
sfrb ACSR=8;
sfrb UBRRL=9;
sfrb UCSRB=0xa;
sfrb UCSRA=0xb;
sfrb UDR=0xc;
sfrb SPCR=0xd;
sfrb SPSR=0xe;
sfrb SPDR=0xf;
sfrb PIND=0x10;
sfrb DDRD=0x11;
sfrb PORTD=0x12;
sfrb PINC=0x13;
sfrb DDRC=0x14;
sfrb PORTC=0x15;
sfrb PINB=0x16;
sfrb DDRB=0x17;
sfrb PORTB=0x18;
sfrb PINA=0x19;
sfrb DDRA=0x1a;
sfrb PORTA=0x1b;
sfrb EECR=0x1c;
sfrb EEDR=0x1d;
sfrb EEARL=0x1e;
sfrb EEARH=0x1f;
sfrw EEAR=0x1e;   // 16 bit access
sfrb UBRRH=0x20;
sfrb UCSRC=0X20;
sfrb WDTCR=0x21;
sfrb ASSR=0x22;
sfrb OCR2=0x23;
sfrb TCNT2=0x24;
sfrb TCCR2=0x25;
sfrb ICR1L=0x26;
sfrb ICR1H=0x27;
sfrb OCR1BL=0x28;
sfrb OCR1BH=0x29;
sfrw OCR1B=0x28;  // 16 bit access
sfrb OCR1AL=0x2a;
sfrb OCR1AH=0x2b;
sfrw OCR1A=0x2a;  // 16 bit access
sfrb TCNT1L=0x2c;
sfrb TCNT1H=0x2d;
sfrw TCNT1=0x2c;  // 16 bit access
sfrb TCCR1B=0x2e;
sfrb TCCR1A=0x2f;
sfrb SFIOR=0x30;
sfrb OSCCAL=0x31;
sfrb OCDR=0x31;
sfrb TCNT0=0x32;
sfrb TCCR0=0x33;
sfrb MCUCSR=0x34;
sfrb MCUCR=0x35;
sfrb TWCR=0x36;
sfrb SPMCR=0x37;
sfrb TIFR=0x38;
sfrb TIMSK=0x39;
sfrb GIFR=0x3a;
sfrb GICR=0x3b;
sfrb OCR0=0X3c;
sfrb SPL=0x3d;
sfrb SPH=0x3e;
sfrb SREG=0x3f;
#pragma used-

// Interrupt vectors definitions


// Needed by the power management functions (sleep.h)
#asm
	#ifndef __SLEEP_DEFINED__
	#define __SLEEP_DEFINED__
	.EQU __se_bit=0x40
	.EQU __sm_mask=0xB0
	.EQU __sm_powerdown=0x20
	.EQU __sm_powersave=0x30
	.EQU __sm_standby=0xA0
	.EQU __sm_ext_standby=0xB0
	.EQU __sm_adc_noise_red=0x10
	.SET power_ctrl_reg=mcucr
	#endif
#endasm


// CodeVisionAVR C Compiler
// (C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L.


#pragma used+
#pragma used+

void delay_us(unsigned int n);
void delay_ms(unsigned int n);

#pragma used-

//波特率9600/9個數據位/1個停止位/奇校驗/收發開啟/接收中斷/發送結束中斷/地址過濾 
void usart_init(void) 
void usart_init(void) 
{   
  UCSRA=0x01; 
  UCSRB=0xDC; 
  UCSRC=0xB6; 
  UBRRH=0x00; 
  UBRRL=47;  
}
unsigned char crc8(unsigned char *ptr, unsigned char len)   
unsigned char crc8(unsigned char *ptr, unsigned char len)   
{  
  unsigned char i;  
  unsigned char crc=0;  
  while(len--!=0)   
   {  
     for(i=1; i!=0; i*=2)  
      {  
        if((crc&1)!=0) {crc/=2; crc^=0x8C;} 
        else crc/=2;  
        if((*ptr&i)!=0) crc^=0x8C;      
       }   
     ptr++;  
    }  
return(crc);  
}  



unsigned char  send[10                                        ];                               //發件箱 
unsigned char inbox[10                                        ];                               //收件箱 
unsigned char n=0;                                         //記憶接收中斷的次數    
unsigned char x=0;  

//**************************************************************************************

void usart_out(unsigned char *datas,unsigned char n) 
{ 
  unsigned char i=0;   
  PORTD.2=1                        ;                                              //使MAX485處于發送狀態 
  while(i<n)                                               //一共發送n個數據 
  {   
    if(i==0) UCSRB|=1                         ; else UCSRB&=254 ;    
    UDR=*(datas+i);                                        //裝載數據開始發送  
    while((UCSRA&64)==0);                                  //等待發送結束 
    UCSRA|=64;                                             //清除發送結束標志 
    i++;                                                   //發送次數統計 
  }  
  PORTD.2=0                        ;                                               //使MAX485處于接收狀態 
}  

//**************************************************************************************

interrupt[12] Rxd_isr(void)                                //接收中斷 
{   
  if( UCSRA&28                          ){ n=UDR; n=0; UCSRA|=0x01                      ; } else      //接收出錯就重新打開地址幀篩選功能 
  {
    if( UCSRB&2                            ) n=0;                               //檢測到地址信息時計數清零
    inbox[n]=UDR;  n++;                                    //把接收到的數據保存到收件箱   
    if( inbox[0]==1                                          ) UCSRA&=254                       ; else UCSRA|=0x01                      ;  //地址篩選  
  }
}  

//**************************************************************************************

void main(void) 
{   
  usart_init();  
  UCSRB&=191                       ;                                             //主機沒必要使用發送結束中斷
  PORTD.2=0                        ; 
  DDRD.2=1                         ; 
  DDRA=7;                                                  //通訊狀態指示
  #asm("sei");
  while(1) 
  { 
    x=~x;                                                  //測試用的變量
    PORTA.0=~PORTA.0;                                      //觀察單片機是否死機(供電一定要好)
    
    //************************************與從機11對話****************************************
                                                    
    if(x) send[3]=0; else send[3]=25;                      //更新發件箱的數據(測試代碼)
    send[0]=11;                                            //指向從機地址
    send[10                                        -1]=crc8(send,10                                        -1);                    //計算發件箱數據的crc8校驗碼 
    usart_out(send,10                                        );                                //將發件箱的數據send[]發送出去; 
    
    n=0;                                                   //計數復位,準備接收新數據
    delay_ms(15);                                          //等待從機回復數據,這個時間要計算好
    
    if(n==10                                         && inbox[10                                        -1]==crc8(inbox,10                                        -1)) //接收正確處理與測試
    {  
      PORTA.1=1; delay_ms(10); PORTA.1=0;
    }
    else                                                   //接收錯誤處理與測試
    {
      PORTA.2=1; delay_ms(10); PORTA.2=0;
    }   
          
    //************************************與從機12對話****************************************
    
    if(x) send[3]=10; else send[3]=15;                     //更新發件箱的數據(測試代碼)
    send[0]=12;                                            //指向從機地址
    send[10                                        -1]=crc8(send,10                                        -1);                    //計算發件箱數據的crc8校驗碼 
    usart_out(send,10                                        );                                //將發件箱的數據send[]發送出去; 
    
    n=0;                                                   //計數復位,準備接收新數據
    delay_ms(15);                                          //等待從機回復數據,這個時間要計算好
    
    if(n==10                                         && inbox[10                                        -1]==crc8(inbox,10                                        -1)) //接收正確處理與測試
    {  
      PORTA.1=1; delay_ms(10); PORTA.1=0;
    }
    else                                                   //接收錯誤處理與測試
    {
      PORTA.2=1; delay_ms(10); PORTA.2=0;
    }
  } 
}   //end 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久久久久久久 | 亚洲电影一级片| 日本一区二区三区国色天香| 亚洲精品一区二区三区精华液 | 精品一区精品二区高清| 午夜精品福利一区二区三区蜜桃| 亚洲一区二区成人在线观看| 一区二区三区四区不卡视频| 一区二区三区毛片| 午夜精品免费在线观看| 日本免费在线视频不卡一不卡二| 亚洲欧美一区二区久久| 亚洲丝袜美腿综合| 亚洲综合精品久久| 日本最新不卡在线| 麻豆国产欧美一区二区三区| 国产伦理精品不卡| 成人手机电影网| 99精品视频一区二区三区| 色88888久久久久久影院野外 | 另类成人小视频在线| 国产综合色在线| 日韩精品专区在线影院重磅| 国产在线播放一区二区三区| 亚洲欧美国产高清| 亚洲欧美怡红院| 亚洲第一狼人社区| 激情久久五月天| 成人av一区二区三区| 在线观看日产精品| 精品三级在线看| 最新热久久免费视频| 天堂资源在线中文精品| 国产99精品在线观看| 色婷婷精品大视频在线蜜桃视频| 日韩一区二区免费在线观看| 国产精品亲子乱子伦xxxx裸| 日韩中文字幕av电影| 成人一区二区在线观看| 欧美麻豆精品久久久久久| 国产亚洲综合性久久久影院| 亚洲第一在线综合网站| 国产成人午夜精品5599| 制服丝袜一区二区三区| 成人欧美一区二区三区小说| 激情文学综合网| 欧美妇女性影城| 亚洲欧美日韩国产手机在线| 国产在线精品一区二区夜色| 91欧美一区二区| 久久久精品一品道一区| 日韩在线卡一卡二| 色琪琪一区二区三区亚洲区| 国产日韩欧美综合一区| 久久精品国产亚洲aⅴ| 欧美美女一区二区| 一区二区在线电影| av在线播放成人| 欧美极品aⅴ影院| 国产一区二区三区免费| 日韩午夜激情视频| 日韩国产高清在线| 欧美顶级少妇做爰| 午夜精品aaa| 欧美三日本三级三级在线播放| 成人免费在线播放视频| 国产一区二区精品久久| 精品处破学生在线二十三| 蜜桃视频一区二区| 日韩欧美中文一区| 久久精品国产在热久久| 日韩欧美www| 黄色日韩三级电影| 2021中文字幕一区亚洲| 国产一区999| 国产片一区二区| 成人教育av在线| 亚洲欧洲制服丝袜| 在线视频国内自拍亚洲视频| 夜色激情一区二区| 欧美视频在线播放| 视频一区视频二区在线观看| 制服丝袜在线91| 国产一区二区不卡| 中文字幕在线观看不卡| 欧美综合色免费| 日本不卡123| 久久精品欧美日韩精品| 成人的网站免费观看| 亚洲最大的成人av| 日韩欧美一区在线观看| 国产精品一区二区免费不卡| 国产精品动漫网站| 在线精品视频免费播放| 日本91福利区| 国产三级欧美三级日产三级99| 成人黄色av电影| 亚洲一区二区三区视频在线 | av一区二区三区在线| 国产精品丝袜在线| 欧美日韩一级片网站| 精品一区二区三区香蕉蜜桃| 国产欧美日韩三区| 欧美性色aⅴ视频一区日韩精品| 日韩制服丝袜先锋影音| 国产欧美综合在线观看第十页| 91久久人澡人人添人人爽欧美| 青青国产91久久久久久| 日韩一区在线播放| 日韩午夜精品电影| 91年精品国产| 国产一区高清在线| 亚洲三级理论片| 欧美成人a在线| 99re66热这里只有精品3直播| 视频一区中文字幕国产| 国产精品嫩草久久久久| 欧美午夜精品一区二区蜜桃| 国产在线播放一区| 亚洲国产欧美日韩另类综合| 久久综合九色欧美综合狠狠 | 国内精品久久久久影院色| 中文字幕一区二区三区色视频| 在线91免费看| 色综合一区二区| 国产99久久久国产精品免费看| 日本欧美一区二区在线观看| 亚洲免费大片在线观看| 国产欧美日韩麻豆91| 日韩一区二区电影| 欧美视频第二页| fc2成人免费人成在线观看播放| 日韩精品亚洲一区| 亚洲精品欧美激情| 欧美激情综合五月色丁香| 精品美女在线观看| 91麻豆精品国产自产在线观看一区 | 五月婷婷激情综合| 亚洲欧美乱综合| 国产精品久久久久久久岛一牛影视 | 亚洲一区在线观看视频| 国产精品丝袜91| 亚洲国产精品传媒在线观看| ww久久中文字幕| 久久看人人爽人人| 精品少妇一区二区三区免费观看| 555www色欧美视频| 91精品国产综合久久久久久漫画| av日韩在线网站| 老鸭窝一区二区久久精品| 青娱乐精品视频| 日本视频一区二区三区| 亚洲成人福利片| 天天操天天色综合| 偷窥国产亚洲免费视频| 日韩在线卡一卡二| 奇米综合一区二区三区精品视频| 亚洲视频电影在线| 中文字幕亚洲在| 亚洲曰韩产成在线| 午夜精品123| 国产在线麻豆精品观看| 成人丝袜18视频在线观看| www.性欧美| 欧美色网站导航| 精品久久久久久久久久久久久久久| 精品动漫一区二区三区在线观看| 久久久精品欧美丰满| 欧美韩国一区二区| 日韩美女视频一区| 亚洲一区二区三区四区在线| 偷窥少妇高潮呻吟av久久免费| 日韩成人免费电影| 国产高清久久久| eeuss国产一区二区三区| 91麻豆国产自产在线观看| 欧美视频三区在线播放| 日韩视频在线你懂得| 国产欧美日韩在线观看| 一区二区三区不卡视频 | 精品久久久久99| 精品av久久707| 亚洲欧美一区二区三区国产精品| 日韩精品亚洲一区二区三区免费| 老司机午夜精品| 91日韩在线专区| 精品久久久久久久一区二区蜜臀| 26uuu国产日韩综合| 亚洲一区二区影院| 国产露脸91国语对白| 色网站国产精品| 日韩欧美精品在线| 亚洲欧美日韩一区| 国内成人精品2018免费看| 91丨porny丨首页| wwww国产精品欧美| 亚洲国产色一区| 99久久精品国产毛片| 欧美丰满少妇xxxxx高潮对白| 欧美国产一区二区|