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

📄 main.src

📁 采用PDIUSBD12开发的USB总线与429总线数据转换的单片机固件程序
💻 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 + -