⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 twi.s

📁 mp3代码 要用的干净下啊 希望用东西共享啊
💻 S
📖 第 1 页 / 共 4 页
字号:
L112:
	.dbline 345
	ldi R24,1
	cp R24,R18
	brlo L111
	.dbline 354
;          Twi_WaitForComplete(); 
;          *data++ = TWDR; 
;          length--; 
; 		 WDR(); //喂狗;
;       } 
;       //  接收数据无回应 (末位信号) 
;       Twi_NoAcK(); 
	in R24,0x36
	andi R24,15
	ori R24,128
	out 0x36,R24
	.dbline 355
L117:
	.dbline 355
L118:
	.dbline 355
;       Twi_WaitForComplete(); 
	in R2,0x36
	sbrs R2,7
	rjmp L117
	.dbline 355
	.dbline 355
	.dbline 356
;       *data++ = TWDR; 
	in R2,0x3
	movw R30,R22
	st Z+,R2
	movw R22,R30
	.dbline 357
;    } 
	xjmp L110
L109:
	.dbline 359
;    else 
;    { 
	.dbline 361
;       // 如未回应器件地址,停止发送,返回错误 
;       retval = TWI_ERROR_NODEV; 
	ldi R20,1
	.dbline 362
;    } 
L110:
	.dbline 364
;    // 发送停止条件,保持TWEA以便从接收 
;    Twi_Stop(); 
	in R24,0x36
	andi R24,15
	ori R24,208
	out 0x36,R24
	.dbline 366
;    // 开Twi_中断 
;           TWCR|=TWIE; 
	in R2,0x36
	out 0x36,R2
	.dbline 367
;    return retval; 
	mov R16,R20
	.dbline -2
L102:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r retval 20 c
	.dbsym r data 22 pc
	.dbsym r length 18 c
	.dbsym r deviceAddr 16 c
	.dbend
	.dbfunc e Twi_SlaveReceiveService _Twi_SlaveReceiveService fV
;              i -> R20
	.even
_Twi_SlaveReceiveService::
	xcall push_gset1
	.dbline -1
	.dbline 382
; } 
; /*********************************************************************************************************
; ** 函数名称:Twi_SlaveReceiveService
; ** 功能描述:此函数在本机被选中为从写入时运行 
; ** 输 入:  receiveDataLength:接收数据长度
; **          * receiveData:数据缓冲区指针
; ** 输  出:             
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:
; ** 注意:    
; ** 日 期:   2006年8月29日
; ********************************************************************************************************/
; void Twi_SlaveReceiveService() 
; { 
	.dbline 384
;    uint8 i; 
;    WDR(); //喂狗;
	wdr
	.dbline 387
;   //此函数在本机被选中为从写入时运行 
;    // 接收到的数据存入本地缓冲区
; if((Twi_LocalBuffer.status==TWI_DATA_RECEIVE)&&(Twi_ReceiveBuffer.status==TWI_DATA_RECEIVE))   
	lds R24,_Twi_LocalBuffer+7
	cpi R24,1
	brne L121
	lds R24,_Twi_ReceiveBuffer+7
	cpi R24,1
	brne L121
	.dbline 388
;     {
	.dbline 389
; 	for(i=0;!EmptyQueue(&Twi_ReceiveBuffer); i++) 
	clr R20
	xjmp L128
L125:
	.dbline 390
	.dbline 391
	ldi R16,<_Twi_ReceiveBuffer
	ldi R17,>_Twi_ReceiveBuffer
	xcall _DeQueue
	mov R18,R16
	ldi R16,<_Twi_LocalBuffer
	ldi R17,>_Twi_LocalBuffer
	xcall _EnQueue
	.dbline 392
L126:
	.dbline 389
	inc R20
L128:
	.dbline 389
	lds R2,_Twi_ReceiveBuffer+2
	tst R2
	brne L125
	.dbline 393
	clr R2
	sts _Twi_ReceiveBuffer+7,R2
	.dbline 394
	ldi R24,3
	sts _Twi_LocalBuffer+7,R24
	.dbline 395
L121:
	.dbline -2
L120:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e Twi_SlaveTransmitService _Twi_SlaveTransmitService fc
;              i -> R20
	.even
_Twi_SlaveTransmitService::
	xcall push_gset1
	.dbline -1
	.dbline 409
;          { 
;       	 EnQueue(&Twi_LocalBuffer, DeQueue(&Twi_ReceiveBuffer)); 
;    		 } 
; 	Twi_ReceiveBuffer.status=TWI_DATA_FREE;
; 	Twi_LocalBuffer.status=TWI_DATA_READY;
; 	}
; } 
; /*********************************************************************************************************
; ** 函数名称:Twi_SlaveTransmitService
; ** 功能描述:此函数在本机被选中为从读出时运行 
; ** 输 入:  transmitDataLengthMax
; ** 输  出:             
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:
; ** 注意:    
; ** 日 期:   2006年8月29日
; ********************************************************************************************************/
; uint8 Twi_SlaveTransmitService(void) 
; { 
	.dbline 410
;    uint8 i=0; 
	clr R20
	.dbline 411
;    WDR(); //喂狗;
	wdr
	.dbline 416
;    //此函数在本机被选中为从读出时运行 
;    //要发送的数据存入发送缓冲区
;     
;    
;    if ((Twi_LocalBuffer.status==TWI_DATA_SEND)&&Twi_SendBuffer.status==TWI_DATA_FREE)
	lds R24,_Twi_LocalBuffer+7
	cpi R24,2
	brne L133
	lds R2,_Twi_SendBuffer+7
	tst R2
	brne L133
	.dbline 417
;       {
	.dbline 418
; 	  InitQueue(&Twi_SendBuffer);     //清除上次发送的信息
	ldi R16,<_Twi_SendBuffer
	ldi R17,>_Twi_SendBuffer
	xcall _InitQueue
	.dbline 419
; 	  for(i=0; (Twi_LocalBuffer.count>0)&&(Twi_SendBuffer.errorcode!=QUEUE_OVERFLOW); i++) 
	xjmp L140
L137:
	.dbline 420
	.dbline 421
	ldi R16,<_Twi_LocalBuffer
	ldi R17,>_Twi_LocalBuffer
	xcall _DeQueue
	mov R18,R16
	ldi R16,<_Twi_SendBuffer
	ldi R17,>_Twi_SendBuffer
	xcall _EnQueue
	.dbline 422
L138:
	.dbline 419
	inc R20
L140:
	.dbline 419
	clr R2
	lds R3,_Twi_LocalBuffer+2
	cp R2,R3
	brsh L143
	lds R24,_Twi_SendBuffer+6
	cpi R24,1
	brne L137
L143:
	.dbline 423
;          { 
;       	 EnQueue(&Twi_SendBuffer,DeQueue(&Twi_LocalBuffer)); 
;          }
; 	  Twi_SendBuffer.status= TWI_DATA_SEND;
	ldi R24,2
	sts _Twi_SendBuffer+7,R24
	.dbline 424
; 	  Twi_LocalBuffer.status=TWI_DATA_FREE; 
	clr R2
	sts _Twi_LocalBuffer+7,R2
	.dbline 425
; 	  } 
L133:
	.dbline 426
;    return i; 
	mov R16,R20
	.dbline -2
L132:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area vector(rom, abs)
	.org 76
	jmp _twi_isr
	.area text(rom, con, rel)
	.dbfile D:\桌面\mp3\TWI\TWI.c
	.dbfunc e twi_isr _twi_isr fV
;         status -> R20
	.even
_twi_isr::
	xcall push_lset
	xcall push_gset2
	.dbline -1
	.dbline 441
; } 
; /*********************************************************************************************************
; ** 函数名称:
; ** 功能描述:Twi_ (TWI) 中断服务程序 
; ** 输 入:  
; ** 输  出:             
; ** 全局变量: 
; ** 调用模块: 
; ** 说明:
; ** 注意:    
; ** 日 期:   2006年8月29日
; ********************************************************************************************************/
; #pragma interrupt_handler twi_isr: iv_TWI
; void twi_isr(void) 
; { 
	.dbline 444
;    //读状态位 
;    uint8 status; 
;           status = TWSR & TWSR_STATUS_MASK; 
	in R20,0x1
	andi R20,248
	.dbline 445
;    switch(status) 
	mov R22,R20
	clr R23
	cpi R22,104
	ldi R30,0
	cpc R23,R30
	brne X4
	xjmp L168
X4:
	ldi R24,104
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brge X5
	xjmp L191
X5:
L190:
	cpi R22,48
	ldi R30,0
	cpc R23,R30
	brne X6
	xjmp L157
X6:
	ldi R24,48
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brge X7
	xjmp L193
X7:
L192:
	cpi R22,16
	ldi R30,0
	cpc R23,R30
	brne X8
	xjmp L150
X8:
	ldi R24,16
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L195
L194:
	cpi R22,0
	cpc R22,R23
	brne X9
	xjmp L189
X9:
X1:
	cpi R22,0
	ldi R30,0
	cpc R23,R30
	brge X10
	xjmp L147
X10:
L196:
	cpi R22,8
	ldi R30,0
	cpc R23,R30
	brne X11
	xjmp L150
X11:
	xjmp L147
L195:
	cpi R22,32
	ldi R30,0
	cpc R23,R30
	brne X12
	xjmp L157
X12:
	ldi R24,32
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L198
L197:
	cpi R22,24
	ldi R30,0
	cpc R23,R30
	brne X13
	xjmp L151
X13:
	xjmp L147
L198:
	cpi R22,40
	ldi R30,0
	cpc R23,R30
	brne X14
	xjmp L151
X14:
	xjmp L147
L193:
	cpi R22,72
	ldi R30,0
	cpc R23,R30
	brne X15
	xjmp L157
X15:
	ldi R24,72
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L200
L199:
	cpi R22,56
	ldi R30,0
	cpc R23,R30
	brne X16
	xjmp L158
X16:
	cpi R22,56
	ldi R30,0
	cpc R23,R30
	brge X17
	xjmp L147
X17:
L201:
	cpi R22,64
	ldi R30,0
	cpc R23,R30
	brne X18
	xjmp L160
X18:
	xjmp L147
L200:
	cpi R22,88
	ldi R30,0
	cpc R23,R30
	brne X19
	xjmp L156
X19:
	ldi R24,88
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L203
L202:
	cpi R22,80
	ldi R30,0
	cpc R23,R30
	brne X20
	xjmp L159
X20:
	xjmp L147
L203:
	cpi R22,96
	ldi R30,0
	cpc R23,R30
	brne X21
	xjmp L168
X21:
	xjmp L147
L191:
	cpi R22,160
	ldi R30,0
	cpc R23,R30
	brne X22
	xjmp L180
X22:
	ldi R24,160
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brge X23
	xjmp L205
X23:
L204:
	cpi R22,128
	ldi R30,0
	cpc R23,R30
	brne X24
	xjmp L174
X24:
	ldi R24,128
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L207
L206:
	cpi R22,112
	ldi R30,0
	cpc R23,R30
	brne X25
	xjmp L168
X25:
	cpi R22,112
	ldi R30,0
	cpc R23,R30
	brge X26
	xjmp L147
X26:
L208:
	cpi R22,120
	ldi R30,0
	cpc R23,R30
	brne X27
	xjmp L168
X27:
	xjmp L147
L207:
	cpi R22,144
	ldi R30,0
	cpc R23,R30
	brne X28
	xjmp L174
X28:
	ldi R24,144
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L210
L209:
	cpi R22,136
	ldi R30,0
	cpc R23,R30
	brne X29
	xjmp L179
X29:
	xjmp L147
L210:
	cpi R22,152
	ldi R30,0
	cpc R23,R30
	brne X30
	xjmp L179
X30:
	xjmp L147
L205:
	cpi R22,184
	ldi R30,0
	cpc R23,R30
	brne X31
	xjmp L182
X31:
	ldi R24,184
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L212
L211:
	cpi R22,168
	ldi R30,0
	cpc R23,R30
	brne X32
	xjmp L181
X32:
	cpi R22,168
	ldi R30,0
	cpc R23,R30
	brge X33
	xjmp L147
X33:
L213:
	cpi R22,176
	ldi R30,0
	cpc R23,R30
	brne X34
	xjmp L181
X34:
	xjmp L147
L212:
	cpi R22,200
	ldi R30,0
	cpc R23,R30
	brne X35
	xjmp L186
X35:
	ldi R24,200
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L215
L214:
	cpi R22,192
	ldi R30,0
	cpc R23,R30
	brne X36
	xjmp L186
X36:
	xjmp L147
L215:
	cpi R22,248
	ldi R30,0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -