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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? modbus.s

?? 使用Atmel88芯片實現(xiàn)RS485通訊,Modbus通訊協(xié)議.在IVR_AVR環(huán)境中編譯,文件完整.
?? S
?? 第 1 頁 / 共 2 頁
字號:
	.module modbus.c
	.area text(rom, con, rel)
	.dbfile D:\ICCTES~1\1128\modbus.c
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 32
; //modbus.c         
; #include <iom48v.h>        
; #include <macros.h>            
; #include "main.h"            
; #include "modbus.h"         
; #include "timer2.h"  
; #include "led.h"
; 
; #define LocalAddr 0x01          
; #define TRUE 1                                   
; #define FLASE 0                               
; volatile uchar sendPosi,sendCount;             
; uchar receCount;                    
; volatile uchar GetCntTemp;                  
;  uchar sendBuf[16];                          
;  uchar receBuf[16];                           
; volatile uchar checkoutError;	//校驗結(jié)果     
;  uchar receTimeOut;				//接收超時     
;                  
; uchar GetKeyValue;
; uint crc_result;
; 
;  uint testVarAnalog;
;  uint testVarPoint;
;  uint testVarInputUp;
;  uint testVarInputDown;
; 				 
; // UART0 initialize
; // desired baud rate: 9600
; // actual: baud rate:9615 (0.2%)
; void uart0_init(void)
; {
	.dbline 33
;   UCSR0B = 0x00; //disable while setting baud rate
	clr R2
	sts 193,R2
	.dbline 34
;   UCSR0A = 0x02;		// 0x02;
	ldi R24,2
	sts 192,R24
	.dbline 35
;   UCSR0C = 0x3E; //奇校驗 2個停止位. 
	ldi R24,62
	sts 194,R24
	.dbline 36
;   UBRR0L = 0x67; //set baud rate lo.
	ldi R24,103
	sts 196,R24
	.dbline 37
;   UBRR0H = 0x00; //set baud rate hi.
	sts 197,R2
	.dbline 39
; // UCSR0B = 0xB8; //bit3 send enable.
;   UCSR0B = 0b10010000;             
	ldi R24,144
	sts 193,R24
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e beginSend _beginSend fV
	.even
_beginSend::
	.dbline -1
	.dbline 46
; // UCSR0B &= ~BIT(TXCIE0); //RXCIE0 清零.
; // UCSR0B &= ~BIT(TXEN0);  //TXEN0 清零.
; }//void uart0_init(void)
; 
; 
; void beginSend(void)
; {
	.dbline 48
; //sendEnable();    //設(shè)為發(fā)送.
; 	sendPosi = 0;
	clr R2
	sts _sendPosi,R2
	.dbline 49
; 	if(sendCount > 1)
	ldi R24,1
	lds R2,_sendCount
	cp R24,R2
	brsh L7
	.dbline 50
; 	    sendCount--;
	lds R24,_sendCount
	subi R24,1
	sts _sendCount,R24
L7:
	.dbline 52
; //	TX9D = ParityBit(sendBuf[0]);
; 	UDR0 = sendBuf[0];
	lds R2,_sendBuf
	sts 198,R2
	.dbline 54
; 	//UCSR0B |= BIT(UDRIE0);       //  TXIE = 1;       //使能發(fā)送中斷. 
; 	UCSR0B |= BIT(TXCIE0);
	lds R24,193
	ori R24,64
	sts 193,R24
	.dbline 55
; 	UCSR0B |= BIT(TXEN0);		   //  TXEN = 1;		//使能發(fā)送
	lds R24,193
	ori R24,8
	sts 193,R24
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e singleKeyTranmit _singleKeyTranmit fV
	.even
_singleKeyTranmit::
	.dbline -1
	.dbline 79
; //	TXIE = 1;     
; //	CREN = 1;
; //	RCIE = 1;
; //	CREN = 0;
; //	RCIE = 0;
; }//void beginSend(void)
; 
; /*
; void singleKeyTranmit(void)
; {
; 	sendBuf[0] = 0x12;	 
; 	sendBuf[1] = 0x34;	 
; 	sendBuf[2] = 0x56; 
; 	sendBuf[3] = 0x78; 
; 	sendBuf[4] = 0x90; 
; 	sendCount = 5;   //發(fā)送字節(jié)長 
; 	beginSend(); 
; } 
; */
; 
; 
; //單鍵值處理 
; void singleKeyTranmit(void) 
; { 
	.dbline 80
; 	sendBuf[0] = 0xff;	
	ldi R24,255
	sts _sendBuf,R24
	.dbline 81
; 	sendBuf[1] = 0xaa;	
	ldi R24,170
	sts _sendBuf+1,R24
	.dbline 82
; 	sendBuf[2] = 0x55;	                //0x55 校驗確認(rèn)回復(fù). 
	ldi R24,85
	sts _sendBuf+2,R24
	.dbline 83
;    	crc_result = CRC16(sendBuf,3);	
	ldi R18,3
	ldi R19,0
	ldi R16,<_sendBuf
	ldi R17,>_sendBuf
	rcall _CRC16
	sts _crc_result+1,R17
	sts _crc_result,R16
	.dbline 84
;     sendBuf[3] = (uchar)(crc_result&0x00ff);      // Lo byte. 
	movw R24,R16
	andi R25,0
	sts _sendBuf+3,R24
	.dbline 85
; 	sendBuf[4] = (uchar)((crc_result&0xff00)>>8); // Hi byte. 
	movw R24,R16
	andi R24,0
	mov R24,R25
	clr R25
	sts _sendBuf+4,R24
	.dbline 87
; //--------
; 	sendCount = 5;   
	ldi R24,5
	sts _sendCount,R24
	.dbline 89
; //----------
; 	beginSend();   
	rcall _beginSend
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e ReceiveFrameDisFun _ReceiveFrameDisFun fV
	.even
_ReceiveFrameDisFun::
	rcall push_gset1
	.dbline -1
	.dbline 95
; }  
;  
;  
; // 從站接受信息幀處理 
; void ReceiveFrameDisFun(void) 
; {
	.dbline 96
;  	if(receCount>4)
	ldi R24,4
	lds R2,_receCount
	cp R24,R2
	brlo X5
	rjmp L15
X5:
	.dbline 97
; 	{	 
	.dbline 98
; 		 		switch(receBuf[1])     	    //byte 2: Command byte.
	lds R20,_receBuf+1
	clr R21
	cpi R20,0
	cpc R20,R21
	brne X6
	rjmp L18
X6:
X0:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	brne X7
	rjmp L18
X7:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L23
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brne X8
	rjmp L18
X8:
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge X9
	rjmp L18
X9:
L39:
	cpi R20,170
	ldi R30,0
	cpc R21,R30
	breq L31
	rjmp L18
X1:
	.dbline 99
; 				{	
	.dbline 101
; 					case 0:	
; 				 		  	break;
	.dbline 103
; 					case 1:	
; 							break;
L23:
	.dbline 106
; 					case 3: //請求變量
; 					 
; 					    if(receCount >= 8)
	lds R24,_receCount
	cpi R24,8
	brsh X10
	rjmp L18
X10:
	.dbline 107
; 						{	
	.dbline 110
; 						  //PORTC ^= 0x02;    
; 						
;      						if(receBuf[0]==LocalAddr && checkoutError==0) 
	lds R24,_receBuf
	cpi R24,1
	brne L26
	lds R2,_checkoutError
	tst R2
	brne L26
	.dbline 111
; 							{
	.dbline 112
; 								if(RecFrameCheck(&receBuf[0],receCount))
	lds R18,_receCount
	clr R19
	ldi R16,<_receBuf
	ldi R17,>_receBuf
	rcall _RecFrameCheck
	cpi R16,0
	cpc R16,R17
	breq L28
X2:
	.dbline 113
; 								{ //校驗正確
	.dbline 114
; 				                     readRegisters();
	rcall _readRegisters
	.dbline 115
; 									 LedShowLink = 1717;
	ldi R24,1717
	ldi R25,6
	sts _LedShowLink+1,R25
	sts _LedShowLink,R24
	.dbline 116
; 								}  
L28:
	.dbline 117
; 							}
L26:
	.dbline 118
; 		    				receCount = 0;	
	clr R2
	sts _receCount,R2
	.dbline 119
; 			    			checkoutError = 0;	
	sts _checkoutError,R2
	.dbline 120
; 						}
	.dbline 122
; 				 
; 							break;
	rjmp L18
X3:
	.dbline 125
; 					
; 					case 5:
; 							break;
L31:
	.dbline 129
; 					
; 					case 0xaa:
; 						// PORTC ^= 0x02;        
; 						if(receCount >= 5)         
	lds R24,_receCount
	cpi R24,5
	brlo L18
	.dbline 130
; 						{              
	.dbline 132
; 						//   PORTC ^= 0x02;       
; 							if(receBuf[0]==LocalAddr && checkoutError==0) 
	lds R24,_receBuf
	cpi R24,1
	brne L34
	lds R2,_checkoutError
	tst R2
	brne L34
	.dbline 133
; 							{
	.dbline 135
; 							 //  PORTC ^= 0x02;
; 								if( RecFrameCheck(receBuf,5) )     
	ldi R18,5
	ldi R19,0
	ldi R16,<_receBuf
	ldi R17,>_receBuf
	rcall _RecFrameCheck
	cpi R16,0
	cpc R16,R17
	breq L36
X4:
	.dbline 136
; 								{//校驗正確							
	.dbline 138
; 								//	PORTC ^= 0x02;												
; 					 				GetKeyValue = receBuf[2]; 
	lds R2,_receBuf+2
	sts _GetKeyValue,R2
	.dbline 139
; 					  	     		LedShowLink = GetKeyValue;	
	clr R3
	sts _LedShowLink+1,R3
	sts _LedShowLink,R2
	.dbline 140
; 					   			singleKeyTranmit(); 
	rcall _singleKeyTranmit
	.dbline 141
; 						 		}	                        
L36:
	.dbline 142
; 							} //if(receBuf[0]==LocalAddr && checkoutError==0) 
L34:
	.dbline 143
; 						receCount = 0;	
	clr R2
	sts _receCount,R2
	.dbline 144
; 						checkoutError = 0;	
	sts _checkoutError,R2
	.dbline 145
; 					    } 
	.dbline 146
; 							break;
	.dbline 149
;                                  
; 					default:
; 					    	break;	 	// 錯誤功能碼處理.
L18:
	.dbline 151
; 				}	//switch(receBuf[1]) 
; 	}	//	if(receCount>4)
L15:
	.dbline 152
; 	NOP();	
	nop
	.dbline -2
L14:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e RecFrameCheck _RecFrameCheck fc
;        CRCWord -> R20,R21
;  GetCntTempBuf -> R10
;    p_CheckData -> R22,R23
	.even
_RecFrameCheck::
	rcall push_gset3
	mov R10,R18
	movw R22,R16
	.dbline -1
	.dbline 157
; }  //void ReceiveFrameDisFun(void)
; 
; 
; uchar RecFrameCheck(uchar *p_CheckData,uchar GetCntTempBuf)
; {	
	.dbline 159
; 	uint CRCWord;	
; 	CRCWord = *(p_CheckData+(GetCntTempBuf-1)) + 
	mov R30,R10
	clr R31
	sbiw R30,2
	add R30,R22
	adc R31,R23
	ldd R2,z+0
	clr R3
	mov R3,R2
	clr R2
	mov R30,R10
	clr R31
	sbiw R30,1
	add R30,R22
	adc R31,R23
	ldd R20,z+0
	clr R21
	add R20,R2
	adc R21,R3
	.dbline 163
; 					(*(p_CheckData+(GetCntTempBuf-2))<<8); 
; //	CRCWord = *(p_CheckData+(GetCntTempBuf-2)) + 
; //				(*(p_CheckData+(GetCntTempBuf-1))<<8); 				
; 	if(CRCWord == CRC16(p_CheckData,GetCntTempBuf-2))	 
	mov R18,R10
	clr R19
	subi R18,2
	sbci R19,0
	movw R16,R22
	rcall _CRC16
	cp R20,R16
	cpc R21,R17
	brne L41
	.dbline 164
; 	{
	.dbline 165
; 		return TRUE;
	ldi R16,1
	rjmp L40
L41:
	.dbline 168
; 	}
; 	else
; 	{
	.dbline 169
; 		return FLASE;
	clr R16
	.dbline -2
L40:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r CRCWord 20 i
	.dbsym r GetCntTempBuf 10 c
	.dbsym r p_CheckData 22 pc
	.dbend
	.dbfunc e CRC16 _CRC16 fI
;              i -> R20,R21
;             CH -> R22
;             CL -> R10
;         SaveLo -> R14
;         SaveHi -> y+2
;           Flag -> y+0
;        CRC16Hi -> R12
;        CRC16Lo -> R6
;        iLength -> R8,R9
;           data -> R4,R5
	.even
_CRC16::
	rcall push_gset5
	movw R8,R18
	movw R4,R16
	sbiw R28,3
	.dbline -1
	.dbline 178
; 	}
; }//uchar RecFrameCheck(uchar *p_CheckData,uchar GetCntTempBuf)	
; 
; 
; 
; 
; //
; MyWord CRC16(MyByte *data,int iLength)
; {   
	.dbline 184
;  	MyByte CRC16Lo,CRC16Hi;
;     MyByte CL,CH;
;  	MyByte SaveHi,SaveLo;
; 	int i,Flag;
;     
; 	CRC16Lo = 0xff;
	ldi R24,255
	mov R6,R24
	.dbline 185
; 	CRC16Hi = 0xff;
	mov R12,R24
	.dbline 186
; 	CL = 0x01;
	clr R10
	inc R10
	.dbline 187
; 	CH = 0xa0;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲专一区二区三区| 久久精品国产亚洲高清剧情介绍| 免费在线观看日韩欧美| eeuss鲁一区二区三区| 7777精品伊人久久久大香线蕉完整版| 国产欧美一区二区精品性| 天天色天天操综合| 色欧美日韩亚洲| 国产欧美va欧美不卡在线| 老司机精品视频在线| 欧美色视频一区| 亚洲男女毛片无遮挡| 国产91富婆露脸刺激对白| 日韩一区二区免费电影| 午夜精品爽啪视频| 91国在线观看| 亚洲色图在线看| 成人午夜精品一区二区三区| 久久久亚洲精华液精华液精华液| 蜜乳av一区二区三区| 欧美美女网站色| 亚洲一区在线观看免费观看电影高清| heyzo一本久久综合| 国产色产综合色产在线视频 | 欧美一级日韩一级| 亚洲成人av一区二区三区| 色老汉av一区二区三区| 自拍av一区二区三区| 成人av网站免费| 国产精品每日更新| 福利一区在线观看| 国产午夜精品久久久久久久| 国产精品一区二区男女羞羞无遮挡| 日韩你懂的在线播放| 久久精品噜噜噜成人88aⅴ | 国产一区二区三区四| 精品免费日韩av| 麻豆国产一区二区| 91精品国产综合久久婷婷香蕉| 国产凹凸在线观看一区二区| 久久精品视频免费观看| 国内精品国产三级国产a久久| 精品国产一区二区国模嫣然| 精品一区二区在线播放| 精品处破学生在线二十三| 激情欧美一区二区三区在线观看| 精品1区2区在线观看| 国产一区二区在线观看视频| 久久久久成人黄色影片| 国产成人aaa| 综合欧美一区二区三区| 欧美最新大片在线看| 亚洲午夜羞羞片| 538在线一区二区精品国产| 日韩精品三区四区| 欧美大黄免费观看| 国产成人亚洲综合色影视| 国产欧美日产一区| av电影在线观看一区| 亚洲精品国产第一综合99久久| 欧美日韩免费电影| 麻豆精品久久久| 亚洲国产高清在线| 91精品1区2区| 日韩精品一区第一页| 久久久久九九视频| 99久久777色| 亚洲一区电影777| 精品少妇一区二区三区免费观看| 国产成人在线影院| 亚洲另类一区二区| 日韩一区二区精品| 成人毛片视频在线观看| 亚洲综合无码一区二区| 日韩一区二区电影| 国产91精品露脸国语对白| 一区二区三区不卡在线观看| 欧美一级国产精品| eeuss鲁片一区二区三区| 亚洲成人黄色小说| 国产日韩欧美精品综合| 在线视频一区二区三| 久久99精品视频| 国产精品家庭影院| 91精品综合久久久久久| 国产成人精品亚洲午夜麻豆| 亚洲一线二线三线视频| www国产成人免费观看视频 深夜成人网| av电影天堂一区二区在线| 肉肉av福利一精品导航| 日本一区二区高清| 7777精品伊人久久久大香线蕉的 | 91精品免费观看| 日韩精品中午字幕| 99久久99久久精品国产片果冻| 日韩电影一二三区| 中文字幕在线一区二区三区| 制服丝袜激情欧洲亚洲| 成人国产精品免费观看视频| 日韩综合在线视频| 一区在线中文字幕| 精品欧美黑人一区二区三区| av一区二区久久| 久久99国产精品久久99| 亚洲人一二三区| 久久久久久久久久久电影| 欧美中文字幕一区| 成人动漫av在线| 精品一区二区久久久| 亚洲综合在线第一页| 国产亚洲福利社区一区| 欧美美女一区二区| 色婷婷香蕉在线一区二区| 国产精品综合网| 日本免费新一区视频| 一区二区三区.www| 日本一区二区成人| 亚洲精品一区二区三区四区高清| 欧美日韩中字一区| 97久久精品人人做人人爽| 国产乱子伦视频一区二区三区| 日韩电影网1区2区| 亚洲国产精品尤物yw在线观看| **欧美大码日韩| 欧美极品美女视频| 精品久久久久久久久久久院品网| 欧美色区777第一页| 91同城在线观看| 成人动漫在线一区| 国产凹凸在线观看一区二区| 韩国av一区二区| 麻豆91小视频| 日本少妇一区二区| 亚洲一区二区三区精品在线| 亚洲人成亚洲人成在线观看图片| 国产欧美精品国产国产专区| 久久免费视频一区| 精品美女被调教视频大全网站| 欧美放荡的少妇| 欧美精品 日韩| 欧美专区在线观看一区| 色欧美乱欧美15图片| 99久久久免费精品国产一区二区| 国产黄色精品网站| 国产精品一区二区在线播放| 国产中文一区二区三区| 国内精品伊人久久久久影院对白| 久久电影网电视剧免费观看| 美国三级日本三级久久99| 免费看精品久久片| 日本中文一区二区三区| 日韩高清不卡在线| 日韩电影免费在线看| 青青草精品视频| 免费成人av在线| 久久精品99国产国产精| 久久疯狂做爰流白浆xx| 激情偷乱视频一区二区三区| 国产乱一区二区| 精品少妇一区二区三区日产乱码 | 日韩一区二区中文字幕| 日韩一级免费观看| 精品国产乱码久久久久久闺蜜| 精品国产一区二区亚洲人成毛片| 亚洲精品一区二区三区蜜桃下载 | 欧美日韩国产免费一区二区| 在线不卡免费欧美| 欧美成人精品3d动漫h| 26uuu另类欧美| 中文字幕欧美激情| 亚洲色图另类专区| 亚洲第一成年网| 美女网站在线免费欧美精品| 国产在线视频一区二区三区| 国产精品小仙女| 99精品黄色片免费大全| 色欧美乱欧美15图片| 欧美日韩国产精品成人| 日韩三级视频在线观看| 久久久.com| 亚洲精品日产精品乱码不卡| 日韩中文欧美在线| 黄页网站大全一区二区| av电影在线观看不卡| 欧美久久一区二区| 久久综合色8888| 亚洲日本欧美天堂| 日本免费新一区视频| 国产aⅴ精品一区二区三区色成熟| 91麻豆产精品久久久久久| 3atv一区二区三区| 久久久久久久综合日本| 亚洲激情网站免费观看| 人人超碰91尤物精品国产| 粉嫩绯色av一区二区在线观看| 在线视频一区二区三| 久久亚洲私人国产精品va媚药| 亚洲日本在线a| 麻豆成人免费电影| 99视频一区二区|