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

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

?? contact.c

?? 51單片機C語言常用模塊與綜合系統設計實例精講
?? C
字號:
#include <./Atmel/at89x52.h>
#include <stdio.h>
#include <absacc.h>
#include <string.h>
#include "source.h"
/**為下載協議,與第14章的下載協議是一樣的**/
#define FSUCCESS 0
#define FERROR   1  
#define FDOVER  2
void print_sbuf(unsigned char c){
	dst_buf[dst_head]=c; 
	dst_head ++;
	dst_head %=DST_LEN; 
}
#define REPLAY_LEN 9
void reply_dwn(unsigned char flag,unsigned char *rbuf){//rbuf is the buf that downlaod data.
	unsigned char reply[REPLAY_LEN];
	struct  yushi rply_crc;
	unsigned char i;
	reply[0]=FDWN_FHD;
	reply[1]=flag;
	reply[2]=rbuf[2];
	reply[3]=rbuf[3];
	reply[4]=rbuf[4];
	reply[5]=0x00;
	reply[6]=0x00;
	init_crccheck(&rply_crc);
	for(i=0;i<7;i++){
		crccheck(reply[i],&rply_crc);
	}
	reply[7]=rply_crc.h;
	reply[8]=rply_crc.l;
	for(i=0;i<REPLAY_LEN;i++){	
		print_sbuf(*(reply+i));
	}
	TI=1;
}
void flash_download(void){
	union SFADD   dwn_adres;
	unsigned char fdata[FDWN_LEN];
	unsigned char fsm_fdl;
	unsigned char cnt;
	unsigned char erase_sec=0;
	unsigned int  sector_section=0;
	struct yushi fcrc;
	fsm_fdl=0;
	while(1){
		if(dsr_tail!=dsr_head){		
			if(fsm_fdl==0){//search frame head
				if(dsr_buf[dsr_tail]==FDWN_FHD){
					fsm_fdl=1;//head had found.
					fdata[0]=FDWN_FHD;
					cnt=1;
				}
			}
			else if(fsm_fdl==1){//receive type byte
				if(cnt<FDWN_LEN-1){
						fdata[cnt]=dsr_buf[dsr_tail];
						cnt++;
				}
				else{//finish receive data.
					fdata[cnt]=dsr_buf[dsr_tail];
					if(1){//mult_crccheck(fdata,FDWN_LEN,struct &fcrc)==0){//crc ok
						dwn_adres.c[1]=fdata[2];
						dwn_adres.c[2]=fdata[3];
						dwn_adres.c[3]=fdata[4];
						sector_section=dwn_adres.c[1];//convert to sector.
						sector_section <<=8;
						sector_section &=0xff00;
						sector_section |=dwn_adres.c[2];
						sector_section >>=5;
						if(((dwn_adres.c[2]&0x1f)==0x00)&&(dwn_adres.c[3]==0x00)){//A0~A11 IS 0 it indicaate across the sector
 					    	if(sector_section<8){//is sector SA0~SA7
								erase_sec=(unsigned char)sector_section;
								delay_10us(15);
								if(erase_sector(erase_sec)){//erase sector ok.
								}
								else{
									reply_dwn(erase_sec,fdata);
								}
							}
							else if((sector_section&0x7)==0){//sector is biger than 8.
								sector_section >>=3;
								erase_sec=(unsigned char)(sector_section&0xff);
								erase_sec +=7;
								delay_10us(15);
								if(erase_sector(erase_sec)){//erase sector ok.
								}
								else{
									reply_dwn(erase_sec,fdata);
								}
							}
						}
						for(cnt=0;cnt<128;cnt++){
							write_flash(&dwn_adres,fdata[5+cnt]);
							dwn_adres.l ++;
						}
						if(fdata[1]==0x00){//download data
							reply_dwn(FSUCCESS,fdata);
						}
						else if(fdata[1]==0x01){//download finsish.
							reply_dwn(FDOVER,fdata);//for mutil file download ,power down again to into normal mode.
						}
					}
					else{//CRC error
						reply_dwn(FERROR,fdata);
					}
					fsm_fdl=0;//search frame head again.					
				}
			}	
			dsr_tail++;
			dsr_tail %=DSR_LEN;
		}
		else{
			//wait receive serial data.
		}
	}
}
/**為信息傳輸協議***/
void write_remote(unsigned char *a,unsigned char len){//向串口發送數據
	unsigned char  i;
	for(i=0;i<len;i++){
		dst_buf[dst_head]=*(a+i);
		dst_head++;
		dst_head%=DST_LEN;
	}
	if(TDBdata_over){
		TI=1;
		TDBdata_over=0;
	}
}
/*存儲串口傳輸的信息*/
void store_remote(struct NOTICE *info,unsigned char *notice,unsigned int *eep_add){
	unsigned int eeprom_address;
	unsigned char buf[32];
	eeprom_address=*eep_add;
	eeprom_address *=NOTICE_EEPCONTENT_LEN;
	eeprom_address +=EERPOM_NOTICE_START;
	info->len=notice[2]-8;
	if(info->len>62){
		//remote len >62 error
		info->len=62;
	}
	buf[0]=info->len;
	info->font=notice[5];
	buf[1]=info->font;
	if(buf[0]>30){//write 2 page data
		memcpy(buf+2,notice+6,30);
		AT24C64_wbytes((unsigned char *)&eeprom_address,32,buf);
		memcpy(buf,notice+36,info->len-30);
		memcpy(info->buf,notice+6,info->len);
		eeprom_address +=32;
		AT24C64_wbytes((unsigned char *)&eeprom_address,info->len-30,buf);//write another page .
	}
	else{
		memcpy(buf+2,notice+6,info->len);
		memcpy(info->buf,notice+6,info->len);
		AT24C64_wbytes((unsigned char *)&eeprom_address,info->len+2,buf);
	}
}
unsigned char notice[256];
unsigned char rnotlen;
bit read_remote(void){//讀串口傳輸的數據
	static unsigned char fsm_remote=0x00;
	static unsigned char rcnt;
	unsigned char temp;
	unsigned int eeprom_address;
	struct yushi rmcrc;
	if(dsr_tail!=dsr_head){//接收串口數據緩沖區不為空
		if(dsr_buf[dsr_tail]==REMOTE_HEAD){//是幀的幀頭
				notice[0]=REMOTE_HEAD;
				fsm_remote=0x01;//下一個接收長度字節
				rcnt=1;
		}
		else if(fsm_remote==0x01){//接收幀長字節 
				notice[1]=dsr_buf[dsr_tail];
				rnotlen=dsr_buf[dsr_tail];//把接收的幀長度給rnotlen
				if(rnotlen>128){//統一定義長度小于128字節,如果大于128則表明上個接收的字節不是幀頭
					fsm_remote=0x00;//重新搜索幀頭
				}
				else
					fsm_remote=0x02;//接收幀數據
				rcnt=2;	
		}
		else if(fsm_remote==0x02){//接收幀內容
			notice[rcnt]=dsr_buf[dsr_tail];
			rcnt++;
			if(rcnt>=rnotlen){//接收了rnotlen個字節,幀接收完畢
				fsm_remote=0x00;//狀態轉到重新搜索幀頭.
						switch(notice[2]){
							case 0x00://改變消息 
								eeprom_address=notice[4];
								eeprom_address=0;//串口傳輸的信息從地址0開始
								store_remote(show_notice.ognd+notice[4],notice,&eeprom_address);
								break;
							case 0x01://調整RTC的時間
								temp=0;
								if((notice[6]<100)&&(notice[7]<13)){
									if((notice[8]<32)&&(notice[9]<24)){
										if((notice[10]<60)&&(notice[11]<60)){
											temp=1;
										}
									}
								}
								if(temp==1){
									rtc.year=chtobcd(notice[6]);
									rtc.month=chtobcd(notice[7]);
									rtc.dayom=chtobcd(notice[8]);
									rtc.hour=chtobcd(notice[9]);
									rtc.minute=chtobcd(notice[10]);
									rtc.second=chtobcd(notice[11]);
									SD2000_set_time(&rtc);
								}
								else{
									//Set time error
								}
								break;
						}
						write_remote(notice,8);
					}
				}
				else{
					fsm_remote=0x00;
				}
				dsr_tail++; 
				dsr_tail %=DSR_LEN;//把串口接收的數據減一
						return 1;
		}
	else{
		return 0;
	}
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久性| 蜜桃精品视频在线| 日韩电影在线观看一区| 国产精品一区二区在线播放| 欧洲一区二区三区在线| 精品国产成人系列| 亚洲在线免费播放| 国产ts人妖一区二区| 欧美一区二区成人6969| 中文字幕一区二区三区不卡在线| 日韩一区精品视频| 91麻豆swag| 亚洲国产高清不卡| 久久99国产精品免费网站| 91黄色免费版| 国产精品女人毛片| 国产在线不卡一区| 日韩免费一区二区| 26uuu精品一区二区在线观看| 亚洲永久免费av| 91一区二区在线| 欧美国产亚洲另类动漫| 九色porny丨国产精品| 欧美日韩精品欧美日韩精品| 中文字幕佐山爱一区二区免费| 国产剧情在线观看一区二区| 91精选在线观看| 亚洲va在线va天堂| 色悠久久久久综合欧美99| 国产精品私人影院| 国产成人午夜精品5599| 26uuu精品一区二区| 久久99久久99小草精品免视看| 欧美日韩一区中文字幕| 亚洲美女电影在线| 色婷婷av一区| 亚洲精品欧美综合四区| 91成人免费网站| 一区二区三区四区激情| 91在线视频免费观看| 亚洲欧洲美洲综合色网| eeuss鲁一区二区三区| 中文字幕一区av| 91成人国产精品| 亚洲成人在线网站| 91麻豆精品国产| 捆绑调教一区二区三区| 久久精品亚洲精品国产欧美kt∨| 国产一区二区视频在线播放| 国产婷婷色一区二区三区四区| 成人免费高清视频在线观看| 亚洲国产精品成人久久综合一区| 99久久99久久免费精品蜜臀| 一区二区三区电影在线播| 欧美性一级生活| 日韩国产欧美在线视频| wwwwxxxxx欧美| 成人精品视频网站| 夜夜嗨av一区二区三区网页 | 国产美女视频一区| 久久亚区不卡日本| 99久久er热在这里只有精品15| 一区二区三区免费网站| 欧美精品乱人伦久久久久久| 久久91精品国产91久久小草| 欧美激情一区二区| 欧美影院一区二区| 看国产成人h片视频| 国产欧美日韩视频在线观看| 在线精品亚洲一区二区不卡| 青青草成人在线观看| 久久久久久久性| 欧美日韩国产精选| 国产成人精品在线看| 自拍偷自拍亚洲精品播放| 欧美一区二区三区免费观看视频| 国产成人精品免费网站| 亚洲一级在线观看| 中文字幕电影一区| 欧美一级黄色大片| 99精品视频免费在线观看| 蜜桃一区二区三区在线| 亚洲欧美另类在线| 久久亚洲综合av| 欧美日韩高清一区二区三区| 丰满白嫩尤物一区二区| 婷婷丁香激情综合| 亚洲日本中文字幕区| 精品国一区二区三区| 欧美日韩一区二区三区不卡| 国产成人亚洲综合a∨猫咪| 日韩av电影天堂| 亚洲一区二区三区四区在线观看| 久久综合九色欧美综合狠狠| 欧美性猛交xxxxxx富婆| 成人黄色软件下载| 久久精品72免费观看| 午夜成人免费视频| 一区二区三区在线影院| 中文一区二区完整视频在线观看| 欧美一级在线视频| 欧美久久婷婷综合色| 在线视频欧美精品| 97aⅴ精品视频一二三区| 国产成人av一区二区三区在线 | 日韩亚洲欧美成人一区| 99国产精品久久久久久久久久| 国产精品资源在线| 免费观看一级欧美片| 日本欧美一区二区| 视频一区二区不卡| 午夜在线电影亚洲一区| 一区二区三区精品| 亚洲欧美激情视频在线观看一区二区三区 | 久久精品一区二区三区不卡| 欧美mv日韩mv| 精品国产乱码久久久久久蜜臀 | 中文字幕在线一区| 欧美国产一区二区| 国产精品美女久久久久久久久 | 亚洲一区二区三区四区的| 亚洲精品福利视频网站| 亚洲精品水蜜桃| 亚洲人成在线播放网站岛国| 综合色中文字幕| 亚洲乱码中文字幕| 一区二区三区在线视频免费观看| 亚洲久本草在线中文字幕| 一区二区三区不卡视频| 亚洲一二三四在线观看| 亚洲.国产.中文慕字在线| 亚洲福利视频导航| 奇米777欧美一区二区| 久久不见久久见免费视频1| 久久99国产精品久久| 国产成人8x视频一区二区| 99国产精品久久久久久久久久久| 日本精品一区二区三区高清| 欧美羞羞免费网站| 精品国产一区二区亚洲人成毛片| 久久亚洲综合色一区二区三区| 中文字幕免费观看一区| 亚洲天堂精品在线观看| 亚洲资源中文字幕| 韩日av一区二区| 不卡视频在线观看| 欧美三级日本三级少妇99| 91精品国产综合久久久蜜臀图片| www国产成人免费观看视频 深夜成人网| 精品国产乱码久久久久久影片| 中文字幕在线一区二区三区| 香蕉影视欧美成人| 大尺度一区二区| 欧洲av一区二区嗯嗯嗯啊| 精品国产乱码久久久久久浪潮| 中文一区在线播放 | 中文字幕在线一区| 偷拍与自拍一区| 高潮精品一区videoshd| 在线观看一区日韩| 精品国产电影一区二区| 亚洲精品国产视频| 精品一区二区三区免费视频| 972aa.com艺术欧美| 欧美v亚洲v综合ⅴ国产v| 中文字幕在线不卡一区二区三区| 亚洲高清不卡在线| 国产成人精品三级| 91麻豆精品久久久久蜜臀| 国产精品伦一区| 激情久久久久久久久久久久久久久久| 91麻豆精品一区二区三区| 精品国产乱码91久久久久久网站| 一区二区三区在线免费播放| 国产一区二区伦理| 欧美一卡二卡在线| 一区二区日韩电影| 成人激情免费网站| 日韩精品专区在线影院观看 | 91成人网在线| 亚洲欧洲无码一区二区三区| 国产剧情av麻豆香蕉精品| 3atv一区二区三区| 亚洲精品成人少妇| av电影天堂一区二区在线观看| 精品国产人成亚洲区| 亚洲成av人在线观看| 99久久99久久综合| 中文字幕+乱码+中文字幕一区| 国产一区二区三区视频在线播放| 制服丝袜日韩国产| 亚洲一级电影视频| 欧美午夜片在线观看| 亚洲精选免费视频| 色妞www精品视频| 亚洲欧美一区二区三区久本道91| 国产成人av在线影院| 国产人妖乱国产精品人妖| 国产一区二区三区美女| 2021久久国产精品不只是精品|