📄 main.src
字号:
; .\MAIN.SRC generated from: MAIN.C
; COMPILER INVOKED BY:
; e:\soft\Keil7.06\C51\BIN\C51.EXE MAIN.C BROWSE DEBUG OBJECTEXTEND SRC(.\MAIN.SRC)
$NOMOD51
NAME MAIN
TXR BIT 0B0H.3
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
EA BIT 0A8H.7
IE DATA 0A8H
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
MR BIT 080H.5
PS BIT 0B8H.4
SP DATA 081H
OV BIT 0D0H.2
WR BIT 0B0H.6
LDCW BIT 080H.4
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
D12CS BIT 0B0H.1
IE0 BIT 088H.1
IE1 BIT 088H.3
LD1 BIT 080H.1
B DATA 0F0H
LD2 BIT 080H.0
OE1 BIT 080H.3
OE2 BIT 080H.2
DR1 BIT 0B0H.4
ACC DATA 0E0H
DR2 BIT 0B0H.5
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
SEL BIT 080H.6
REN BIT 098H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?reconnect_usb?MAIN SEGMENT CODE
?DT?reconnect_usb?MAIN SEGMENT DATA OVERLAYABLE
?PR?disconnect_usb?MAIN SEGMENT CODE
?PR?connect_usb?MAIN SEGMENT CODE
?PR?usb_isr?MAIN SEGMENT CODE
?PR?main?MAIN SEGMENT CODE
EXTRN CODE (_D12_SetMode)
EXTRN CODE (myisr)
EXTRN CODE (_D12_WriteEndpoint)
EXTRN IDATA (InBuf)
EXTRN IDATA (OutBuf)
EXTRN DATA (bEPPflags)
EXTRN CODE (setup_handler)
EXTRN CODE (?C?ULCMP)
EXTRN CODE (?C_STARTUP)
PUBLIC main
PUBLIC usb_isr
PUBLIC connect_usb
PUBLIC disconnect_usb
PUBLIC reconnect_usb
RSEG ?DT?reconnect_usb?MAIN
?reconnect_usb?BYTE:
clk_cnt?040: DS 4
; /**********************************************
; USB固件编程
;
; File Name: main.c
; Date: 2004-06
; Author: LHP
; Note: 还有很多问题需要解决
; ***********************************************/
;
; #include <reg51.h>
; #include "D12ci.h"
; #include "chap_9.h"
; #include <intrins.h>
;
;
; sbit D12CS=P3^1;
; sbit TXR=P3^3;
; sbit DR1=P3^4;
; sbit DR2=P3^5;
; sbit SEL=P0^6;
; sbit MR=P0^5;
; sbit LDCW=P0^4;
; sbit OE1=P0^3;
; sbit OE2=P0^2;
; sbit LD1=P0^1;
; sbit LD2=P0^0;
;
; //unsigned char data flag;
;
; extern unsigned char idata OutBuf[EP1_PACKET_SIZE];//用于端点1传送数据
; extern unsigned char idata InBuf[EP1_PACKET_SIZE];
; //extern unsigned char idata EpBuf[EP2_PACKET_SIZE];
; extern EPPFLAGS bEPPflags;
; extern CONTROL_XFER ControlData;
; void reconnect_usb(void);
; void disconnect_usb(void);
; void connect_usb(void);
; void setup_handler(void);
;
; extern void myisr(void);
;
; //重新连接到USB总线
; void reconnect_usb(void)
RSEG ?PR?reconnect_usb?MAIN
reconnect_usb:
USING 0
; SOURCE LINE # 43
; {
; SOURCE LINE # 44
; unsigned long clk_cnt;
; disconnect_usb();//断开usb连接
; SOURCE LINE # 46
LCALL disconnect_usb
; for(clk_cnt=0;clk_cnt<50000;clk_cnt++);//延时
; SOURCE LINE # 47
CLR A
MOV clk_cnt?040+03H,A
MOV clk_cnt?040+02H,A
MOV clk_cnt?040+01H,A
MOV clk_cnt?040,A
?C0001:
CLR A
MOV R7,#050H
MOV R6,#0C3H
MOV R5,A
MOV R4,A
MOV R3,clk_cnt?040+03H
MOV R2,clk_cnt?040+02H
MOV R1,clk_cnt?040+01H
MOV R0,clk_cnt?040
CLR C
LCALL ?C?ULCMP
JNC ?C0002
MOV A,clk_cnt?040+03H
ADD A,#01H
MOV clk_cnt?040+03H,A
CLR A
ADDC A,clk_cnt?040+02H
MOV clk_cnt?040+02H,A
CLR A
ADDC A,clk_cnt?040+01H
MOV clk_cnt?040+01H,A
CLR A
ADDC A,clk_cnt?040
MOV clk_cnt?040,A
SJMP ?C0001
?C0002:
; connect_usb();//连接到USB
; SOURCE LINE # 48
LJMP connect_usb
; END OF reconnect_usb
; }
;
; //断开USB总线
; void disconnect_usb(void)
RSEG ?PR?disconnect_usb?MAIN
disconnect_usb:
USING 0
; SOURCE LINE # 52
; {
; SOURCE LINE # 53
; //初始化D12工作状态,断开soft connect连接
; D12_SetMode(D12_NOLAZYCLOCK,D12_SETTOONE|D12_CLOCK_6M);
; SOURCE LINE # 55
MOV R5,#047H
MOV R7,#02H
LJMP _D12_SetMode
; END OF disconnect_usb
; }
;
; //连接USB总线
; void connect_usb(void)
RSEG ?PR?connect_usb?MAIN
connect_usb:
USING 0
; SOURCE LINE # 59
; {
; SOURCE LINE # 60
; DISABLE;
; SOURCE LINE # 61
CLR EA
; bEPPflags.value=0;//清标志
; SOURCE LINE # 62
CLR A
MOV bEPPflags,A
MOV bEPPflags+01H,A
; ENABLE;
; SOURCE LINE # 63
SETB EA
; //初始化D12工作状态,接通soft connect
; D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT,D12_SETTOONE|D12_CLOCK_6M);
; SOURCE LINE # 65
MOV R5,#047H
MOV R7,#012H
LJMP _D12_SetMode
; END OF connect_usb
CSEG AT 00003H
LJMP usb_isr
; }
;
; void usb_isr(void) interrupt 0
RSEG ?PR?usb_isr?MAIN
USING 0
usb_isr:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV PSW,#00H
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 68
; {
; DISABLE;
; SOURCE LINE # 70
CLR EA
; myisr();
; SOURCE LINE # 71
LCALL myisr
; ENABLE;
; SOURCE LINE # 72
SETB EA
; }
; SOURCE LINE # 73
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF usb_isr
;
; void main(void)
RSEG ?PR?main?MAIN
main:
USING 0
; SOURCE LINE # 75
; {
; SOURCE LINE # 76
;
; //unsigned char delay;
; SP=0x50;
; SOURCE LINE # 79
MOV SP,#050H
; P0=0xff;
; SOURCE LINE # 80
MOV P0,#0FFH
; P1=0xff;
; SOURCE LINE # 81
MOV P1,#0FFH
; P2=0xff;
; SOURCE LINE # 82
MOV P2,#0FFH
; P3=0xff;
; SOURCE LINE # 83
MOV P3,#0FFH
;
; D12CS=0x0;
; SOURCE LINE # 85
CLR D12CS
; IT0=0;//设置INT0为低电平中断触发
; SOURCE LINE # 86
CLR IT0
; EX0=1;//允许外部中断0
; SOURCE LINE # 87
SETB EX0
; PX0=1;//设为高优先级
; SOURCE LINE # 88
SETB PX0
; EA=1;//开总中断
; SOURCE LINE # 89
SETB EA
;
;
;
;
; P0=0x3f;
; SOURCE LINE # 94
MOV P0,#03FH
; D12CS=0x1;
; SOURCE LINE # 95
SETB D12CS
; _nop_();
; SOURCE LINE # 96
NOP
; MR=0;
; SOURCE LINE # 97
CLR MR
; _nop_();
; SOURCE LINE # 98
NOP
; _nop_();
; SOURCE LINE # 99
NOP
; MR=1;
; SOURCE LINE # 100
SETB MR
;
; LDCW=1;
; SOURCE LINE # 102
SETB LDCW
; P2=0x0;
; SOURCE LINE # 103
CLR A
MOV P2,A
; P1=0x0;
; SOURCE LINE # 104
MOV P1,A
; LDCW=0;
; SOURCE LINE # 105
CLR LDCW
; _nop_();
; SOURCE LINE # 106
NOP
; _nop_();
; SOURCE LINE # 107
NOP
; LDCW=1;
; SOURCE LINE # 108
SETB LDCW
;
; D12CS=0x0;
; SOURCE LINE # 110
CLR D12CS
; bEPPflags.value=0;
; SOURCE LINE # 111
MOV bEPPflags,A
MOV bEPPflags+01H,A
; reconnect_usb();
; SOURCE LINE # 112
LCALL reconnect_usb
?C0008:
;
; while(1)
; SOURCE LINE # 114
; {
; SOURCE LINE # 115
; if(bEPPflags.bits.setup_packet)
; SOURCE LINE # 116
MOV R7,bEPPflags
MOV A,R7
RRC A
RRC A
RRC A
ANL A,#01FH
JNB ACC.0,?C0010
; {
; SOURCE LINE # 117
; DISABLE;
; SOURCE LINE # 118
CLR EA
; bEPPflags.bits.setup_packet=0;
; SOURCE LINE # 119
MOV R7,bEPPflags
MOV A,R7
ANL A,#0F7H
MOV bEPPflags,A
; ENABLE;
; SOURCE LINE # 120
SETB EA
; setup_handler();
; SOURCE LINE # 121
LCALL setup_handler
; }
; SOURCE LINE # 122
?C0010:
;
; if(bEPPflags.bits.ep1_rxdone)//?????????????????此处是否应该加入清除标志的语句
; SOURCE LINE # 124
MOV R7,bEPPflags+01H
MOV A,R7
RRC A
RRC A
ANL A,#03FH
JNB ACC.0,?C0011
; {
; SOURCE LINE # 125
; DISABLE;
; SOURCE LINE # 126
CLR EA
; bEPPflags.bits.ep1_rxdone=0;
; SOURCE LINE # 127
MOV R7,bEPPflags+01H
MOV A,R7
ANL A,#0FBH
MOV bEPPflags+01H,A
; ENABLE;
; SOURCE LINE # 128
SETB EA
;
; if(TXR==1){
; SOURCE LINE # 130
JNB TXR,?C0011
; P0=0x3f;
; SOURCE LINE # 131
MOV P0,#03FH
; P1=0xff;
; SOURCE LINE # 132
MOV P1,#0FFH
; P2=0xff;
; SOURCE LINE # 133
MOV P2,#0FFH
; D12CS=1;
; SOURCE LINE # 134
SETB D12CS
; //_nop_();
; //_nop_();
; //for(delay=0;delay<2;delay++)
; // {
;
; P1=OutBuf[0];
; SOURCE LINE # 140
MOV R0,#LOW (OutBuf)
MOV A,@R0
MOV P1,A
; P2=OutBuf[1];
; SOURCE LINE # 141
INC R0
MOV A,@R0
MOV P2,A
; #pragma ASM
; CLR P0.1
CLR P0.1
; SETB P0.1
SETB P0.1
; NOP
NOP
; #pragma ENDASM
; //LD1=0;
; //LD1=1;
; //_nop_();
; P1=OutBuf[2];
; SOURCE LINE # 150
MOV R0,#LOW (OutBuf+02H)
MOV A,@R0
MOV P1,A
; P2=OutBuf[3];
; SOURCE LINE # 151
INC R0
MOV A,@R0
MOV P2,A
; //LD1=1;
; #pragma ASM
; CLR P0.0
CLR P0.0
; SETB P0.0
SETB P0.0
; NOP
NOP
; NOP
NOP
; CLR P3.3
CLR P3.3
; JNB P3.3,$
JNB P3.3,$
; SETB P3.3
SETB P3.3
; #pragma ENDASM
; //LD2=0;
; //LD2=1;
; //_nop_();
; //TXR=0;
;
; //_nop_();
; //_nop_();
; //TXR=1;
;
; //}
; D12CS=0; }
; SOURCE LINE # 172
CLR D12CS
; }
; SOURCE LINE # 173
?C0011:
; if(bEPPflags.bits.ep2_rxdone)//???????????????????此处是否应该加入清除标志的语句
; SOURCE LINE # 174
MOV R7,bEPPflags+01H
MOV A,R7
RRC A
RRC A
RRC A
ANL A,#01FH
JNB ACC.0,?C0013
; {
; SOURCE LINE # 175
; DISABLE;
; SOURCE LINE # 176
CLR EA
; bEPPflags.bits.ep2_rxdone=0;
; SOURCE LINE # 177
MOV R7,bEPPflags+01H
MOV A,R7
ANL A,#0F7H
MOV bEPPflags+01H,A
; ENABLE;
; SOURCE LINE # 178
SETB EA
; P0=0x3f;
; SOURCE LINE # 179
MOV P0,#03FH
; D12CS=0x1;
; SOURCE LINE # 180
SETB D12CS
; _nop_();
; SOURCE LINE # 181
NOP
; MR=0;
; SOURCE LINE # 182
CLR MR
; _nop_();
; SOURCE LINE # 183
NOP
; _nop_();
; SOURCE LINE # 184
NOP
; MR=1;
; SOURCE LINE # 185
SETB MR
;
; LDCW=1;
; SOURCE LINE # 187
SETB LDCW
; P2=0x0;
; SOURCE LINE # 188
CLR A
MOV P2,A
; P1=0x0;
; SOURCE LINE # 189
MOV P1,A
; LDCW=0;
; SOURCE LINE # 190
CLR LDCW
; _nop_();
; SOURCE LINE # 191
NOP
; _nop_();
; SOURCE LINE # 192
NOP
; LDCW=1;
; SOURCE LINE # 193
SETB LDCW
;
; D12CS=0x0;
; SOURCE LINE # 195
CLR D12CS
; }
; SOURCE LINE # 196
?C0013:
;
; if(DR1==0)
; SOURCE LINE # 198
JNB DR1,$ + 6H
LJMP ?C0008
; {
; SOURCE LINE # 199
; P0=0x1f;
; SOURCE LINE # 200
MOV P0,#01FH
; D12CS=1;
; SOURCE LINE # 201
SETB D12CS
; OE1=1;
; SOURCE LINE # 202
SETB OE1
; SEL=0;
; SOURCE LINE # 203
CLR SEL
; P1=0xff;
; SOURCE LINE # 204
MOV P1,#0FFH
; P2=0xff;
; SOURCE LINE # 205
MOV P2,#0FFH
; OE1=0;
; SOURCE LINE # 206
CLR OE1
; _nop_();
; SOURCE LINE # 207
NOP
; InBuf[0]=P1;
; SOURCE LINE # 208
MOV R0,#LOW (InBuf)
MOV @R0,P1
; InBuf[1]=P2;
; SOURCE LINE # 209
INC R0
MOV @R0,P2
; OE1=1;
; SOURCE LINE # 210
SETB OE1
; SEL=1;
; SOURCE LINE # 211
SETB SEL
; P1=0xff;
; SOURCE LINE # 212
MOV P1,#0FFH
; P2=0xff;
; SOURCE LINE # 213
MOV P2,#0FFH
; OE1=0;
; SOURCE LINE # 214
CLR OE1
; _nop_();
; SOURCE LINE # 215
NOP
; InBuf[2]=P1;
; SOURCE LINE # 216
INC R0
MOV @R0,P1
; InBuf[3]=P2;
; SOURCE LINE # 217
INC R0
MOV @R0,P2
; OE1=1;
; SOURCE LINE # 218
SETB OE1
;
; D12CS=0;
; SOURCE LINE # 220
CLR D12CS
; D12_WriteEndpoint(3,4,InBuf);
; SOURCE LINE # 221
MOV R3,#00H
MOV R2,#HIGH (InBuf)
MOV R1,#LOW (InBuf)
MOV R5,#04H
MOV R7,#03H
LCALL _D12_WriteEndpoint
; } /*
; SOURCE LINE # 222
; if(DR2==0)
; {
; P0=0x1f;
; D12CS=1;
; OE2=0;
; SEL=0;
; GenEpBuf[0]=P1;
; GenEpBuf[1]=P2;
; SEL=1;
; GenEpBuf[2]=P1;
; GenEpBuf[3]=P2;
; D12CS=0;
; InBuf[0]=0xaa;
; InBuf[1]=0xBB;
; InBuf[2]=0xCC;
; InBuf[3]=0xDD;
; D12_WriteEndpoint(3,4,InBuf);
; } */
; }
; SOURCE LINE # 241
LJMP ?C0008
; END OF main
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -