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

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

?? slaver_1.s

?? ICCavr編寫的TWI總線協(xié)議讀寫函數(shù)
?? S
字號(hào):
	.module slaver_1.c
	.area data(ram, con, rel)
_Date::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile D:\AVR\代碼\ICCdaima\TWI/UART.h
	.dbsym e Date _Date A[4:4]c
	.area text(rom, con, rel)
	.dbfile D:\AVR\代碼\ICCdaima\TWI/UART.h
	.dbfile D:\AVR\代碼\ICCdaima\TWI\slaver_1.c
	.dbfunc e Start _Start fV
	.even
_Start::
	.dbline -1
	.dbline 22
; /* 段傳輝 2008 1.21
;    TWI 從機(jī)的查詢和中斷接收  依靠廣播0X00地址
;    ICCAVR6.31A  chuanhuibh@sina.com
; */
; #include"iom8v.h"
; #include"UART.h"
; #include"delay.h"
; #define  uchar  unsigned char
; #define  STATUS  (TWSR&0xf8)
; #define  SLA_W    0x32
; #define  SLA_R    0x33
; #define  TWI_ADDRESS        0x32
; #define  START              0x08
; #define  RE_START           0x10
; #define  MT_SLA_WRITE_ACK   0x18
; #define  MT_SLA_READ_ACK    0x40 
; #define  MT_DATA_ACK        0x28
; #define  MT_READ_ACK        0x58  
; #define TW_SR_DATA_ACK		0x80   
; 
; void Start(void)
; {
	.dbline 23
;  TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
	ldi R24,164
	out 0x36,R24
L2:
	.dbline 24
L3:
	.dbline 24
;  while(!(TWCR&(1<<TWINT)));
	in R2,0x36
	sbrs R2,7
	rjmp L2
	.dbline -2
	.dbline 25
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Stop _Stop fV
	.even
_Stop::
	.dbline -1
	.dbline 27
; void Stop(void)
; {
	.dbline 28
;  TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
	ldi R24,148
	out 0x36,R24
	.dbline -2
	.dbline 29
; }
L5:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Load _Load fV
;              i -> R16
	.even
_Load::
	.dbline -1
	.dbline 31
; void Load(uchar i)
; {
	.dbline 32
;  TWDR=i;
	out 0x3,R16
	.dbline 33
;  TWCR=(1<<TWINT)|(1<<TWEN);
	ldi R24,132
	out 0x36,R24
L7:
	.dbline 34
L8:
	.dbline 34
;  while(!(TWCR&(1<<TWINT))); 
	in R2,0x36
	sbrs R2,7
	rjmp L7
	.dbline -2
	.dbline 36
; 
; }
L6:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e Get _Get fV
;              d -> R16,R17
	.even
_Get::
	.dbline -1
	.dbline 39
; 
; void Get(unsigned char *d)
; {
	.dbline 40
;  TWCR=(1<<TWINT)|(1<<TWEN);
	ldi R24,132
	out 0x36,R24
L11:
	.dbline 41
L12:
	.dbline 41
;  while(!(TWCR&(1<<TWINT)));
	in R2,0x36
	sbrs R2,7
	rjmp L11
	.dbline 42
;  *d= TWDR;
	in R2,0x3
	movw R30,R16
	std z+0,R2
	.dbline -2
	.dbline 43
; }/**/
L10:
	.dbline 0 ; func end
	ret
	.dbsym r d 16 pc
	.dbend
	.dbfunc e ERROR _ERROR fV
;          state -> R20
	.even
_ERROR::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 45
; void ERROR(uchar state)
; {Stop();
	.dbline 45
	rcall _Stop
	.dbline -2
	.dbline 46
; }
L14:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r state 20 c
	.dbend
	.dbfunc e WriteByte _WriteByte fc
;           data -> R20
	.even
_WriteByte::
	rcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 51
; 
; /*寫一個(gè)字節(jié)data,成功則返回1,否則
;   返回0*/
; uchar WriteByte(uchar data)
; {
	.dbline 53
;    //啟動(dòng)I2C
;    Start();
	rcall _Start
	.dbline 54
;    if(STATUS!=START) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,8
	breq L16
	.dbline 54
	.dbline 54
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 54
	clr R16
	rjmp L15
L16:
	.dbline 57
;    
;    //發(fā)送從機(jī)地址(寫),等待回應(yīng), 錯(cuò)誤檢測(cè)
;    Load(SLA_W);
	ldi R16,50
	rcall _Load
	.dbline 58
;    if(STATUS!=MT_SLA_WRITE_ACK) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,24
	breq L18
	.dbline 58
	.dbline 58
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 58
	clr R16
	rjmp L15
L18:
	.dbline 65
;    /*
;    //發(fā)送EEPROM地址,等待回應(yīng),錯(cuò)誤檢測(cè)
;    Load(addr);
;    if(STATUS!=MT_DATA_ACK) {ERROR(STATUS);return 0;}
;    */
;    //發(fā)送數(shù)據(jù),等待回應(yīng),錯(cuò)誤檢測(cè)
;    Load(data);
	mov R16,R20
	rcall _Load
	.dbline 66
;     if(STATUS!=MT_DATA_ACK) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,40
	breq L20
	.dbline 66
	.dbline 66
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 66
	clr R16
	rjmp L15
L20:
	.dbline 68
;    
;    Stop();
	rcall _Stop
	.dbline 69
;    return 1;//發(fā)送成功,返回1;
	ldi R16,1
	.dbline -2
L15:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r data 20 c
	.dbend
	.dbfunc e ReadByte _ReadByte fc
;         p_data -> R20,R21
;           addr -> R22
	.even
_ReadByte::
	rcall push_gset2
	movw R20,R18
	mov R22,R16
	.dbline -1
	.dbline 77
;    
;    
;   
; }
; 
; unsigned char ReadByte(unsigned char addr,
;                        unsigned char *p_data)
; {
	.dbline 79
;  //啟動(dòng)I2C
;    Start();
	rcall _Start
	.dbline 80
;    if(STATUS!=START) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,8
	breq L23
	.dbline 80
	.dbline 80
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 80
	clr R16
	rjmp L22
L23:
	.dbline 83
;    
;  //發(fā)送從機(jī)地址(寫),等待回應(yīng), 錯(cuò)誤檢測(cè)
;    Load(SLA_W);
	ldi R16,50
	rcall _Load
	.dbline 84
;    if(STATUS!=MT_SLA_WRITE_ACK) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,24
	breq L25
	.dbline 84
	.dbline 84
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 84
	clr R16
	rjmp L22
L25:
	.dbline 87
;  
;  //發(fā)送EEPROM地址,等待回應(yīng),錯(cuò)誤檢測(cè)
;    Load(addr);
	mov R16,R22
	rcall _Load
	.dbline 88
;    if(STATUS!=MT_DATA_ACK) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,40
	breq L27
	.dbline 88
	.dbline 88
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 88
	clr R16
	rjmp L22
L27:
	.dbline 91
;  
;  //再次啟動(dòng)I2C
;    Start();
	rcall _Start
	.dbline 92
;    if(STATUS!=RE_START) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,16
	breq L29
	.dbline 92
	.dbline 92
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 92
	clr R16
	rjmp L22
L29:
	.dbline 95
;  
;  //發(fā)送從機(jī)地址(讀),等待回應(yīng), 錯(cuò)誤檢測(cè)
;    Load(SLA_R);
	ldi R16,51
	rcall _Load
	.dbline 96
;    if(STATUS!=MT_SLA_READ_ACK) {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,64
	breq L31
	.dbline 96
	.dbline 96
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 96
	clr R16
	rjmp L22
L31:
	.dbline 99
;  
;  //讀取I2C數(shù)據(jù)
;     Get(p_data);
	movw R16,R20
	rcall _Get
	.dbline 100
;  if(STATUS!=MT_READ_ACK)  {ERROR(STATUS);return 0;}
	in R24,0x1
	andi R24,248
	cpi R24,88
	breq L33
	.dbline 100
	.dbline 100
	in R16,0x1
	andi R16,248
	rcall _ERROR
	.dbline 100
	clr R16
	rjmp L22
L33:
	.dbline 103
; 	
;  //發(fā)送Stop,結(jié)束讀I2C操作。
;   Stop();
	rcall _Stop
	.dbline 104
;   return 1;
	ldi R16,1
	.dbline -2
L22:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r p_data 20 pc
	.dbsym r addr 22 c
	.dbend
	.dbfunc e Init_Io _Init_Io fV
	.even
_Init_Io::
	.dbline -1
	.dbline 110
;  
;    
;    
; }/**/
; void Init_Io(void)
; {
	.dbline 111
;  DDRC&=~((1<<PC4)&(1<<PC5)&(1<<PC2));  
	in R24,0x14
	andi R24,255
	out 0x14,R24
	.dbline 112
;  PORTC|= (1<<PC4)|(1<<PC5)|(1<<PC2);
	in R24,0x15
	ori R24,52
	out 0x15,R24
	.dbline 115
;  
; 	//TWI接口初始化,從器件模式
;  TWAR=TWI_ADDRESS | (1<<TWGCE);
	ldi R24,51
	out 0x2,R24
	.dbline 116
;  TWCR=(1<<TWEA) | (1<<TWEN)|(1<<TWIE);
	ldi R24,69
	out 0x36,R24
	.dbline 117
;  asm("SEI");
	SEI
	.dbline -2
	.dbline 118
; }
L35:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 120
; void main()
; {
	.dbline 122
;  // uchar temp1,temp2;
;   Init_Io();
	rcall _Init_Io
	.dbline 123
;   uart_init();
	rcall _uart_init
	.dbline 124
;   puts("串口正常工作");
	ldi R16,<L37
	ldi R17,>L37
	rcall _puts
L38:
	.dbline 126
	.dbline 140
L39:
	.dbline 125
	rjmp L38
X0:
	.dbline -2
	.dbline 142
;   while(1)
;   { /*
;     TWCR=(1<<TWINT)|(1<<TWEA) | (1<<TWEN); //啟動(dòng)一次接收
;     while((TWCR&(1<<TWINT))==0); //等待有數(shù)據(jù)被接收
; 	//Delay_nms(100);
; 	temp1=STATUS;
; 	temp2=TWDR;
; 	//putchar(temp1);
; 	if(temp1==0x90)
; 	{ 
; 	  puts("接受到:");
; 	  putchar(temp2);
; 	 }
; 	*/
; 	
;    }
;  
; }
L36:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 34
	rjmp _TWI_ISR
	.area text(rom, con, rel)
	.dbfile D:\AVR\代碼\ICCdaima\TWI\slaver_1.c
	.dbfunc e TWI_ISR _TWI_ISR fV
;          temp2 -> R20
;          temp1 -> R22
	.even
_TWI_ISR::
	rcall push_lset
	rcall push_gset2
	.dbline -1
	.dbline 145
; #pragma interrupt_handler TWI_ISR:18
; void TWI_ISR(void)
; {
	.dbline 147
;  uchar temp1,temp2;
;  temp1=STATUS;
	in R22,0x1
	andi R22,248
	.dbline 148
;  temp2=TWDR;
	in R20,0x3
	.dbline 149
;  if(temp1==0x90)
	cpi R22,144
	brne L42
	.dbline 150
; 	{ 
	.dbline 151
; 	  puts("接受到:");
	ldi R16,<L44
	ldi R17,>L44
	rcall _puts
	.dbline 152
; 	  putchar(temp2);
	mov R16,R20
	rcall _putchar
	.dbline 153
; 	 }
L42:
	.dbline 154
; TWCR=(1<<TWINT)|(1<<TWEA) | (1<<TWEN)|(1<<TWIE); //啟動(dòng)一次接收
	ldi R24,197
	out 0x36,R24
	.dbline -2
	.dbline 156
; 
; }
L41:
	rcall pop_gset2
	rcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym r temp2 20 c
	.dbsym r temp1 22 c
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\AVR\代碼\ICCdaima\TWI\slaver_1.c
L44:
	.blkb 8
	.area idata
	.byte 189,211,202,220,181,189,58,0
	.area data(ram, con, rel)
	.dbfile D:\AVR\代碼\ICCdaima\TWI\slaver_1.c
L37:
	.blkb 13
	.area idata
	.byte 180,174,191,218,213,253,179,163,185,164,215,247,0
	.area data(ram, con, rel)
	.dbfile D:\AVR\代碼\ICCdaima\TWI\slaver_1.c

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本久久精品电影| 日韩亚洲电影在线| 日韩欧美一级二级| 欧美日韩国产a| 777奇米四色成人影色区| 欧美日韩一区二区三区四区五区| 色老汉一区二区三区| 91麻豆成人久久精品二区三区| caoporen国产精品视频| 97se亚洲国产综合自在线 | 成人黄色大片在线观看| 国产99久久久久久免费看农村| 丁香另类激情小说| 色综合天天综合网国产成人综合天| 91美女在线看| 欧美伦理视频网站| 欧美一区二区三区公司| 精品久久人人做人人爽| 国产视频在线观看一区二区三区| 国产目拍亚洲精品99久久精品| 国产精品不卡在线观看| 亚洲一区二区三区不卡国产欧美| 亚洲丶国产丶欧美一区二区三区| 视频在线观看一区二区三区| 男人的天堂久久精品| 国产精选一区二区三区| 9人人澡人人爽人人精品| 色88888久久久久久影院按摩| 欧美系列一区二区| 欧美一区二区视频在线观看2020| 精品sm在线观看| 国产精品超碰97尤物18| 亚洲国产日韩在线一区模特| 另类小说图片综合网| 成人av网址在线观看| 欧美日韩www| 国产婷婷一区二区| 亚洲国产精品一区二区www| 久久99热这里只有精品| 91在线精品一区二区三区| 91精品国产品国语在线不卡| 日本一区二区三区国色天香| 亚洲一区二区免费视频| 国产麻豆精品theporn| 色婷婷综合久久久久中文| 欧美α欧美αv大片| 亚洲欧洲日韩综合一区二区| 蜜臀久久久久久久| 91麻豆福利精品推荐| 久久亚洲一级片| 欧美日韩午夜在线视频| 精品处破学生在线二十三| 国产精品理伦片| 奇米精品一区二区三区四区| 波多野结衣在线一区| 亚洲免费观看高清完整版在线观看| 无码av中文一区二区三区桃花岛| 国产成人一区在线| 91.com视频| 亚洲精品国产无天堂网2021| 黑人巨大精品欧美黑白配亚洲| 91福利国产精品| 国产欧美日韩三区| 蜜臀久久99精品久久久画质超高清| 色天天综合色天天久久| 久久九九全国免费| 蜜臀av一区二区在线观看| 99久久婷婷国产综合精品| 久久青草欧美一区二区三区| 日本网站在线观看一区二区三区| 色又黄又爽网站www久久| 久久精品在线免费观看| 日本欧美在线观看| 欧洲精品中文字幕| 综合久久给合久久狠狠狠97色| 狠狠色丁香九九婷婷综合五月| 欧美精品色综合| 亚洲一区精品在线| 色婷婷国产精品| 中文字幕一区二区三区精华液| 国内精品写真在线观看| 欧美精品在线观看播放| 亚洲综合男人的天堂| 92精品国产成人观看免费| 国产精品蜜臀在线观看| 国产成人免费9x9x人网站视频| 欧美videofree性高清杂交| 日本欧美大码aⅴ在线播放| 欧美亚洲丝袜传媒另类| 精品亚洲免费视频| 日韩1区2区日韩1区2区| 欧美中文字幕一二三区视频| 国产精品美女久久久久久久| 国产高清不卡二三区| 久久综合九色综合97婷婷| 奇米在线7777在线精品| 欧美精品自拍偷拍| 亚洲va欧美va天堂v国产综合| 日本丶国产丶欧美色综合| 亚洲人成精品久久久久久 | 欧美日韩大陆一区二区| 一区二区三区欧美在线观看| 91亚洲精华国产精华精华液| 亚洲天堂久久久久久久| 99re热这里只有精品视频| 日韩码欧中文字| 91麻豆视频网站| 亚洲综合清纯丝袜自拍| 欧美日韩一区二区欧美激情| 偷窥少妇高潮呻吟av久久免费| 欧美日韩国产123区| 日韩精品亚洲一区二区三区免费| 制服.丝袜.亚洲.中文.综合| 91黄色免费网站| 亚洲自拍偷拍图区| 欧美人与z0zoxxxx视频| 蜜臀国产一区二区三区在线播放| 欧美成人精品高清在线播放| 国产综合色精品一区二区三区| 久久品道一品道久久精品| 成人福利电影精品一区二区在线观看| 国产精品美女久久久久av爽李琼| 成人视屏免费看| 亚洲三级在线观看| 欧美日韩精品系列| 久久国产生活片100| 国产欧美一区二区精品性色超碰| 国产.欧美.日韩| 一区二区三区日韩在线观看| 欧美日韩成人激情| 国产精品综合二区| 自拍偷拍亚洲欧美日韩| 欧美日韩高清影院| 国内成人免费视频| 亚洲欧美另类久久久精品| 欧美日韩在线一区二区| 狠狠色综合色综合网络| 中文字幕精品一区二区三区精品| 欧美美女一区二区在线观看| 免费不卡在线视频| 欧美一区二区在线免费观看| 亚洲尤物视频在线| 欧美丝袜丝nylons| 日本成人在线不卡视频| 中文一区二区在线观看| 欧美日韩一区二区在线视频| 国产乱子伦一区二区三区国色天香| 欧美精品 国产精品| 亚洲一二三四久久| 久久你懂得1024| 日本精品一区二区三区高清| 久久国产尿小便嘘嘘尿| 毛片基地黄久久久久久天堂| 中文字幕精品一区| 欧美精品乱码久久久久久按摩 | 国产精品一区在线观看乱码| 亚洲精品视频免费观看| 日韩精品一区二区在线观看| 色综合色综合色综合| 精品一区二区免费| 一区二区三区蜜桃网| 久久精品亚洲精品国产欧美kt∨ | 亚洲综合视频在线观看| 久久久91精品国产一区二区三区| 欧美日韩日日摸| 成人激情综合网站| 久久99蜜桃精品| 亚洲国产精品一区二区尤物区| 欧美激情中文字幕| 日韩欧美你懂的| 日本高清成人免费播放| 精品国产成人在线影院| 在线观看欧美黄色| 成人精品gif动图一区| 蜜桃精品视频在线| 亚洲第一综合色| 亚洲欧美中日韩| 久久―日本道色综合久久| 欧美日韩亚洲高清一区二区| 99久久精品情趣| 国产成人综合在线| 六月丁香婷婷色狠狠久久| 亚洲电影第三页| 亚洲精品成a人| 成人免费在线观看入口| 国产农村妇女精品| 久久一区二区三区四区| 91精品国产综合久久精品性色| 欧洲av在线精品| 色94色欧美sute亚洲线路二| 精品国产乱码久久久久久影片| 91麻豆精品国产91久久久久| 日本精品裸体写真集在线观看| 99精品一区二区三区| 国产成人久久精品77777最新版本| 久久精品国产一区二区| 蜜桃av噜噜一区| 美国av一区二区| 九一久久久久久| 老司机精品视频导航|