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

📄 usb.ls1

📁 一个通过D12与计算机进行USB通信的单片机程序,开发者可以参考
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     741                             ; SOURCE LINE # 33
003C AF00     F      742             MOV     R7,bEPPflags
003E EF              743             MOV     A,R7
003F 54FD            744             ANL     A,#0FDH
0041 F500     F      745             MOV     bEPPflags,A
                     746     ;                       ENABLE;
                     747                             ; SOURCE LINE # 34
0043 D2AF            748             SETB    EA
                     749     ;                       // Release D12's SUSPEND pin after bus reset
                     750     ;                       // Enable 74HCT123 pulse generation before disconnect
                     751     ;                       D12SUSPD = 1;
                     752                             ; SOURCE LINE # 37
0045 D2B3            753             SETB    D12SUSPD
                     754     ;               }
                     755                             ; SOURCE LINE # 38
0047                 756     ?C0005:
                     757     ;               if (bEPPflags.bits.suspend)
                     758                             ; SOURCE LINE # 39
0047 AF00     F      759             MOV     R7,bEPPflags
0049 EF              760             MOV     A,R7
004A 13              761             RRC     A
004B 13              762             RRC     A
004C 543F            763             ANL     A,#03FH
004E 30E028          764             JNB     ACC.0,?C0006
                     765     ;               {                                                       //挂起改变处理
                     766                             ; SOURCE LINE # 40
                     767     ;                       DISABLE;
                     768                             ; SOURCE LINE # 41
0051 C2AF            769             CLR     EA
                     770     ;                       bEPPflags.bits.suspend= 0;
                     771                             ; SOURCE LINE # 42
0053 AF00     F      772             MOV     R7,bEPPflags
0055 EF              773             MOV     A,R7
0056 54FB            774             ANL     A,#0FBH
0058 F500     F      775             MOV     bEPPflags,A
                     776     ;                       ENABLE;
                     777                             ; SOURCE LINE # 43
005A D2AF            778             SETB    EA
                     779     ;                       if(D12SUSPD == 1)
                     780                             ; SOURCE LINE # 44
005C 30B31A          781             JNB     D12SUSPD,?C0006
                     782     ;                       {                                               //挂起处理
                     783                             ; SOURCE LINE # 45
A51 MACRO ASSEMBLER  USB                                                                  07/13/2004 13:08:43 PAGE    15

                     784     ;                               D12SUSPD = 0;
                     785                             ; SOURCE LINE # 46
005F C2B3            786             CLR     D12SUSPD
                     787     ;                               P0 = 0xFF;
                     788                             ; SOURCE LINE # 47
0061 7580FF          789             MOV     P0,#0FFH
                     790     ;                               P1 = 0xFF;
                     791                             ; SOURCE LINE # 48
0064 7590FF          792             MOV     P1,#0FFH
                     793     ;                               P2 = 0xFF;
                     794                             ; SOURCE LINE # 49
0067 75A0FF          795             MOV     P2,#0FFH
                     796     ;                               P3 = 0xFF;
                     797                             ; SOURCE LINE # 50
006A 75B0FF          798             MOV     P3,#0FFH
                     799     ;                               D12_SetDMA(0xC3);
                     800                             ; SOURCE LINE # 51
006D 7FC3            801             MOV     R7,#0C3H
006F 120000   F      802             LCALL   _D12_SetDMA
                     803     ;                               D12SUSPD = 1;
                     804                             ; SOURCE LINE # 52
0072 D2B3            805             SETB    D12SUSPD
                     806     ;                               PCON |= 0x02;
                     807                             ; SOURCE LINE # 53
0074 438702          808             ORL     PCON,#02H
0077                 809     ?C0008:
                     810     ;                               while (1);
                     811                             ; SOURCE LINE # 54
0077 80FE            812             SJMP    ?C0008
                     813     ;                       }
                     814                             ; SOURCE LINE # 55
                     815     ;               }
                     816                             ; SOURCE LINE # 56
0079                 817     ?C0006:
                     818     ;               if (bEPPflags.bits.setup_packet)
                     819                             ; SOURCE LINE # 57
0079 AF00     F      820             MOV     R7,bEPPflags
007B EF              821             MOV     A,R7
007C 13              822             RRC     A
007D 13              823             RRC     A
007E 13              824             RRC     A
007F 541F            825             ANL     A,#01FH
0081 30E010          826             JNB     ACC.0,?C0010
                     827     ;               {                                                       //Setup包处理
                     828                             ; SOURCE LINE # 58
                     829     ;                       DISABLE;
                     830                             ; SOURCE LINE # 59
0084 C2AF            831             CLR     EA
                     832     ;                       bEPPflags.bits.setup_packet = 0;
                     833                             ; SOURCE LINE # 60
0086 AF00     F      834             MOV     R7,bEPPflags
0088 EF              835             MOV     A,R7
0089 54F7            836             ANL     A,#0F7H
008B F500     F      837             MOV     bEPPflags,A
                     838     ;                       ENABLE;
                     839                             ; SOURCE LINE # 61
008D D2AF            840             SETB    EA
                     841     ;                       control_handler();              //调用请求处理子程序
                     842                             ; SOURCE LINE # 62
008F 120000   F      843             LCALL   control_handler
                     844     ;                       D12SUSPD = 1;
                     845                             ; SOURCE LINE # 63
0092 D2B3            846             SETB    D12SUSPD
                     847     ;               }
                     848                             ; SOURCE LINE # 64
