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

📄 d12_setup.lis

📁 D12固件程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00B6           ;       D12_DATA = 0x01;
 00B6 81E0              ldi R24,1
 00B8 8093007F          sts 32512,R24
 00BC                   .dbline 64
 00BC           ;       cwait;
 00BC 0000              nop
 00BE                   .dbline 65
 00BE           ;       D12_COMMAND = 0xf1;// 应答SETUP包,使能(清 OUT 缓冲区、使能 IN 缓冲区)命令
 00BE 81EF              ldi R24,241
 00C0 8093017F          sts 32513,R24
 00C4                   .dbline 66
 00C4           ;       csram;
 00C4 609301FC          sts 0xfc01,R22
 00C8                   .dbline 66
 00C8                   .dbline -2
 00C8                   .dbline 67
 00C8           ; }
 00C8           L17:
 00C8                   .dbline 0 ; func end
 00C8 0895              ret
 00CA                   .dbend
 00CA                   .dbfunc e get_status _get_status fV
                        .even
 00CA           _get_status::
 00CA 00D0              rcall push_gset1
 00CC                   .dbline -1
 00CC                   .dbline 70
 00CC           ; 
 00CC           ; void get_status(void)
 00CC           ; {
 00CC                   .dbline 71
 00CC           ;       XmtBuff.b[1] = 0x00;
 00CC 2224              clr R2
 00CE 20920100          sts _XmtBuff+1,R2
 00D2                   .dbline 72
 00D2           ;       switch (XmtBuff.b[0])
 00D2 40910000          lds R20,_XmtBuff
 00D6 5527              clr R21
 00D8 4038              cpi R20,128
 00DA E0E0              ldi R30,0
 00DC 5E07              cpc R21,R30
 00DE 49F0              breq L23
 00E0 4138              cpi R20,129
 00E2 E0E0              ldi R30,0
 00E4 5E07              cpc R21,R30
 00E6 49F0              breq L24
 00E8 4238              cpi R20,130
 00EA E0E0              ldi R30,0
 00EC 5E07              cpc R21,R30
 00EE 49F0              breq L25
 00F0 0BC0              rjmp L20
 00F2           X0:
 00F2                   .dbline 73
 00F2           ;       {
 00F2           L23:
 00F2                   .dbline 76
 00F2           ;       case 0x80://返回设备状态
 00F2           ;                         //发送两个字节数据:第一字节D1为1支持远程唤醒,D0为0是总线供电,其它位为0;第二字节为0。
 00F2           ;               XmtBuff.b[0] = 0x03;
 00F2 83E0              ldi R24,3
 00F4 80930000          sts _XmtBuff,R24
 00F8                   .dbline 77
 00F8           ;               break;
 00F8 07C0              rjmp L21
 00FA           L24:
 00FA                   .dbline 81
 00FA           ;       case 0x81://返回接口状态
 00FA           ;               //发送两个字节数据:第一字节为0;第二字节为0。
 00FA           ;               //XmtBuff.b[5] 为接口号
 00FA           ;               XmtBuff.b[0] = 0x00;
 00FA 2224              clr R2
 00FC 20920000          sts _XmtBuff,R2
 0100                   .dbline 82
 0100           ;               break;
 0100 03C0              rjmp L21
 0102           L25:
 0102                   .dbline 86
 0102           ;       case 0x82://返回端点状态
 0102           ;               //发送两个字节数据:第一字节D0为1端点处于暂停,否则D0为0,其它位为0;第二字节为0。
 0102           ;               //XmtBuff.b[5] D7为方向,D3~0为端点号
 0102           ;               XmtBuff.b[0] = 0x00;
 0102 2224              clr R2
 0104 20920000          sts _XmtBuff,R2
 0108                   .dbline 87
 0108           ;               break;
 0108           L20:
 0108           L21:
 0108                   .dbline 89
 0108           ;       }
 0108           ;       XmtBuff.p_p=0;
 0108 2224              clr R2
 010A 20922700          sts _XmtBuff+39,R2
 010E                   .dbline 90
 010E           ;       XmtBuff.wrLength = 2;
 010E 82E0              ldi R24,2
 0110 80932200          sts _XmtBuff+34,R24
 0114                   .dbline 91
 0114           ;       XmtBuff.p = XmtBuff.b;
 0114 80E0              ldi R24,<_XmtBuff
 0116 90E0              ldi R25,>_XmtBuff
 0118 90932600          sts _XmtBuff+37+1,R25
 011C 80932500          sts _XmtBuff+37,R24
 0120                   .dbline 92
 0120           ;       USB_submit();
 0120 23D1              rcall _USB_submit
 0122                   .dbline -2
 0122                   .dbline 93
 0122           ; }
 0122           L18:
 0122 00D0              rcall pop_gset1
 0124                   .dbline 0 ; func end
 0124 0895              ret
 0126                   .dbend
 0126                   .dbfunc e clear_feature _clear_feature fV
 0126           ;              j -> R20
                        .even
 0126           _clear_feature::
 0126 00D0              rcall push_gset1
 0128                   .dbline -1
 0128                   .dbline 96
 0128           ; 
 0128           ; void clear_feature(void)
 0128           ; {
 0128                   .dbline 98
 0128           ; char j;
 0128           ;       switch (XmtBuff.b[0])
 0128 40910000          lds R20,_XmtBuff
 012C 5527              clr R21
 012E 4030              cpi R20,0
 0130 4507              cpc R20,R21
 0132 29F1              breq L31
 0134           X1:
 0134 4130              cpi R20,1
 0136 E0E0              ldi R30,0
 0138 5E07              cpc R21,R30
 013A 09F1              breq L31
 013C 4230              cpi R20,2
 013E E0E0              ldi R30,0
 0140 5E07              cpc R21,R30
 0142 09F0              breq L35
 0144 1CC0              rjmp L30
 0146           X2:
 0146                   .dbline 99
 0146           ;       {
 0146                   .dbline 101
 0146           ;       case 0x00://清设备唤醒功能
 0146           ;               break;
 0146                   .dbline 103
 0146           ;       case 0x01://清接口状态
 0146           ;               break;
 0146           L35:
 0146                   .dbline 106
 0146           ;       case 0x02://启用端点
 0146           ;               //XmtBuff.b[5] D7为方向,D3~0为端点号
 0146           ;               j = XmtBuff.b[5];
 0146 40910500          lds R20,_XmtBuff+5
 014A                   .dbline 107
 014A           ;               if(j<0x80)
 014A 4038              cpi R20,128
 014C 60F4              brsh L37
 014E                   .dbline 108
 014E           ;               {
 014E                   .dbline 109
 014E           ;                       j = 0x40+j*2;
 014E 82E0              ldi R24,2
 0150 849F              mul R24,R20
 0152 402D              mov R20,R0
 0154 405C              subi R20,192    ; addi 64
 0156                   .dbline 110
 0156           ;                       D12_COMMAND = j;// 启用OUT端点
 0156 4093017F          sts 32513,R20
 015A                   .dbline 111
 015A           ;                       D12_DATA = 0x00;
 015A 2224              clr R2
 015C 2092007F          sts 32512,R2
 0160                   .dbline 112
 0160           ;                       csram;
 0160 609301FC          sts 0xfc01,R22
 0164                   .dbline 112
 0164                   .dbline 113
 0164           ;               }
 0164 0CC0              rjmp L31
 0166           L37:
 0166                   .dbline 115
 0166           ;               else
 0166           ;               {
 0166                   .dbline 116
 0166           ;                       j = (j & 0x0f);
 0166 4F70              andi R20,15
 0168                   .dbline 117
 0168           ;                       D12_COMMAND = 0x41+j*2;// 启用IN端点
 0168 82E0              ldi R24,2
 016A 849F              mul R24,R20
 016C 802D              mov R24,R0
 016E 8F5B              subi R24,191    ; addi 65
 0170 8093017F          sts 32513,R24
 0174                   .dbline 118
 0174           ;                       D12_DATA = 0x00;
 0174 2224              clr R2
 0176 2092007F          sts 32512,R2
 017A                   .dbline 119
 017A           ;                       csram;
 017A 609301FC          sts 0xfc01,R22
 017E                   .dbline 119
 017E                   .dbline 120
 017E           ;               }
 017E                   .dbline 121
 017E           ;               break;
 017E           L30:
 017E           L31:
 017E                   .dbline 123
 017E           ;       }
 017E           ;       XmtBuff.wrLength = 0;
 017E 2224              clr R2
 0180 20922200          sts _XmtBuff+34,R2
 0184                   .dbline 124
 0184           ;       USB_submit();
 0184 F1D0              rcall _USB_submit
 0186                   .dbline -2
 0186                   .dbline 125
 0186           ; }
 0186           L29:
 0186 00D0              rcall pop_gset1
 0188                   .dbline 0 ; func end
 0188 0895              ret
 018A                   .dbsym r j 20 c
 018A                   .dbend
 018A                   .dbfunc e set_feature _set_feature fV
 018A           ;              j -> R20
                        .even
 018A           _set_feature::
 018A 00D0              rcall push_gset1
 018C                   .dbline -1
 018C                   .dbline 128
 018C           ; 
 018C           ; void set_feature(void)
 018C           ; {
 018C                   .dbline 130
 018C           ; char j;
 018C           ;       switch (XmtBuff.b[0])
 018C 40910000          lds R20,_XmtBuff
 0190 5527              clr R21
 0192 4030              cpi R20,0
 0194 4507              cpc R20,R21
 0196 39F1              breq L42
 0198           X3:
 0198 4130              cpi R20,1
 019A E0E0              ldi R30,0
 019C 5E07              cpc R21,R30
 019E 19F1              breq L42
 01A0 4230              cpi R20,2
 01A2 E0E0              ldi R30,0
 01A4 5E07              cpc R21,R30
 01A6 09F0              breq L46
 01A8 1EC0              rjmp L41
 01AA           X4:
 01AA                   .dbline 131
 01AA           ;       {
 01AA                   .dbline 133
 01AA           ;       case 0x00://设置设备唤醒功能
 01AA           ;               break;
 01AA                   .dbline 135
 01AA           ;       case 0x01://设置接口状态
 01AA           ;               break;
 01AA           L46:
 01AA                   .dbline 138
 01AA           ;       case 0x02://停止端点
 01AA           ;               //XmtBuff.b[5] D7为方向,D3~0为端点号
 01AA           ;               j = XmtBuff.b[5];
 01AA 40910500          lds R20,_XmtBuff+5
 01AE                   .dbline 139
 01AE           ;               if(j<0x80)
 01AE 4038              cpi R20,128
 01B0 68F4              brsh L48
 01B2                   .dbline 140
 01B2           ;               {
 01B2                   .dbline 141
 01B2           ;                       j = 0x40+j * 2;
 01B2 82E0              ldi R24,2
 01B4 849F              mul R24,R20
 01B6 402D              mov R20,R0
 01B8 405C              subi R20,192    ; addi 64
 01BA                   .dbline 142
 01BA           ;                       D12_COMMAND = j;// 停止OUT端点
 01BA 4093017F          sts 32513,R20
 01BE                   .dbline 143
 01BE           ;                       cwait;
 01BE 0000              nop
 01C0                   .dbline 144
 01C0           ;                       D12_DATA = 0x01;
 01C0 81E0              ldi R24,1
 01C2 8093007F          sts 32512,R24
 01C6                   .dbline 145
 01C6           ;                       csram;
 01C6 609301FC          sts 0xfc01,R22
 01CA                   .dbline 145
 01CA                   .dbline 146
 01CA           ;               }
 01CA 0DC0              rjmp L42
 01CC           L48:
 01CC                   .dbline 148
 01CC           ;               else
 01CC           ;               {
 01CC                   .dbline 149
 01CC           ;                       j = j & 0x0f;
 01CC 4F70              andi R20,15
 01CE                   .dbline 150
 01CE           ;                       j = 0x41+j*2;
 01CE 82E0              ldi R24,2
 01D0 849F              mul R24,R20
 01D2 402D              mov R20,R0
 01D4 4F5B              subi R20,191    ; addi 65
 01D6                   .dbline 151
 01D6           ;                       D12_COMMAND = j;// 停止IN端点
 01D6 4093017F          sts 32513,R20
 01DA                   .dbline 152
 01DA           ;                       cwait;
 01DA 0000              nop
 01DC                   .dbline 153
 01DC           ;                       D12_DATA = 0x01;
 01DC 81E0              ldi R24,1
 01DE 8093007F          sts 32512,R24
 01E2                   .dbline 154
 01E2           ;                       csram;
 01E2 609301FC          sts 0xfc01,R22

⌨️ 快捷键说明

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