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

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

?? iic接口讀寫.s

?? ICC mega8例子
?? S
字號:
	.module IIC接口讀寫.c
	.area text(rom, con, rel)
	.dbfile E:\xiaozhiyong2009\設計資料\項目設計\ICCAVR_mega8_C\ICCAVR_mega8_IIC接口讀寫\IIC接口讀寫.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 9
; //ICC-AVR application builder : 2009-3-12 17:05:04
; // Target : M8
; // Crystal: 8.0000Mhz
; 
; #include <iom8v.h>
; #include <macros.h>
; 
; void port_init(void)
; {
	.dbline 10
;  PORTB = 0x00;
	clr R2
	out 0x18,R2
	.dbline 11
;  DDRB  = 0x00;
	out 0x17,R2
	.dbline 12
;  PORTC = 0x00; //m103 output only
	out 0x15,R2
	.dbline 13
;  DDRC  = 0x00;
	out 0x14,R2
	.dbline 14
;  PORTD = 0x00;
	out 0x12,R2
	.dbline 15
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 20
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 22
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
	cli
	.dbline 23
;  port_init();
	rcall _port_init
	.dbline 25
; 
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 26
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 27
;  TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 28
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_ms _delay_ms fV
;              i -> R20,R21
;           time -> R16,R17
	.even
_delay_ms::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 66
;  //all peripherals are now initialized
; }
; 
; /*************************************************************************
; 用    途:iic發送接收
; Taget   :mega8
; crystal :8M
; 介    紹:PC4-SDA
;          PC5-SCK/SCL
; //***********************************************************************
;  I2C 狀態定義
;  MT 主方式傳輸 MR 主方式接受
; ***************************/
; #define START			0x08
; #define RE_START		0x10
; #define MT_SLA_ACK		0x18
; #define MT_SLA_NOACK 	0x20
; #define MT_DATA_ACK		0x28
; #define MT_DATA_NOACK	0x30
; 
; #define MR_SLA_ACK		0x40
; #define MR_SLA_NOACK	0x48
; #define MR_DATA_ACK		0x50
; #define MR_DATA_NOACK	0x58
; 
; #define RD_DEVICE_ADDR 0xA1  //前4位器件固定,后三位看連線,最后1位是讀寫指令位
; #define WD_DEVICE_ADDR 0xA0
; #define Start()		 (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))		//啟動I2C
; #define Stop()		 (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))		//停止I2C
; #define Wait()		 {while(!(TWCR&(1<<TWINT)));}				//等待中斷發生
; #define TestAck()	 (TWSR&0xf8)								//觀察返回狀態
; #define SetAck		 (TWCR|=(1<<TWEA))							//做出ACK應答
; #define SetNoAck	 (TWCR&=~(1<<TWEA))							//做出Not Ack應答
; #define Twi()		 (TWCR=(1<<TWINT)|(1<<TWEN))				//啟動I2C
; #define Write8Bit(x) {TWDR=(x);TWCR=(1<<TWINT)|(1<<TWEN);}		//寫數據到TWDR
; /*延時子程序*/
; void delay_ms(int time)
; {
	.dbline 68
;  int i;
;  for(;time>0;time--)
	rjmp L7
L4:
	.dbline 69
;   for(i=0;i<1000;i++);
	clr R20
	clr R21
L8:
	.dbline 69
L9:
	.dbline 69
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 69
	cpi R20,232
	ldi R30,3
	cpc R21,R30
	brlt L8
X0:
L5:
	.dbline 68
	subi R16,1
	sbci R17,0
L7:
	.dbline 68
	clr R2
	clr R3
	cp R2,R16
	cpc R3,R17
	brlt L4
X1:
	.dbline -2
L3:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 I
	.dbsym r time 16 I
	.dbend
	.dbfunc e iic_init _iic_init fV
	.even
_iic_init::
	.dbline -1
	.dbline 73
; }
; //初始化
; void iic_init()
; {
	.dbline 74
;  TWBR= 0x20; //設置波特率
	ldi R24,32
	out 0x0,R24
	.dbline 75
;  TWSR= 0x00; //設置預分頻比
	clr R2
	out 0x1,R2
	.dbline 76
;  TWCR= 0x44; //使能應答,使能TWI
	ldi R24,68
	out 0x36,R24
	.dbline 77
;  DDRC|=(1<<PC4)|(1<<PC5);
	in R24,0x14
	ori R24,48
	out 0x14,R24
	.dbline 78
;  PORTC|=(1<<PC4)|(1<<PC5);
	in R24,0x15
	ori R24,48
	out 0x15,R24
	.dbline -2
L12:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e iic_write _iic_write fc
;     RegAddress -> R12
;          Wdata -> R10
	.even
_iic_write::
	st -y,R10
	st -y,R12
	mov R12,R18
	mov R10,R16
	.dbline -1
	.dbline 86
; }
; /*********************************************
; I2C總線寫一個字節
; 返回0:寫成功
; 返回1:寫失敗
; **********************************************/
; unsigned char iic_write(unsigned char Wdata,unsigned char RegAddress)
; {
	.dbline 87
;    Start();						//I2C啟動
	ldi R24,164
	out 0x36,R24
	.dbline 88
;    Wait();
L14:
	.dbline 88
L15:
	.dbline 88
	in R2,0x36
	sbrs R2,7
	rjmp L14
X2:
	.dbline 88
	.dbline 88
	.dbline 89
;    if(TestAck()!=START) 
	in R24,0x1
	andi R24,248
	cpi R24,8
	breq L17
X3:
	.dbline 90
; 	  return 1;					//ACK
	ldi R16,1
	rjmp L13
L17:
	.dbline 92
; 	  
;    Write8Bit(WD_DEVICE_ADDR);	//寫I2C從器件地址和寫方式
	.dbline 92
	ldi R24,160
	out 0x3,R24
	.dbline 92
	ldi R24,132
	out 0x36,R24
	.dbline 92
	.dbline 92
	.dbline 93
;    Wait();
L19:
	.dbline 93
L20:
	.dbline 93
	in R2,0x36
	sbrs R2,7
	rjmp L19
X4:
	.dbline 93
	.dbline 93
	.dbline 94
;    if(TestAck()!=MT_SLA_ACK) 
	in R24,0x1
	andi R24,248
	cpi R24,24
	breq L22
X5:
	.dbline 95
; 	  return 1;		            //ACK
	ldi R16,1
	rjmp L13
L22:
	.dbline 97
; 	  			
;    Write8Bit(RegAddress);		//寫器件相應寄存器地址
	.dbline 97
	out 0x3,R12
	.dbline 97
	ldi R24,132
	out 0x36,R24
	.dbline 97
	.dbline 97
	.dbline 98
;    Wait();
L24:
	.dbline 98
L25:
	.dbline 98
	in R2,0x36
	sbrs R2,7
	rjmp L24
X6:
	.dbline 98
	.dbline 98
	.dbline 99
;    if(TestAck()!=MT_DATA_ACK) 
	in R24,0x1
	andi R24,248
	cpi R24,40
	breq L27
X7:
	.dbline 100
; 	 return 1;				    //ACK
	ldi R16,1
	rjmp L13
L27:
	.dbline 102
; 	 
;    Write8Bit(Wdata);			 	//寫數據到器件相應寄存器
	.dbline 102
	out 0x3,R10
	.dbline 102
	ldi R24,132
	out 0x36,R24
	.dbline 102
	.dbline 102
	.dbline 103
;    Wait();
L29:
	.dbline 103
L30:
	.dbline 103
	in R2,0x36
	sbrs R2,7
	rjmp L29
X8:
	.dbline 103
	.dbline 103
	.dbline 104
;    if(TestAck()!=MT_DATA_ACK) 
	in R24,0x1
	andi R24,248
	cpi R24,40
	breq L32
X9:
	.dbline 105
; 	  return 1;				    //ACK	
	ldi R16,1
	rjmp L13
L32:
	.dbline 107
; 	  
;    Stop();  						//I2C停止
	ldi R24,148
	out 0x36,R24
	.dbline 108
;    delay_ms(100);				//延時
	ldi R16,100
	ldi R17,0
	rcall _delay_ms
	.dbline 109
;    return 0;
	clr R16
	.dbline -2
L13:
	.dbline 0 ; func end
	ld R12,y+
	ld R10,y+
	ret
	.dbsym r RegAddress 12 c
	.dbsym r Wdata 10 c
	.dbend
	.dbfunc e iic_read _iic_read fc
;           temp -> R10
;     RegAddress -> R16,R17
	.even
_iic_read::
	st -y,R10
	.dbline -1
	.dbline 118
; }  
; 
; /*********************************************
; I2C總線讀一個字節
; 返回非0:讀成功
; 返回0:讀失敗
; **********************************************/
; unsigned char iic_read(unsigned RegAddress)
; {
	.dbline 120
;    unsigned char temp;
;    Start();//I2C啟動
	ldi R24,164
	out 0x36,R24
	.dbline 121
;    Wait();
L35:
	.dbline 121
L36:
	.dbline 121
	in R2,0x36
	sbrs R2,7
	rjmp L35
X10:
	.dbline 121
	.dbline 121
	.dbline 122
;    if (TestAck()!=START) 
	in R24,0x1
	andi R24,248
	cpi R24,8
	breq L38
X11:
	.dbline 123
; 	   return 1;			 		//ACK	   
	ldi R16,1
	rjmp L34
L38:
	.dbline 125
; 	   
;    Write8Bit(WD_DEVICE_ADDR);	//寫I2C從器件地址和寫方式
	.dbline 125
	ldi R24,160
	out 0x3,R24
	.dbline 125
	ldi R24,132
	out 0x36,R24
	.dbline 125
	.dbline 125
	.dbline 126
;    Wait(); 
L40:
	.dbline 126
L41:
	.dbline 126
	in R2,0x36
	sbrs R2,7
	rjmp L40
X12:
	.dbline 126
	.dbline 126
	.dbline 127
;    if (TestAck()!=MT_SLA_ACK) 
	in R24,0x1
	andi R24,248
	cpi R24,24
	breq L43
X13:
	.dbline 128
; 	   return 1;				    //ACK
	ldi R16,1
	rjmp L34
L43:
	.dbline 130
; 	   
;    Write8Bit(RegAddress);		//寫器件相應寄存器地址
	.dbline 130
	out 0x3,R16
	.dbline 130
	ldi R24,132
	out 0x36,R24
	.dbline 130
	.dbline 130
	.dbline 131
;    Wait();
L45:
	.dbline 131
L46:
	.dbline 131
	in R2,0x36
	sbrs R2,7
	rjmp L45
X14:
	.dbline 131
	.dbline 131
	.dbline 132
;    if (TestAck()!=MT_DATA_ACK) 
	in R24,0x1
	andi R24,248
	cpi R24,40
	breq L48
X15:
	.dbline 133
; 	   return 1;
	ldi R16,1
	rjmp L34
L48:
	.dbline 135
; 	   
;    Start();	   				   	//I2C重新啟動
	ldi R24,164
	out 0x36,R24
	.dbline 136
;    Wait();
L50:
	.dbline 136
L51:
	.dbline 136
	in R2,0x36
	sbrs R2,7
	rjmp L50
X16:
	.dbline 136
	.dbline 136
	.dbline 137
;    if (TestAck()!=RE_START)  
	in R24,0x1
	andi R24,248
	cpi R24,16
	breq L53
X17:
	.dbline 138
; 	   return 1;
	ldi R16,1
	rjmp L34
L53:
	.dbline 140
; 	   
;    Write8Bit(RD_DEVICE_ADDR);	//寫I2C從器件地址和讀方式
	.dbline 140
	ldi R24,161
	out 0x3,R24
	.dbline 140
	ldi R24,132
	out 0x36,R24
	.dbline 140
	.dbline 140
	.dbline 141
;    Wait();
L55:
	.dbline 141
L56:
	.dbline 141
	in R2,0x36
	sbrs R2,7
	rjmp L55
X18:
	.dbline 141
	.dbline 141
	.dbline 142
;    if(TestAck()!=MR_SLA_ACK)  
	in R24,0x1
	andi R24,248
	cpi R24,64
	breq L58
X19:
	.dbline 143
; 	   return 1;				   //ACK
	ldi R16,1
	rjmp L34
L58:
	.dbline 145
; 	   
;    Twi();	 				   //啟動主I2C讀方式
	ldi R24,132
	out 0x36,R24
	.dbline 146
;    Wait();
L60:
	.dbline 146
L61:
	.dbline 146
	in R2,0x36
	sbrs R2,7
	rjmp L60
X20:
	.dbline 146
	.dbline 146
	.dbline 147
;    if(TestAck()!=MR_DATA_NOACK) 
	in R24,0x1
	andi R24,248
	cpi R24,88
	breq L63
X21:
	.dbline 148
; 	   return 1;					//ACK	
	ldi R16,1
	rjmp L34
L63:
	.dbline 150
; 	   
;    temp=TWDR;        //讀取I2C接收數據
	in R10,0x3
	.dbline 151
;    Stop();          //I2C停止
	ldi R24,148
	out 0x36,R24
	.dbline 152
;    return temp;
	mov R16,R10
	.dbline -2
L34:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r temp 10 c
	.dbsym r RegAddress 16 i
	.dbend
	.dbfunc e main _main fV
;              i -> R20
;              j -> R20
	.even
_main::
	.dbline -1
	.dbline 156
; }
; //****************************************************************************
; void main()
; {
	.dbline 158
;  unsigned char i,j;
;  port_init();
	rcall _port_init
	.dbline 159
;  init_devices();
	rcall _init_devices
	.dbline 161
;  
;  iic_init();
	rcall _iic_init
	.dbline 163
;  
;  i=iic_write(0xaa,0X10);//在0X10地址寫入數據0XAA
	ldi R18,16
	ldi R16,170
	rcall _iic_write
	mov R20,R16
	.dbline 164
;  if (i==1)
	cpi R16,1
	brne L66
X22:
	.dbline 165
;  	PORTB=0x1;//若寫入失敗(i=1),B口0x01;若寫入成功,B口輸出0X02
	ldi R24,1
	out 0x18,R24
	rjmp L67
L66:
	.dbline 167
;  else
;  	PORTB=0x2;
	ldi R24,2
	out 0x18,R24
L67:
	.dbline 168
;  j=iic_read(0X10);//讀出0x10地址的數據
	ldi R16,16
	ldi R17,0
	rcall _iic_read
	mov R20,R16
	.dbline 169
;  if(j==1)
	cpi R16,1
	brne L68
X23:
	.dbline 170
; 	PORTD=0xff;	//若讀出失敗(j=1),D口全滅;若讀出成功,D口輸出0XAA
	ldi R24,255
	out 0x12,R24
	rjmp L71
L68:
	.dbline 172
;  else
; 	PORTD=j;
	out 0x12,R20
L70:
	.dbline 174
;  while(1)
;  {
	.dbline 175
;   ;
	.dbline 176
;  }
L71:
	.dbline 173
	rjmp L70
X24:
	.dbline -2
L65:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 20 c
	.dbend
; }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本v片在线高清不卡在线观看| 不卡大黄网站免费看| 国产电影一区二区三区| 一本色道久久加勒比精品| 欧美一区二区三级| 亚洲欧美激情在线| 国产精品1024| 日韩精品影音先锋| 性久久久久久久| 色综合天天性综合| 中文字幕免费观看一区| 久久99久久99小草精品免视看| 色视频欧美一区二区三区| 久久久青草青青国产亚洲免观| 日韩精品欧美精品| 欧美午夜理伦三级在线观看| 国产精品久久久久一区二区三区| 久久99久久99小草精品免视看| 欧美精品久久久久久久多人混战| 亚洲欧洲日产国码二区| 国产a精品视频| 亚洲精品一区二区三区影院| 日韩精品欧美成人高清一区二区| 欧洲精品中文字幕| 一区二区在线观看免费视频播放| 成人免费的视频| 国产网站一区二区三区| 精品一区二区三区在线观看| 欧美一区二区三区不卡| 日本色综合中文字幕| 欧美一三区三区四区免费在线看| 亚洲电影第三页| 欧美日韩成人在线| 日韩精品亚洲一区二区三区免费| 欧美日韩精品综合在线| 五月天激情综合| 欧美一区二区三区视频免费播放| 日韩av在线发布| 日韩免费性生活视频播放| 久久精品av麻豆的观看方式| 日韩一区二区三区免费看| 蜜桃av一区二区三区| 日韩一区二区三区在线视频| 久久91精品久久久久久秒播| 亚洲精品一区二区三区在线观看| 国内精品久久久久影院色| 欧美精品一区二区在线观看| 国产精品 欧美精品| 亚洲欧洲www| 欧美天天综合网| 青青草原综合久久大伊人精品 | 91在线无精精品入口| 亚洲少妇30p| 欧美日韩国产高清一区二区| 麻豆中文一区二区| 国产嫩草影院久久久久| 日本久久一区二区| 欧美a级一区二区| 国产婷婷一区二区| 午夜精品久久久久| 午夜精品福利久久久| 欧美色手机在线观看| 日本不卡中文字幕| 欧美激情综合网| 91免费国产在线| 久久av老司机精品网站导航| 国产午夜精品在线观看| 在线观看成人小视频| 精品一区二区三区香蕉蜜桃| 国产精品电影一区二区| 884aa四虎影成人精品一区| 国产成人免费视频网站| 亚洲国产视频直播| 久久精品网站免费观看| 欧美日韩在线播放一区| 狠狠色综合播放一区二区| 亚洲天堂福利av| 91精品国产麻豆国产自产在线| 懂色av噜噜一区二区三区av| 日韩精品福利网| 国产精品色眯眯| 欧美tk丨vk视频| 欧美怡红院视频| 成人污污视频在线观看| 日韩高清在线观看| 亚洲欧美电影一区二区| 亚洲精品在线三区| 91精品国产综合久久婷婷香蕉| 国产成人精品影院| 蜜臀久久99精品久久久久宅男| 亚洲人成网站色在线观看| 久久网这里都是精品| 欧美精品在线视频| 日本乱人伦aⅴ精品| 成人精品在线视频观看| 国产一区视频导航| 美脚の诱脚舐め脚责91| 亚洲综合精品久久| 亚洲视频一二区| 国产精品―色哟哟| 国产日产欧美一区二区三区| 日韩欧美一区在线| 欧美日韩一区二区电影| 色综合婷婷久久| 不卡的av电影| 成人动漫一区二区三区| 国产99久久久精品| 黄色日韩网站视频| 久久91精品久久久久久秒播| 日韩av电影免费观看高清完整版在线观看 | 国产寡妇亲子伦一区二区| 日韩影视精彩在线| 日韩一区精品视频| 日本不卡的三区四区五区| 日韩av一级电影| 视频一区二区三区中文字幕| 香蕉久久夜色精品国产使用方法 | 国产午夜精品福利| 久久久国际精品| 国产免费观看久久| 国产清纯白嫩初高生在线观看91 | 成+人+亚洲+综合天堂| 成人精品视频.| 成人av动漫在线| 99国产精品久久久久| 91网址在线看| 欧美视频三区在线播放| 欧美电影一区二区三区| 日韩午夜中文字幕| 国产日韩欧美综合在线| 国产免费观看久久| 亚洲激情在线播放| 亚洲成a人在线观看| 日产国产高清一区二区三区| 久久99国产精品免费| 丁香天五香天堂综合| 成人国产在线观看| 欧美性受xxxx黑人xyx| 日韩一区二区在线看片| 国产肉丝袜一区二区| 国产清纯白嫩初高生在线观看91| 日韩毛片在线免费观看| 亚洲综合免费观看高清完整版 | 精品久久久久久综合日本欧美| 26uuu国产一区二区三区| 国产精品第13页| 亚洲大尺度视频在线观看| 久久精品国产亚洲5555| 国产东北露脸精品视频| 欧美影院午夜播放| 久久奇米777| 亚洲国产日韩一区二区| 久久99精品国产麻豆婷婷洗澡| 成人动漫精品一区二区| 欧美丰满一区二区免费视频 | 国产麻豆精品久久一二三| 91丨国产丨九色丨pron| 欧美一区二区观看视频| 国产精品视频一区二区三区不卡| 亚洲成人免费影院| 成人黄色777网| 日韩欧美亚洲国产另类| 国产精品国产精品国产专区不蜜| 日韩av不卡一区二区| 91网站在线观看视频| 日韩欧美在线1卡| 亚洲久草在线视频| 国产xxx精品视频大全| 欧美日韩亚洲综合在线 | 亚洲高清不卡在线观看| 大桥未久av一区二区三区中文| 欧美日韩成人在线| 亚洲视频在线观看一区| 国产精品456| 欧美一区二区三区啪啪| 亚洲精品日韩一| 国产成人av一区二区三区在线观看| 欧美另类高清zo欧美| 亚洲欧美日韩电影| 成人午夜av在线| 国产夜色精品一区二区av| 日韩成人精品在线观看| 欧美综合一区二区| 亚洲精品国产第一综合99久久| 高潮精品一区videoshd| 精品人在线二区三区| 免费在线欧美视频| 欧美日韩另类一区| 亚洲成人免费电影| 欧美午夜电影网| 一区二区久久久久久| 99精品一区二区三区| 国产精品免费av| 国产成人亚洲综合a∨猫咪| 2023国产精品视频| 久久99最新地址| 欧美成人精品二区三区99精品| 蜜臀久久99精品久久久久宅男| 欧美一区二区三区视频在线观看| 日本亚洲免费观看|