0094                 849     ?C0010:
A51 MACRO ASSEMBLER  USB                                                                  07/13/2004 13:08:43 PAGE    16

                     850     ;               if(bEPPflags.bits.ep1_rxdone)
                     851                             ; SOURCE LINE # 65
0094 AF00     F      852             MOV     R7,bEPPflags+01H
0096 EF              853             MOV     A,R7
0097 13              854             RRC     A
0098 13              855             RRC     A
0099 543F            856             ANL     A,#03FH
009B 30E014          857             JNB     ACC.0,?C0011
                     858     ;               {
                     859                             ; SOURCE LINE # 66
                     860     ;                       D12_WriteEndpoint(3,rcv_data_len,GenEpBuf);
                     861                             ; SOURCE LINE # 67
009E 7B00            862             MOV     R3,#00H
00A0 7A00     F      863             MOV     R2,#HIGH (GenEpBuf)
00A2 7900     F      864             MOV     R1,#LOW (GenEpBuf)
00A4 AD00     F      865             MOV     R5,rcv_data_len
00A6 7F03            866             MOV     R7,#03H
00A8 120000   F      867             LCALL   _D12_WriteEndpoint
                     868     ;             bEPPflags.bits.ep1_rxdone = 0 ;
                     869                             ; SOURCE LINE # 68
00AB AF00     F      870             MOV     R7,bEPPflags+01H
00AD EF              871             MOV     A,R7
00AE 54FB            872             ANL     A,#0FBH
00B0 F500     F      873             MOV     bEPPflags+01H,A
                     874     ;               }
                     875                             ; SOURCE LINE # 69
00B2                 876     ?C0011:
                     877     ;               if(bEPPflags.bits.ep2_rxdone)
                     878                             ; SOURCE LINE # 70
00B2 AF00     F      879             MOV     R7,bEPPflags+02H
00B4 EF              880             MOV     A,R7
00B5 20E003          881             JB      ACC.0,$ + 6H
00B8 020000   F      882             LJMP    ?C0001
                     883     ;               {
                     884                             ; SOURCE LINE # 71
                     885     ;                       D12_WriteEndpoint(5,rcv_data_len,EpBuf);
                     886                             ; SOURCE LINE # 72
00BB 7B00            887             MOV     R3,#00H
00BD 7A00     F      888             MOV     R2,#HIGH (EpBuf)
00BF 7900     F      889             MOV     R1,#LOW (EpBuf)
00C1 AD00     F      890             MOV     R5,rcv_data_len
00C3 7F05            891             MOV     R7,#05H
00C5 120000   F      892             LCALL   _D12_WriteEndpoint
                     893     ;             bEPPflags.bits.ep2_rxdone = 0 ;
                     894                             ; SOURCE LINE # 73
00C8 AF00     F      895             MOV     R7,bEPPflags+02H
00CA EF              896             MOV     A,R7
00CB 54FE            897             ANL     A,#0FEH
00CD F500     F      898             MOV     bEPPflags+02H,A
                     899     ;               }
                     900                             ; SOURCE LINE # 74
                     901     ;       }
                     902                             ; SOURCE LINE # 75
00CF 020000   F      903             LJMP    ?C0001
                     904     ; END OF main
                     905     
                     906     ; }
                     907     ; 
                     908     ; //返回stall应答
                     909     ; void stall_ep0(void)
                     910     
----                 911             RSEG  ?PR?stall_ep0?USB
0000                 912     stall_ep0:
                     913             USING   0
                     914                             ; SOURCE LINE # 79
                     915     ; {
A51 MACRO ASSEMBLER  USB                                                                  07/13/2004 13:08:43 PAGE    17

                     916                             ; SOURCE LINE # 80
                     917     ;       D12_SetEndpointStatus(0, 1);
                     918                             ; SOURCE LINE # 81
0000 120000   F      919             LCALL   L?0215
                     920     ;       D12_SetEndpointStatus(1, 1);
                     921                             ; SOURCE LINE # 82
0003 7D01            922             MOV     R5,#01H
0005 7F01            923             MOV     R7,#01H
0007 020000   F      924             LJMP    _D12_SetEndpointStatus
                     925     ; END OF stall_ep0
                     926     
                     927     ; }
                     928     ; 
                     929     ; //断开USB总线
                     930     ; void disconnect_USB(void)
                     931     
----                 932             RSEG  ?PR?disconnect_USB?USB
0000                 933     disconnect_USB:
                     934             USING   0
                     935                             ; SOURCE LINE # 86
                     936     ; {
                     937                             ; SOURCE LINE # 87
                     938     ;       // Initialize D12 configuration
                     939     ;       D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
                     940                             ; SOURCE LINE # 89
0000 7D43            941             MOV     R5,#043H
0002 7F02            942             MOV     R7,#02H
0004 020000   F      943             LJMP    _D12_SetMode
                     944     ; END OF disconnect_USB
                     945     
                     946     ; }
                     947     ; 
                     948     ; //连接USB总线
                     949     ; void connect_USB(void)
                     950     
----                 951             RSEG  ?PR?connect_USB?USB
0000                 952     connect_USB:
                     953             USING   0
                     954                             ; SOURCE LINE # 93
                     955     ; {
                     956                             ; SOURCE LINE # 94
                     957     ;       // reset event flags
                     958     ;       DISABLE;
                     959                             ; SOURCE LINE # 96
0000 C2AF            960             CLR     EA
                     961     ;       bEPPflags.value = 0;//清乘

⌨️ 快捷键说明

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