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

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

?? i2c_demo.s

?? 本人改編和測試過的用于AVR mega128關于I2C總線的應用實例--使用EEPROM的讀寫方法。采用ICCAVR編譯器實驗。
?? S
字號:
	.module I2C_Demo.c
	.area text(rom, con, rel)
	.dbfile E:\MyWorks\SOFT\I2C_E2PROM\I2C_Demo.c
	.dbfunc e EEPROM_Write _EEPROM_Write fV
;           Data -> y+5
;          M_ADD -> R10,R11
;          H_ADD -> R12
	.even
_EEPROM_Write::
	xcall push_xgset003C
	movw R10,R18
	mov R12,R16
	sbiw R28,1
	.dbline -1
	.dbline 72
; // ***************   I2C driver Demo V 1.0   *************
; // IO模擬方式的I2C接口操作
; // *******************************************************
; 
; #include <iom1281v.h>
; #include <MACROS.h>
; 
; #include <DC_Defines.h>
; 
; #include "I2C.h"
; 
; 
; 
; void EEPROM_Write(unsigned char, unsigned int, unsigned char);
; unsigned char EEPROM_Read(unsigned char, unsigned int);
; 
; 
; // **************************************************************** //
; // ***                     Init_I2C();							*** //
; // *** This routine will setup the I2C port direction registers *** //
; // **************************************************************** //
; 
; // ***************************************************************** //
; // ***                     I2C_Start();	 		  		 	   	 *** //
; // *** This routine will set the I2C start condition on the bus, *** //
; // *** All commands must be preceded by a START condition 		 *** //
; // ***************************************************************** //
; 
; // ***************************************************************** //
; // ***                     I2C_Stop();	 		  		 	   	 *** //
; // *** This routine will set the I2C stop condition on the bus,  *** //
; // *** All commands must end with a STOP condition 		         *** //
; // ***************************************************************** //
; 
; // *********************************************************************** //
; // ***                Write_I2C_Control(0x0A,0,0);	  		  	       *** //
; // *** This routine will write the I2C device code, the device address *** //
; // *** setup on the hardware pins A0,A1 & A2, and also the W/R bit     *** //
; // *** So for an external EEPROM, such as the 24LC04B you would need   *** //
; // *** a device code of 1010 (0x0A),   	  	  		  	  			   *** //
; // *** hardware address 0 (if pins A0,A1 & A2 are left unconnected,    *** //
; // *** and the last parameter is R/W. Write is active low			   *** //
; // *********************************************************************** //
; 
; // *********************************************************************** //
; // ***                          I2C_Ackn();							   *** //
; // *** This routine will clock the ACK bit from the I2C slave device   *** //
; // *** it will return TRUE for a fail, and FALSE for a correct ACK bit *** //
; // *********************************************************************** //
; 
; // ************************************************************** //
; // ***                     Write_I2C_Byte();				  *** //
; // *** This routine will clock a byte to the slave I2C device *** //
; // ************************************************************** //
; 
; // ************************************************************************** //
; // ***                       Read_I2C_Byte();					          *** //
; // *** This routine will read and return a byte from the I2C slave device *** //
; // ************************************************************************** //
; 
; 
; 
; // *********************************************************************** //
; // ***                 Example of using Imagecraft I2C driver          *** //
; // ***              to write to an external 8 bit address EEPROM       *** //
; // *** H_ADD is the hardware address set on the device A0,A1 & A2 pins *** //
; // *** M_ADD is the devices internal memory address                    *** //
; // *** Data is user data to be writen 								   *** //
; // *********************************************************************** //
; 
; void EEPROM_Write(unsigned char H_ADD, unsigned int M_ADD, unsigned char Data)
; {
	.dbline 73
;  I2C_Start();			   			   // Set I2C start condition
	xcall _I2C_Start
	.dbline 75
; 
;  Write_I2C_Control(0x0A,H_ADD,0);	   // Send the EEPROM control Byte
	clr R2
	std y+0,R2
	mov R18,R12
	ldi R16,10
	xcall _Write_I2C_Control
	.dbline 77
; 
;  Write_I2C_Byte(M_ADD>>8);				   // Send the EEPROM internal Address higher byte.
	movw R16,R10
	mov R16,R17
	clr R17
	xcall _Write_I2C_Byte
	.dbline 79
;  
;  Write_I2C_Byte(M_ADD);            // Send the EEPROM internal Address lower byte.
	mov R16,R10
	xcall _Write_I2C_Byte
	.dbline 81
;  
;  Write_I2C_Byte(Data);				   // Send the EEPROM Data
	ldd R16,y+5
	xcall _Write_I2C_Byte
	.dbline 83
;  
;  I2C_Stop();	  					   // Set I2C Stop condition
	xcall _I2C_Stop
	.dbline -2
L1:
	.dbline 0 ; func end
	adiw R28,1
	xjmp pop_xgset003C
	.dbsym l Data 5 c
	.dbsym r M_ADD 10 i
	.dbsym r H_ADD 12 c
	.dbend
	.dbfunc e EEPROM_Read _EEPROM_Read fc
;           Temp -> R10
;          M_ADD -> R12,R13
;          H_ADD -> R10
	.even
_EEPROM_Read::
	xcall push_xgset003C
	movw R12,R18
	mov R10,R16
	sbiw R28,1
	.dbline -1
	.dbline 97
; }
; 
; 
; 
; // *********************************************************************** //
; // ***              Example of using Imagecraft I2C driver             *** //
; // ***            to Read an external 8 bit address EEPROM             *** //
; // *** H_ADD is the hardware address set on the device A0,A1 & A2 pins *** //
; // *** M_ADD is the devices internal memory address                    *** //
; // *** Data is user data to be writen 								   *** //
; // *********************************************************************** //
; 
; unsigned char EEPROM_Read(unsigned char H_ADD, unsigned int M_ADD)
; {
	.dbline 100
;  unsigned char Temp;			   		// Temp RAM for EEPROM Read
;  
;  I2C_Start();			   			   // Set I2C start condition
	xcall _I2C_Start
	.dbline 102
; 
;  Write_I2C_Control(0x0A,H_ADD,0);	   // Send the EEPROM control Byte
	clr R2
	std y+0,R2
	mov R18,R10
	ldi R16,10
	xcall _Write_I2C_Control
	.dbline 105
;  									   // Dummy write to set address
; 
;  Write_I2C_Byte(M_ADD>>8);				// Send the EEPROM internal Address Higher byte.
	movw R16,R12
	mov R16,R17
	clr R17
	xcall _Write_I2C_Byte
	.dbline 106
;  Write_I2C_Byte(M_ADD);     // Send the EEPROM internal Address lower byte.
	mov R16,R12
	xcall _Write_I2C_Byte
	.dbline 108
;  
;  I2C_Start();			   			   // Set I2C start condition
	xcall _I2C_Start
	.dbline 110
;  
;  Write_I2C_Control(0x0A,H_ADD,1);	   // Send the EEPROM control Byte
	ldi R24,1
	std y+0,R24
	mov R18,R10
	ldi R16,10
	xcall _Write_I2C_Control
	.dbline 112
;  
;  Temp = Read_I2C_Byte();			   // Read data from EEPROM
	xcall _Read_I2C_Byte
	mov R10,R16
	.dbline 114
;  
;  I2C_Stop();	  					   // Set I2C Stop condition
	xcall _I2C_Stop
	.dbline 116
; 
;  return Temp;						   // Return data from EEPROM
	mov R16,R10
	.dbline -2
L2:
	.dbline 0 ; func end
	adiw R28,1
	xjmp pop_xgset003C
	.dbsym r Temp 10 c
	.dbsym r M_ADD 12 i
	.dbsym r H_ADD 10 c
	.dbend
	.dbfunc e main _main fV
;              k -> R12
;           data -> y+1
;              j -> R10
;              i -> R22,R23
;              c -> R20,R21
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 125
; }
; 
; 
; 
; 
; //AT24C512B使用2BYTE片內地址。
; unsigned char bf[26];
; void main (void)
; {
	.dbline 131
;   unsigned int i;
;   unsigned char j, k;
;   unsigned int c;			  // Temp Ram used for write delay
;   volatile unsigned char data;
;   
;   DDRG |=BIT(PG1);
	sbi 0x13,1
	.dbline 132
;   PORTG |=BIT(PG1); //VCC =high.
	sbi 0x14,1
	.dbline 134
;   
;   I2C_DIR |= BIT(PD0)|BIT(PD1);  	 			  // Set Port B to Outputs
	in R24,0xa
	ori R24,3
	out 0xa,R24
	.dbline 136
;   
;   Init_I2C();	   			  // Setup the hardware port
	xcall _Init_I2C
	xjmp L5
L4:
	.dbline 139
;   
;   while (true)
;   {
	.dbline 140
;     for (k=0,i=0x1050, j='A'; 1; i++,j++ )
	clr R12
	ldi R22,4176
	ldi R23,16
	ldi R24,65
	mov R10,R24
	xjmp L10
L7:
	.dbline 141
;     {
	.dbline 142
;     	EEPROM_Write( 1 , i , j );
	std y+0,R10
	movw R18,R22
	ldi R16,1
	xcall _EEPROM_Write
	.dbline 144
;     	
;     	for(c=0;c<5000;c++);		  // Delay for EEPROM Write
	clr R20
	clr R21
	xjmp L14
L11:
	.dbline 144
L12:
	.dbline 144
	subi R20,255  ; offset = 1
	sbci R21,255
L14:
	.dbline 144
	cpi R20,136
	ldi R30,19
	cpc R21,R30
	brlo L11
X0:
	.dbline 146
;     	
;     	data = EEPROM_Read( 1, i );	  // Read device 1, memory address 1
	movw R18,R22
	ldi R16,1
	xcall _EEPROM_Read
	std y+1,R16
	.dbline 147
;     	bf[k++] =data;
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	mov R12,R24
	ldi R24,<_bf
	ldi R25,>_bf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	mov R2,R16
	std z+0,R2
	.dbline 148
;     	if (j=='Z') break;
	mov R24,R10
	cpi R24,90
	brne L15
X1:
	.dbline 148
	xjmp L9
L15:
	.dbline 150
;     	
;     }
L8:
	.dbline 140
	subi R22,255  ; offset = 1
	sbci R23,255
	inc R10
L10:
	.dbline 140
	xjmp L7
L9:
	.dbline 152
;     
;     for(c=0;c<5000;c++);		  // Delay for EEPROM Write
	clr R20
	clr R21
	xjmp L20
L17:
	.dbline 152
L18:
	.dbline 152
	subi R20,255  ; offset = 1
	sbci R21,255
L20:
	.dbline 152
	cpi R20,136
	ldi R30,19
	cpc R21,R30
	brlo L17
X2:
	.dbline 153
;   }
L5:
	.dbline 138
	xjmp L4
X3:
	.dbline -2
L3:
	.dbline 0 ; func end
	adiw R28,2
	ret
	.dbsym r k 12 c
	.dbsym l data 1 c
	.dbsym r j 10 c
	.dbsym r i 22 i
	.dbsym r c 20 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\MyWorks\SOFT\I2C_E2PROM\I2C_Demo.c
_bf::
	.blkb 26
	.dbsym e bf _bf A[26:26]c
; 
; }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久无| 亚洲综合精品久久| 自拍偷自拍亚洲精品播放| 亚洲成年人影院| 99久久伊人网影院| 亚洲精品一区二区在线观看| 亚洲一区二区三区激情| 国产成人在线看| 宅男在线国产精品| 亚洲午夜久久久久久久久电影院| 国产精品伊人色| 欧美一区二区成人| 亚洲午夜日本在线观看| 91欧美一区二区| 国产女主播视频一区二区| 日韩影院免费视频| 欧美在线高清视频| 亚洲欧美综合另类在线卡通| 国产剧情一区在线| 精品国产一区久久| 国产91色综合久久免费分享| 日韩视频永久免费| 香蕉av福利精品导航| 91久久精品一区二区二区| 最新热久久免费视频| 成人激情免费电影网址| 久久一二三国产| 国产伦精品一区二区三区免费 | 国产喂奶挤奶一区二区三区| 日本欧洲一区二区| 欧美猛男男办公室激情| 亚洲成人动漫在线观看| 欧美亚洲综合一区| 亚洲成a天堂v人片| 884aa四虎影成人精品一区| 日本亚洲视频在线| 欧美一区二区三区四区久久| 日本aⅴ免费视频一区二区三区| 欧美电影在线免费观看| 视频一区免费在线观看| 这里只有精品电影| 久久99久久久久| 久久综合久久鬼色| 粉嫩高潮美女一区二区三区| 国产精品福利av| 精品婷婷伊人一区三区三| 亚洲国产aⅴ成人精品无吗| 制服丝袜成人动漫| 久久狠狠亚洲综合| 国产精品色在线| 在线视频国内一区二区| 日韩成人午夜电影| 久久夜色精品一区| 99久久精品99国产精品| 视频在线观看一区| 久久久久国产精品人| 一本色道亚洲精品aⅴ| 亚洲va在线va天堂| 久久一日本道色综合| 91丨国产丨九色丨pron| 日韩制服丝袜av| 国产日韩一级二级三级| 色94色欧美sute亚洲线路一ni | 亚洲国产视频在线| 欧美成人一级视频| 不卡的看片网站| 天天综合色天天综合| 欧美精品一区二区三区一线天视频 | 久久久精品免费网站| 色欧美片视频在线观看在线视频| 午夜视频在线观看一区二区| 久久免费看少妇高潮| 欧美自拍偷拍一区| 国产高清精品在线| 午夜精品久久久久影视| 亚洲国产成人午夜在线一区| 欧美日韩1区2区| 成人一级视频在线观看| 午夜精品爽啪视频| 亚洲人成网站色在线观看| 欧美变态tickling挠脚心| 欧美va亚洲va香蕉在线| 99re这里只有精品6| 麻豆精品视频在线观看免费| 亚洲欧美日韩中文字幕一区二区三区 | 欧美一二三四区在线| bt7086福利一区国产| 美国精品在线观看| 一区二区三区日韩欧美| 久久精品视频一区| 欧美成人一区二区| 欧美一区二区三区啪啪| 日本久久一区二区| 99久久久国产精品免费蜜臀| 国产麻豆成人精品| 日本大胆欧美人术艺术动态| 亚洲蜜桃精久久久久久久| 亚洲国产精品精华液ab| 精品91自产拍在线观看一区| 日韩色视频在线观看| 欧美日韩大陆一区二区| 欧美少妇xxx| 欧美网站大全在线观看| 色妹子一区二区| 成人av小说网| 成人av在线观| 成人免费电影视频| 成人免费毛片高清视频| 国产91富婆露脸刺激对白| 久久精品国产亚洲高清剧情介绍 | 一区二区三区四区在线免费观看| 欧美激情自拍偷拍| 欧美国产精品一区二区| 国产女主播视频一区二区| 国产校园另类小说区| 久久久另类综合| 国产欧美一区二区精品忘忧草| 久久久久久久久久久黄色| 2020国产精品久久精品美国| 久久这里只有精品6| 国产亚洲欧美日韩俺去了| 久久精品日韩一区二区三区| 国产无人区一区二区三区| 国产精品天干天干在观线| 国产精品国产三级国产普通话99 | wwww国产精品欧美| 国产亚洲一二三区| 中文无字幕一区二区三区 | 亚洲美女屁股眼交| 亚洲午夜精品17c| 日韩电影在线观看网站| 蜜臀va亚洲va欧美va天堂| 久久99热这里只有精品| 国产成人免费在线观看| 91麻豆成人久久精品二区三区| 欧美少妇bbb| 欧美精品一区二区久久婷婷| 亚洲国产精品激情在线观看| 亚洲丝袜另类动漫二区| 亚洲成人av电影| 久久97超碰国产精品超碰| 国产91在线观看丝袜| 欧美亚洲一区二区在线观看| 日韩免费高清av| 亚洲国产精华液网站w| 亚洲一二三区在线观看| 久久国内精品自在自线400部| 国产91对白在线观看九色| 欧美性感一类影片在线播放| 日韩欧美亚洲国产另类| 国产精品久久久久一区| 亚洲一区二区不卡免费| 精品一区中文字幕| 91免费观看视频在线| 精品久久久久久久久久久久包黑料 | 26uuu另类欧美| 亚洲精品国产视频| 加勒比av一区二区| 一本一本大道香蕉久在线精品| 欧美电影精品一区二区| 亚洲黄色在线视频| 激情综合亚洲精品| 99久久精品免费看国产免费软件| 欧美一区二区三级| 中文字幕在线不卡一区| 日本欧美大码aⅴ在线播放| 99精品久久99久久久久| 日韩亚洲欧美综合| 亚洲精品国久久99热| 国产精品一线二线三线| 欧美日韩国产精品自在自线| 国产精品欧美经典| 精品一区二区在线播放| 欧美日韩国产精选| 亚洲靠逼com| 成人午夜视频在线| 久久综合网色—综合色88| 亚洲mv在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美久久高跟鞋激| 一区二区三区在线观看动漫| 成人av在线影院| 亚洲国产精华液网站w| 国产麻豆成人传媒免费观看| 91精品国产一区二区三区| 国产精品一区二区在线观看网站| 欧美肥胖老妇做爰| 亚洲成a人v欧美综合天堂下载 | 成人一道本在线| 欧美精品一区二区蜜臀亚洲| 麻豆精品在线播放| 日韩一区二区三区在线观看| 日精品一区二区三区| 欧美精品亚洲一区二区在线播放| 综合在线观看色| 99久久99久久综合| 亚洲视频狠狠干| 色综合久久99| 亚洲国产wwwccc36天堂| 欧美日韩在线一区二区|