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

📄 d12ci.lis

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module D12CI.C
                        .area text(rom, con, rel)
 0000                   .dbfile D:\AvrUSB\D12CI.C
 0000                   .dbfunc e D12_SetEndpointEnable _D12_SetEndpointEnable fV
 0000           ;        bEnable -> R16
                        .even
 0000           _D12_SetEndpointEnable::
 0000                   .dbline -1
 0000                   .dbline 11
 0000           ; #include <macros.h>
 0000           ; #include "D12CI.h"
 0000           ; #include "MAIN.h"
 0000           ; 
 0000           ; #define cwait  asm("nop")
 0000           ; #define cwait1 asm("nop");asm("nop")
 0000           ; 
 0000           ; extern EPPFLAGS bEPPflags;
 0000           ; 
 0000           ; void D12_SetEndpointEnable(unsigned char bEnable)
 0000           ; {
 0000                   .dbline 12
 0000           ;    D12_COMMAND=0xD8;
 0000 88ED              ldi R24,216
 0002 8093017C          sts 31745,R24
 0006                   .dbline 13
 0006           ;    if(bEnable)
 0006 0023              tst R16
 0008 21F0              breq L2
 000A                   .dbline 14
 000A           ;      D12_DATA=1;
 000A 81E0              ldi R24,1
 000C 8093007C          sts 31744,R24
 0010 03C0              xjmp L3
 0012           L2:
 0012                   .dbline 16
 0012 2224              clr R2
 0014 2092007C          sts 31744,R2
 0018           L3:
 0018                   .dbline -2
 0018                   .dbline 17
 0018           ;    else
 0018           ;      D12_DATA=0;  
 0018           ; }
 0018           L1:
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbsym r bEnable 16 c
 001A                   .dbend
 001A                   .dbfunc e D12_SetAddressEnable _D12_SetAddressEnable fV
 001A           ;        bEnable -> R18
 001A           ;       bAddress -> R16
                        .even
 001A           _D12_SetAddressEnable::
 001A                   .dbline -1
 001A                   .dbline 19
 001A           ; void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
 001A           ; {
 001A                   .dbline 20
 001A           ;   D12_COMMAND=0xD0;
 001A 80ED              ldi R24,208
 001C 8093017C          sts 31745,R24
 0020                   .dbline 21
 0020           ;   if(bEnable)
 0020 2223              tst R18
 0022 09F0              breq L5
 0024                   .dbline 22
 0024           ;      bAddress|=0x80;
 0024 0068              ori R16,128
 0026           L5:
 0026                   .dbline 23
 0026           ;   D12_DATA=bAddress; 
 0026 0093007C          sts 31744,R16
 002A                   .dbline -2
 002A                   .dbline 24
 002A           ; }
 002A           L4:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r bEnable 18 c
 002C                   .dbsym r bAddress 16 c
 002C                   .dbend
 002C                   .dbfunc e D12_SetMode _D12_SetMode fV
 002C           ;        bClkDiv -> R18
 002C           ;        bConfig -> R16
                        .even
 002C           _D12_SetMode::
 002C                   .dbline -1
 002C                   .dbline 26
 002C           ; void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
 002C           ; {
 002C                   .dbline 27
 002C           ;    D12_COMMAND=0xF3;
 002C 83EF              ldi R24,243
 002E 8093017C          sts 31745,R24
 0032                   .dbline 28
 0032           ;    D12_DATA=bConfig;
 0032 0093007C          sts 31744,R16
 0036                   .dbline 29
 0036           ;    cwait1;
 0036 0000              nop
 0038                   .dbline 29
 0038 0000              nop
 003A                   .dbline 30
 003A           ;    D12_DATA=bClkDiv;  
 003A 2093007C          sts 31744,R18
 003E                   .dbline -2
 003E                   .dbline 31
 003E           ; }
 003E           L7:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbsym r bClkDiv 18 c
 0040                   .dbsym r bConfig 16 c
 0040                   .dbend
 0040                   .dbfunc e D12_SetDMA _D12_SetDMA fV
 0040           ;          bMode -> R16
                        .even
 0040           _D12_SetDMA::
 0040                   .dbline -1
 0040                   .dbline 33
 0040           ; void D12_SetDMA(unsigned char bMode)
 0040           ; {
 0040                   .dbline 34
 0040           ;    D12_COMMAND=0xFB;
 0040 8BEF              ldi R24,251
 0042 8093017C          sts 31745,R24
 0046                   .dbline 35
 0046           ;    cwait;
 0046 0000              nop
 0048                   .dbline 36
 0048           ;    D12_DATA=bMode;
 0048 0093007C          sts 31744,R16
 004C                   .dbline -2
 004C                   .dbline 37
 004C           ; }
 004C           L8:
 004C                   .dbline 0 ; func end
 004C 0895              ret
 004E                   .dbsym r bMode 16 c
 004E                   .dbend
 004E                   .dbfunc e D12_ReadInterruptRegister _D12_ReadInterruptRegister fc
 004E           ;              j -> R18
 004E           ;             bl -> R16
                        .even
 004E           _D12_ReadInterruptRegister::
 004E                   .dbline -1
 004E                   .dbline 39
 004E           ; unsigned char D12_ReadInterruptRegister(void)
 004E           ; {
 004E                   .dbline 42
 004E           ;    unsigned char bl;
 004E           ;    unsigned char j;
 004E           ;    j=0;
 004E 2227              clr R18
 0050                   .dbline 43
 0050           ;    D12_COMMAND=0xF4;
 0050 84EF              ldi R24,244
 0052 8093017C          sts 31745,R24
 0056                   .dbline 44
 0056           ;    cwait;
 0056 0000              nop
 0058                   .dbline 45
 0058           ;    bl=D12_DATA;
 0058 0091007C          lds R16,31744
 005C                   .dbline 46
 005C           ;    cwait1;
 005C 0000              nop
 005E                   .dbline 46
 005E 0000              nop
 0060                   .dbline 47
 0060           ;    j=D12_DATA;
 0060 2091007C          lds R18,31744
 0064                   .dbline 48
 0064           ;    return bl;
 0064                   .dbline -2
 0064           L9:
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbsym r j 18 c
 0066                   .dbsym r bl 16 c
 0066                   .dbend
 0066                   .dbfunc e D12_SelectEndpoint _D12_SelectEndpoint fc
 0066           ;              c -> R20
 0066           ;          bEndp -> R16
                        .even
 0066           _D12_SelectEndpoint::
 0066 0E940000          xcall push_gset1
 006A                   .dbline -1
 006A                   .dbline 51
 006A           ; }
 006A           ; unsigned char D12_SelectEndpoint(unsigned char bEndp)
 006A           ; {
 006A                   .dbline 53
 006A           ;    unsigned char c;
 006A           ;    D12_COMMAND=bEndp;
 006A 0093017C          sts 31745,R16
 006E                   .dbline 54
 006E           ;    cwait;
 006E 0000              nop
 0070                   .dbline 55
 0070           ;    c=D12_DATA;
 0070 4091007C          lds R20,31744
 0074                   .dbline 56
 0074           ;    return c;
 0074 042F              mov R16,R20
 0076                   .dbline -2
 0076           L10:
 0076 0E940000          xcall pop_gset1
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbsym r c 20 c
 007C                   .dbsym r bEndp 16 c
 007C                   .dbend
 007C                   .dbfunc e D12_ReadLastTransactionStatus _D12_ReadLastTransactionStatus fc
 007C           ;          bEndp -> R16
                        .even
 007C           _D12_ReadLastTransactionStatus::
 007C                   .dbline -1
 007C                   .dbline 59
 007C           ; }
 007C           ; unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
 007C           ; {
 007C                   .dbline 60
 007C           ;    D12_COMMAND=0x40+bEndp;
 007C 802F              mov R24,R16
 007E 805C              subi R24,192    ; addi 64
 0080 8093017C          sts 31745,R24
 0084                   .dbline 61
 0084           ;    cwait;   
 0084 0000              nop
 0086                   .dbline 62
 0086           ;    return D12_DATA;
 0086 0091007C          lds R16,31744
 008A                   .dbline -2
 008A           L11:
 008A                   .dbline 0 ; func end
 008A 0895              ret
 008C                   .dbsym r bEndp 16 c
 008C                   .dbend
 008C                   .dbfunc e D12_ReadEndpointStatus _D12_ReadEndpointStatus fc
 008C           ;          bEndp -> R16
                        .even
 008C           _D12_ReadEndpointStatus::
 008C                   .dbline -1
 008C                   .dbline 65
 008C           ; }
 008C           ; unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
 008C           ; {
 008C                   .dbline 66
 008C           ;    D12_COMMAND=0x80+bEndp;
 008C 802F              mov R24,R16
 008E 8058              subi R24,128    ; addi 128
 0090 8093017C          sts 31745,R24
 0094                   .dbline 67
 0094           ;    cwait;
 0094 0000              nop
 0096                   .dbline 68
 0096           ;    return D12_DATA;
 0096 0091007C          lds R16,31744
 009A                   .dbline -2
 009A           L12:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r bEndp 16 c
 009C                   .dbend
 009C                   .dbfunc e D12_SetEndpointStatus _D12_SetEndpointStatus fV
 009C           ;              c -> <dead>
 009C           ;       bStalled -> R18
 009C           ;          bEndp -> R16
                        .even
 009C           _D12_SetEndpointStatus::
 009C                   .dbline -1
 009C                   .dbline 71
 009C           ; }
 009C           ; void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
 009C           ; {
 009C                   .dbline 73
 009C           ;    unsigned char c;
 009C           ;    D12_COMMAND=0x40+bEndp;
 009C 802F              mov R24,R16
 009E 805C              subi R24,192    ; addi 64
 00A0 8093017C          sts 31745,R24
 00A4                   .dbline 74
 00A4           ;    cwait;
 00A4 0000              nop
 00A6                   .dbline 75
 00A6           ;    D12_DATA=bStalled;
 00A6 2093007C          sts 31744,R18
 00AA                   .dbline -2
 00AA                   .dbline 76
 00AA           ; }
 00AA           L13:
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbsym l c 1 c
 00AC                   .dbsym r bStalled 18 c
 00AC                   .dbsym r bEndp 16 c
 00AC                   .dbend
 00AC                   .dbfunc e D12_ReadEndpoint _D12_ReadEndpoint fc
 00AC           ;              j -> R20
 00AC           ;              i -> R22
 00AC           ;            buf -> R10,R11
 00AC           ;            len -> R18
 00AC           ;           endp -> R16
                        .even
 00AC           _D12_ReadEndpoint::
 00AC 0E940000          xcall push_gset3
 00B0 AE80              ldd R10,y+6
 00B2 BF80              ldd R11,y+7
 00B4                   .dbline -1
 00B4                   .dbline 79
 00B4           ; unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len,
 00B4           ;                                unsigned char * buf)
 00B4           ; {
 00B4                   .dbline 81
 00B4           ;   unsigned char i,j;
 00B4           ;    D12_COMMAND=endp;
 00B4 0093017C          sts 31745,R16
 00B8                   .dbline 82
 00B8           ;    cwait;
 00B8 0000              nop
 00BA                   .dbline 83
 00BA           ;    if((D12_DATA&D12_FULLEMPTY)==0)
 00BA 2090007C          lds R2,31744
 00BE 20FC              sbrc R2,0
 00C0 02C0              rjmp L15
 00C2                   .dbline 84
 00C2           ;         return 0;
 00C2 0027              clr R16
 00C4 56C0              xjmp L14
 00C6           L15:
 00C6                   .dbline 85
 00C6           ;    D12_COMMAND=(0x80+endp);
 00C6 802F              mov R24,R16
 00C8 8058              subi R24,128    ; addi 128
 00CA 8093017C          sts 31745,R24
 00CE                   .dbline 86
 00CE           ;    cwait;
 00CE 0000              nop
 00D0                   .dbline 87
 00D0           ;    i=D12_DATA;
 00D0 6091007C          lds R22,31744
 00D4                   .dbline 88
 00D4           ;    i=i&0x60;
 00D4 6076              andi R22,96
 00D6                   .dbline 89
 00D6           ;    if(endp==2)
 00D6 0230              cpi R16,2
 00D8 A9F4              brne L17
 00DA                   .dbline 90
 00DA           ;    {

⌨️ 快捷键说明

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