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

📄 d12ci.s

📁 Atmeag162-k9f5608-pdiusbd12-u usb接口 u盘源码 包括fat文件源码
💻 S
字号:
	.module D12CI.C
	.area text(rom, con, rel)
	.dbfile D:\AvrUSB\D12CI.C
	.dbfunc e D12_SetEndpointEnable _D12_SetEndpointEnable fV
;        bEnable -> R16
	.even
_D12_SetEndpointEnable::
	.dbline -1
	.dbline 11
; #include <macros.h>
; #include "D12CI.h"
; #include "MAIN.h"
; 
; #define cwait  asm("nop")
; #define cwait1 asm("nop");asm("nop")
; 
; extern EPPFLAGS bEPPflags;
; 
; void D12_SetEndpointEnable(unsigned char bEnable)
; {
	.dbline 12
;    D12_COMMAND=0xD8;
	ldi R24,216
	sts 31745,R24
	.dbline 13
;    if(bEnable)
	tst R16
	breq L2
	.dbline 14
;      D12_DATA=1;
	ldi R24,1
	sts 31744,R24
	xjmp L3
L2:
	.dbline 16
	clr R2
	sts 31744,R2
L3:
	.dbline -2
	.dbline 17
;    else
;      D12_DATA=0;  
; }
L1:
	.dbline 0 ; func end
	ret
	.dbsym r bEnable 16 c
	.dbend
	.dbfunc e D12_SetAddressEnable _D12_SetAddressEnable fV
;        bEnable -> R18
;       bAddress -> R16
	.even
_D12_SetAddressEnable::
	.dbline -1
	.dbline 19
; void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
; {
	.dbline 20
;   D12_COMMAND=0xD0;
	ldi R24,208
	sts 31745,R24
	.dbline 21
;   if(bEnable)
	tst R18
	breq L5
	.dbline 22
;      bAddress|=0x80;
	ori R16,128
L5:
	.dbline 23
;   D12_DATA=bAddress; 
	sts 31744,R16
	.dbline -2
	.dbline 24
; }
L4:
	.dbline 0 ; func end
	ret
	.dbsym r bEnable 18 c
	.dbsym r bAddress 16 c
	.dbend
	.dbfunc e D12_SetMode _D12_SetMode fV
;        bClkDiv -> R18
;        bConfig -> R16
	.even
_D12_SetMode::
	.dbline -1
	.dbline 26
; void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
; {
	.dbline 27
;    D12_COMMAND=0xF3;
	ldi R24,243
	sts 31745,R24
	.dbline 28
;    D12_DATA=bConfig;
	sts 31744,R16
	.dbline 29
;    cwait1;
	nop
	.dbline 29
	nop
	.dbline 30
;    D12_DATA=bClkDiv;  
	sts 31744,R18
	.dbline -2
	.dbline 31
; }
L7:
	.dbline 0 ; func end
	ret
	.dbsym r bClkDiv 18 c
	.dbsym r bConfig 16 c
	.dbend
	.dbfunc e D12_SetDMA _D12_SetDMA fV
;          bMode -> R16
	.even
_D12_SetDMA::
	.dbline -1
	.dbline 33
; void D12_SetDMA(unsigned char bMode)
; {
	.dbline 34
;    D12_COMMAND=0xFB;
	ldi R24,251
	sts 31745,R24
	.dbline 35
;    cwait;
	nop
	.dbline 36
;    D12_DATA=bMode;
	sts 31744,R16
	.dbline -2
	.dbline 37
; }
L8:
	.dbline 0 ; func end
	ret
	.dbsym r bMode 16 c
	.dbend
	.dbfunc e D12_ReadInterruptRegister _D12_ReadInterruptRegister fc
;              j -> R18
;             bl -> R16
	.even
_D12_ReadInterruptRegister::
	.dbline -1
	.dbline 39
; unsigned char D12_ReadInterruptRegister(void)
; {
	.dbline 42
;    unsigned char bl;
;    unsigned char j;
;    j=0;
	clr R18
	.dbline 43
;    D12_COMMAND=0xF4;
	ldi R24,244
	sts 31745,R24
	.dbline 44
;    cwait;
	nop
	.dbline 45
;    bl=D12_DATA;
	lds R16,31744
	.dbline 46
;    cwait1;
	nop
	.dbline 46
	nop
	.dbline 47
;    j=D12_DATA;
	lds R18,31744
	.dbline 48
;    return bl;
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbsym r j 18 c
	.dbsym r bl 16 c
	.dbend
	.dbfunc e D12_SelectEndpoint _D12_SelectEndpoint fc
;              c -> R20
;          bEndp -> R16
	.even
_D12_SelectEndpoint::
	xcall push_gset1
	.dbline -1
	.dbline 51
; }
; unsigned char D12_SelectEndpoint(unsigned char bEndp)
; {
	.dbline 53
;    unsigned char c;
;    D12_COMMAND=bEndp;
	sts 31745,R16
	.dbline 54
;    cwait;
	nop
	.dbline 55
;    c=D12_DATA;
	lds R20,31744
	.dbline 56
;    return c;
	mov R16,R20
	.dbline -2
L10:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r c 20 c
	.dbsym r bEndp 16 c
	.dbend
	.dbfunc e D12_ReadLastTransactionStatus _D12_ReadLastTransactionStatus fc
;          bEndp -> R16
	.even
_D12_ReadLastTransactionStatus::
	.dbline -1
	.dbline 59
; }
; unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
; {
	.dbline 60
;    D12_COMMAND=0x40+bEndp;
	mov R24,R16
	subi R24,192    ; addi 64
	sts 31745,R24
	.dbline 61
;    cwait;   
	nop
	.dbline 62
;    return D12_DATA;
	lds R16,31744
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbsym r bEndp 16 c
	.dbend
	.dbfunc e D12_ReadEndpointStatus _D12_ReadEndpointStatus fc
;          bEndp -> R16
	.even
_D12_ReadEndpointStatus::
	.dbline -1
	.dbline 65
; }
; unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
; {
	.dbline 66
;    D12_COMMAND=0x80+bEndp;
	mov R24,R16
	subi R24,128    ; addi 128
	sts 31745,R24
	.dbline 67
;    cwait;
	nop
	.dbline 68
;    return D12_DATA;
	lds R16,31744
	.dbline -2
L12:
	.dbline 0 ; func end
	ret
	.dbsym r bEndp 16 c
	.dbend
	.dbfunc e D12_SetEndpointStatus _D12_SetEndpointStatus fV
;              c -> <dead>
;       bStalled -> R18
;          bEndp -> R16
	.even
_D12_SetEndpointStatus::
	.dbline -1
	.dbline 71
; }
; void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
; {
	.dbline 73
;    unsigned char c;
;    D12_COMMAND=0x40+bEndp;
	mov R24,R16
	subi R24,192    ; addi 64
	sts 31745,R24
	.dbline 74
;    cwait;
	nop
	.dbline 75
;    D12_DATA=bStalled;
	sts 31744,R18
	.dbline -2
	.dbline 76
; }
L13:
	.dbline 0 ; func end
	ret
	.dbsym l c 1 c
	.dbsym r bStalled 18 c
	.dbsym r bEndp 16 c
	.dbend
	.dbfunc e D12_ReadEndpoint _D12_ReadEndpoint fc
;              j -> R20
;              i -> R22
;            buf -> R10,R11
;            len -> R18
;           endp -> R16
	.even
_D12_ReadEndpoint::
	xcall push_gset3
	ldd R10,y+6
	ldd R11,y+7
	.dbline -1
	.dbline 79
; unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len,
;                                unsigned char * buf)
; {
	.dbline 81
;   unsigned char i,j;
;    D12_COMMAND=endp;
	sts 31745,R16
	.dbline 82
;    cwait;
	nop
	.dbline 83
;    if((D12_DATA&D12_FULLEMPTY)==0)
	lds R2,31744
	sbrc R2,0
	rjmp L15
	.dbline 84
;         return 0;
	clr R16
	xjmp L14
L15:
	.dbline 85
;    D12_COMMAND=(0x80+endp);
	mov R24,R16
	subi R24,128    ; addi 128
	sts 31745,R24
	.dbline 86
;    cwait;
	nop
	.dbline 87
;    i=D12_DATA;
	lds R22,31744
	.dbline 88
;    i=i&0x60;
	andi R22,96
	.dbline 89
;    if(endp==2)
	cpi R16,2
	brne L17
	.dbline 90
;    {
	.dbline 91
;      if(i==0x60)
	cpi R22,96
	brne L19
	.dbline 92
; 	   bEPPflags.bits.ep1buf_full=1;
	lds R24,_bEPPflags
	lds R25,_bEPPflags+1
	ori R25,4
	sts _bEPPflags+1,R25
	sts _bEPPflags,R24
	xjmp L20
L19:
	.dbline 94
; 	 else
; 	   bEPPflags.bits.ep1buf_full=0; 
	lds R24,_bEPPflags
	lds R25,_bEPPflags+1
	andi R25,251
	sts _bEPPflags+1,R25
	sts _bEPPflags,R24
L20:
	.dbline 95
;    }
L17:
	.dbline 96
;    if(endp==4)
	cpi R16,4
	brne L21
	.dbline 97
;    {
	.dbline 98
;      if(i==0x60)
	cpi R22,96
	brne L23
	.dbline 99
; 	   bEPPflags.bits.mainbuf_full=1;
	lds R24,_bEPPflags
	lds R25,_bEPPflags+1
	ori R25,128
	sts _bEPPflags+1,R25
	sts _bEPPflags,R24
	xjmp L24
L23:
	.dbline 101
; 	 else
; 	   bEPPflags.bits.mainbuf_full=0; 
	lds R24,_bEPPflags
	lds R25,_bEPPflags+1
	andi R25,127
	sts _bEPPflags+1,R25
	sts _bEPPflags,R24
L24:
	.dbline 102
;    }		
L21:
	.dbline 103
;    D12_COMMAND=0xF0;
	ldi R24,240
	sts 31745,R24
	.dbline 104
;    cwait;
	nop
	.dbline 105
;    j=D12_DATA;
	lds R20,31744
	.dbline 106
;    cwait1;
	nop
	.dbline 106
	nop
	.dbline 107
;    j=D12_DATA;
	lds R20,31744
	.dbline 108
;    if(j>len)j=len;
	cp R18,R20
	brsh L25
	.dbline 108
	mov R20,R18
L25:
	.dbline 109
;    for(i=0;i<j;i++)
	clr R22
	xjmp L30
L27:
	.dbline 110
	.dbline 111
	mov R30,R22
	clr R31
	add R30,R10
	adc R31,R11
	lds R2,31744
	std z+0,R2
	.dbline 112
	nop
	.dbline 112
	nop
	.dbline 113
L28:
	.dbline 109
	inc R22
L30:
	.dbline 109
	cp R22,R20
	brlo L27
	.dbline 114
;    {
;        *(buf+i)=D12_DATA;
; 	   cwait1;
;    }   
;    D12_COMMAND=0xF2;
	ldi R24,242
	sts 31745,R24
	.dbline 115
;    cwait;
	nop
	.dbline 116
;    return j;
	mov R16,R20
	.dbline -2
L14:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 22 c
	.dbsym r buf 10 pc
	.dbsym r len 18 c
	.dbsym r endp 16 c
	.dbend
	.dbfunc e D12_WriteEndpoint _D12_WriteEndpoint fc
;              i -> R20
;            buf -> R22,R23
;            len -> R18
;           endp -> R16
	.even
_D12_WriteEndpoint::
	xcall push_gset2
	ldd R22,y+4
	ldd R23,y+5
	.dbline -1
	.dbline 120
; }
; unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len,
;                                 unsigned char * buf)
; {
	.dbline 122
;    unsigned char i;   
;    D12_COMMAND=endp;
	sts 31745,R16
	.dbline 123
;    D12_DATA;
	.dbline 124
;    D12_COMMAND=0xF0;
	ldi R24,240
	sts 31745,R24
	.dbline 125
;    cwait;
	nop
	.dbline 126
;    D12_DATA=0;
	clr R2
	sts 31744,R2
	.dbline 127
;    cwait1;
	nop
	.dbline 127
	nop
	.dbline 128
;    D12_DATA=len;
	sts 31744,R18
	.dbline 129
;    for(i=0;i<len;i++)
	clr R20
	xjmp L35
L32:
	.dbline 130
	.dbline 131
	mov R30,R20
	clr R31
	add R30,R22
	adc R31,R23
	ldd R2,z+0
	sts 31744,R2
	.dbline 132
	nop
	.dbline 132
	nop
	.dbline 133
L33:
	.dbline 129
	inc R20
L35:
	.dbline 129
	cp R20,R18
	brlo L32
	.dbline 134
;    {
;        D12_DATA=*(buf+i);
; 	   cwait1;
;    }	   
;    D12_COMMAND=0xFA;
	ldi R24,250
	sts 31745,R24
	.dbline 135
;    cwait;
	nop
	.dbline 136
;    return len;
	mov R16,R18
	.dbline -2
L31:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r buf 22 pc
	.dbsym r len 18 c
	.dbsym r endp 16 c
	.dbend
	.dbfunc e D12_CWriteEndpoint _D12_CWriteEndpoint fc
;              i -> R20
;            buf -> R22,R23
;            len -> R18
;           endp -> R16
	.even
_D12_CWriteEndpoint::
	xcall push_gset2
	ldd R22,y+4
	ldd R23,y+5
	.dbline -1
	.dbline 140
; }
; unsigned char D12_CWriteEndpoint(unsigned char endp, unsigned char len,
;                                  const unsigned char * buf)
; {
	.dbline 142
;    unsigned char i;   
;    D12_COMMAND=endp;
	sts 31745,R16
	.dbline 143
;    cwait;
	nop
	.dbline 144
;    D12_DATA;
	.dbline 145
;    cwait;
	nop
	.dbline 146
;    D12_COMMAND=0xF0;
	ldi R24,240
	sts 31745,R24
	.dbline 147
;    cwait;
	nop
	.dbline 148
;    D12_DATA=0;
	clr R2
	sts 31744,R2
	.dbline 149
;    cwait1;
	nop
	.dbline 149
	nop
	.dbline 150
;    D12_DATA=len;
	sts 31744,R18
	.dbline 151
;    for(i=0;i<len;i++)
	clr R20
	xjmp L40
L37:
	.dbline 152
	.dbline 153
	mov R30,R20
	clr R31
	add R30,R22
	adc R31,R23
	lpm R30,Z
	sts 31744,R30
	.dbline 154
	nop
	.dbline 154
	nop
	.dbline 155
L38:
	.dbline 151
	inc R20
L40:
	.dbline 151
	cp R20,R18
	brlo L37
	.dbline 156
;    {
;       D12_DATA=*(buf+i);
; 	  cwait1;
;    }    
;    D12_COMMAND=0xFA;
	ldi R24,250
	sts 31745,R24
	.dbline 157
;    return len;
	mov R16,R18
	.dbline -2
L36:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r buf 22 pkc
	.dbsym r len 18 c
	.dbsym r endp 16 c
	.dbend
	.dbfunc e D12_AcknowledgeEndpoint _D12_AcknowledgeEndpoint fV
;           endp -> R16
	.even
_D12_AcknowledgeEndpoint::
	.dbline -1
	.dbline 160
	.dbline 161
	sts 31745,R16
	.dbline 162
	nop
	.dbline 163
	ldi R24,241
	sts 31745,R24
	.dbline 164
	tst R16
	brne L42
	.dbline 165
	ldi R24,242
	sts 31745,R24
L42:
	.dbline -2
	.dbline 166
; }
; void D12_AcknowledgeEndpoint(unsigned char endp)
; {
;    D12_COMMAND=endp;
;    cwait;
;    D12_COMMAND=0xF1;
;    if(endp==0)
;       D12_COMMAND=0xF2; 
; }
L41:
	.dbline 0 ; func end
	ret
	.dbsym r endp 16 c
	.dbend

⌨️ 快捷键说明

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