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

📄 mainloop.src

📁 Comlete files for fullfile the slave USB function!
💻 SRC
📖 第 1 页 / 共 3 页
字号:
; 	reserved
; };
; 
; code void (*VendorDeviceRequest[])(void) =
; {
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved,
; 	reserved
; };
; 
; /*
; //*************************************************************************
; //  Public static data
; //*************************************************************************
; */
; 
; 
; extern unsigned long ClockTicks;
; extern unsigned char idata GenEpBuf[];
; 
; EPPFLAGS bEPPflags; /* USB event flags */
; CONTROL_XFER ControlData; /* Control endpoint TX/RX buffers */
; 
; code char * _NAME_USB_REQUEST_DIRECTION[] =
; {
; "Host_to_device",
; "Device_to_host"
; };
; 
; code char * _NAME_USB_REQUEST_RECIPIENT[] =
; {
; "Device",
; "Interface",
; "Endpoint(0)",
; "Other"
; };
; 
; code char * _NAME_USB_REQUEST_TYPE[] =
; {
; "Standard",
; "Class",
; "Vendor",
; "Reserved"
; };
; 
; code char * _NAME_USB_STANDARD_REQUEST[] =
; {
; "GET_STATUS",
; "CLEAR_FEATURE",
; "RESERVED",
; "SET_FEATURE",
; "RESERVED",
; "SET_ADDRESS",
; "GET_DESCRIPTOR",
; "SET_DESCRIPTOR",
; "GET_CONFIGURATION",
; "SET_CONFIGURATION",
; "GET_INTERFACE",
; "SET_INTERFACE",
; "SYNC_FRAME"
; };
; 
; void blinkLED(unsigned char num)

	RSEG  ?PR?_blinkLED?MAINLOOP
_blinkLED:
	USING	0
			; SOURCE LINE # 145
	MOV  	num?040,R7
; {
			; SOURCE LINE # 146
; 	unsigned int i;
; 	for (i=0; i<3; i++) {
			; SOURCE LINE # 148
	CLR  	A
	MOV  	i?041,A
	MOV  	i?041+01H,A
?C0001:
; 		if (num==0) {
			; SOURCE LINE # 149
	MOV  	A,num?040
	JNZ  	?C0004
; 			MCU_LED0 = 0;
			; SOURCE LINE # 150
	CLR  	MCU_LED0
; 			loop_delay(100);
			; SOURCE LINE # 151
	MOV  	R7,#064H
	MOV  	R6,A
	LCALL	_loop_delay
; 			MCU_LED0 = 1;
			; SOURCE LINE # 152
	SETB 	MCU_LED0
; 			loop_delay(100);
			; SOURCE LINE # 153
; 		 }
			; SOURCE LINE # 154
	SJMP 	?C0056
?C0004:
; 		 else {
			; SOURCE LINE # 155
; 		 	MCU_LED1 = 0;
			; SOURCE LINE # 156
	CLR  	MCU_LED1
; 			loop_delay(100);
			; SOURCE LINE # 157
	MOV  	R7,#064H
	MOV  	R6,#00H
	LCALL	_loop_delay
; 			MCU_LED1 = 1;
			; SOURCE LINE # 158
	SETB 	MCU_LED1
; 			loop_delay(100);
			; SOURCE LINE # 159
?C0056:
	MOV  	R7,#064H
	MOV  	R6,#00H
	LCALL	_loop_delay
; 		 	
; 		 }
			; SOURCE LINE # 161
;    }
			; SOURCE LINE # 162
?C0003:
	INC  	i?041+01H
	MOV  	A,i?041+01H
	JNZ  	?C0053
	INC  	i?041
?C0053:
	CLR  	C
	SUBB 	A,#03H
	MOV  	A,i?041
	SUBB 	A,#00H
	JC   	?C0001
; }
			; SOURCE LINE # 163
?C0006:
	RET  	
; END OF _blinkLED

; /* Configure Timer 0
;    - Mode                  = 1
;    - Interrupt             = ENABLED
;    - Clock Source          = INTERNAL
;    - Enable Gating Control = DISABLED
; */
; void init_timer0(void)

	RSEG  ?PR?init_timer0?MAINLOOP
init_timer0:
			; SOURCE LINE # 170
; {
			; SOURCE LINE # 171
;     /* Configure Timer 0 as a 16 bit timer */
; 	TMOD &= 0XF0;  /* clear Timer 0, timer 1 left unchanged  */
			; SOURCE LINE # 173
	ANL  	TMOD,#0F0H
; 	TMOD  |= 0X1;  /* set timer working mode 1 */
			; SOURCE LINE # 174
	ORL  	TMOD,#01H
; 
; 	/* load the timer registers with the initial timer value */
; 	TL0 = 0X0;     /* value set by user  */
			; SOURCE LINE # 177
	CLR  	A
	MOV  	TL0,A
; 	TH0 = 0X0;     /* value set by user  */
			; SOURCE LINE # 178
	MOV  	TH0,A
; 
; 	ET0 = 1;       /* Allow timer 0 interrupt */
			; SOURCE LINE # 180
	SETB 	ET0
; 	TR0 = 1;       /* Start timer 0 */
			; SOURCE LINE # 181
	SETB 	TR0
; 	PT0 = 1;       /* Set timer 0 interrupt high priority */
			; SOURCE LINE # 182
	SETB 	PT0
; 
; 	EA = 1;
			; SOURCE LINE # 184
	SETB 	EA
; }
			; SOURCE LINE # 185
	RET  	
; END OF init_timer0

; 
; void init_special_interrupts(void)

	RSEG  ?PR?init_special_interrupts?MAINLOOP
init_special_interrupts:
			; SOURCE LINE # 187
; {
			; SOURCE LINE # 188
; 	IT0 = 0;
			; SOURCE LINE # 189
	CLR  	IT0
; 	EX0 = 1;	// allow external INT0 interrupt
			; SOURCE LINE # 190
	SETB 	EX0
; 	PX0 = 0;	// set INT0 low interrupt priority
			; SOURCE LINE # 191
	CLR  	PX0
; }
			; SOURCE LINE # 192
	RET  	
; END OF init_special_interrupts

; 
; void init_port()

	RSEG  ?PR?init_port?MAINLOOP
init_port:
			; SOURCE LINE # 194
; {
			; SOURCE LINE # 195
; 	P0 = 0xFF;
			; SOURCE LINE # 196
	MOV  	P0,#0FFH
; 	P1 = 0xFF;
			; SOURCE LINE # 197
	MOV  	P1,#0FFH
; 	P2 = 0xFF;
			; SOURCE LINE # 198
	MOV  	P2,#0FFH
; 
; 	D12SUSPD = 0;	/* Prevents D12 to go into Suspend state */
			; SOURCE LINE # 200
	CLR  	D12SUSPD
; }
			; SOURCE LINE # 201
	RET  	
; END OF init_port

; 
; void main(void)

	RSEG  ?PR?main?MAINLOOP
main:
	USING	0
			; SOURCE LINE # 203
; {
			; SOURCE LINE # 204
; 	BOOL in_loop = TRUE;
			; SOURCE LINE # 205
	MOV  	in_loop?442,#01H
; 	unsigned char key, i;
; 
; 	init_port();
			; SOURCE LINE # 208
	LCALL	init_port
; 
; 	init_timer0();
			; SOURCE LINE # 210
	LCALL	init_timer0
; 
; 	init_special_interrupts();
			; SOURCE LINE # 212
	LCALL	init_special_interrupts
; 
; 	bEPPflags.value = 0;	/* clear flags of bEPPflags */
			; SOURCE LINE # 214
	CLR  	A
	MOV  	bEPPflags,A
	MOV  	bEPPflags+01H,A
; 	
; 	/* Power on reset, lightup LEDs for 1 sec,
; 	   disconnect and reconnect Soft-Connect */
; 	reconnect_USB();
			; SOURCE LINE # 218
	LCALL	reconnect_USB
?C0010:
; 
; 	/* Main program loop */
; 	while( in_loop ) {
			; SOURCE LINE # 221
	MOV  	A,in_loop?442
	JZ   	?C0017
; 
; 		/* timer 0 overflow */
; 		if (bEPPflags.bits.timer) {
			; SOURCE LINE # 224
	MOV  	R7,bEPPflags
	MOV  	A,R7
	JNB  	ACC.0,?C0012
; 			DISABLE;
			; SOURCE LINE # 225
	CLR  	EA
; 			bEPPflags.bits.timer = 0;
			; SOURCE LINE # 226
	MOV  	R7,bEPPflags
	MOV  	A,R7
	ANL  	A,#0FEH
	MOV  	bEPPflags,A
; 			ENABLE;
			; SOURCE LINE # 227
	SETB 	EA
; 			if(bEPPflags.bits.configuration)
			; SOURCE LINE # 228
	MOV  	R7,bEPPflags+01H
	MOV  	A,R7
	JNB  	ACC.0,?C0012
; 				check_key_LED();
			; SOURCE LINE # 229
	LCALL	check_key_LED
; 		}
			; SOURCE LINE # 230
?C0012:
; 
; 		if (bEPPflags.bits.bus_reset) {
			; SOURCE LINE # 232
	MOV  	R7,bEPPflags
	MOV  	A,R7
	CLR  	C
	RRC  	A
	JNB  	ACC.0,?C0014
; 			DISABLE;
			; SOURCE LINE # 233
	CLR  	EA
; 			bEPPflags.bits.bus_reset = 0;
			; SOURCE LINE # 234
	MOV  	R7,bEPPflags
	MOV  	A,R7
	ANL  	A,#0FDH
	MOV  	bEPPflags,A
; 			ENABLE;
			; SOURCE LINE # 235
	SETB 	EA
; 			//D12SUSPD = 1;	/* release D12 suspend control */
; 		} // if bus reset
			; SOURCE LINE # 237
?C0014:
; 
; 		if (bEPPflags.bits.suspend) {
			; SOURCE LINE # 239
	MOV  	R7,bEPPflags
	MOV  	A,R7
	RRC  	A
	RRC  	A
	ANL  	A,#03FH
	JNB  	ACC.0,?C0015
; 			DISABLE;
			; SOURCE LINE # 240
	CLR  	EA
; 			bEPPflags.bits.suspend= 0;
			; SOURCE LINE # 241
	MOV  	R7,bEPPflags
	MOV  	A,R7
	ANL  	A,#0FBH
	MOV  	bEPPflags,A
; 			ENABLE;
			; SOURCE LINE # 242
	SETB 	EA
; 			//suspend_change();
; 		} // if suspend change
			; SOURCE LINE # 244
?C0015:
; 
; 		if (bEPPflags.bits.setup_packet){
			; SOURCE LINE # 246
	MOV  	R7,bEPPflags
	MOV  	A,R7
	RRC  	A
	RRC  	A
	RRC  	A
	ANL  	A,#01FH
	JNB  	ACC.0,?C0010
; 			DISABLE;
			; SOURCE LINE # 247
	CLR  	EA
; 			bEPPflags.bits.setup_packet = 0;
			; SOURCE LINE # 248
	MOV  	R7,bEPPflags
	MOV  	A,R7
	ANL  	A,#0F7H
	MOV  	bEPPflags,A
; 			ENABLE;
			; SOURCE LINE # 249
	SETB 	EA
; 			control_handler();
			; SOURCE LINE # 250
	LCALL	control_handler
; 		} // if setup_packet
			; SOURCE LINE # 251
; 
; 	} // Main Loop
			; SOURCE LINE # 253
	SJMP 	?C0010
; 
; }
			; SOURCE LINE # 255
?C0017:
	RET  	
; END OF main

; 
; /* wakeup D12, make MCU into low power mode, then suspend D12 again */
; void suspend_change(void)

	RSEG  ?PR?suspend_change?MAINLOOP
suspend_change:
			; SOURCE LINE # 258
; {
			; SOURCE LINE # 259
; 	if (D12SUSPD == 1)
			; SOURCE LINE # 260
	JNB  	D12SUSPD,?C0018
; 		D12SUSPD = 0;
			; SOURCE LINE # 261
	CLR  	D12SUSPD
?C0018:
; 	
; 		P0 = 0xFF;
			; SOURCE LINE # 263
	MOV  	P0,#0FFH
; 		P1 = 0xFF;
			; SOURCE LINE # 264
	MOV  	P1,#0FFH
; 		P2 = 0xFF;
			; SOURCE LINE # 265
	MOV  	P2,#0FFH
; 		P3 = 0xFF;
			; SOURCE LINE # 266
	MOV  	P3,#0FFH
; 		D12SUSPD = 1;	/* suspend D12 */
			; SOURCE LINE # 267
	SETB 	D12SUSPD
; 	 	PCON |= 0x02;	/* into low power mode */
			; SOURCE LINE # 268
	ORL  	PCON,#02H
?C0019:
; 		while (1) ;		/* hangup, only reset could wake up MCU */
			; SOURCE LINE # 269
	SJMP 	?C0019
; END OF suspend_change

; }
; 
; /* Stall Enpoints */
; void stall_ep0(void)

	RSEG  ?PR?stall_ep0?MAINLOOP
stall_ep0:
	USING	0
			; SOURCE LINE # 273
; {
			; SOURCE LINE # 274
; 	D12_SetEndpointStatus(0, 1);
			; SOURCE LINE # 275
	MOV  	R5,#01H
	CLR  	A
	MOV  	R7,A
	LCALL	_D12_SetEndpointStatus
; 	D12_SetEndpointStatus(1, 1);
			; SOURCE LINE # 276
	MOV  	R5,#01H
	MOV  	R7,#01H
	LJMP 	_D12_SetEndpointStatus
; END OF stall_ep0

; }
; 
; void disconnect_USB(void)

	RSEG  ?PR?disconnect_USB?MAINLOOP
disconnect_USB:
	USING	0
			; SOURCE LINE # 279
; {
			; SOURCE LINE # 280
; 	//D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING, D12_SETTOONE | D12_CLOCK_12M);
; 	/* Clear Soft_Connect bit, disconnect pull-up resistor */
; 	D12_SetMode(0x00, 0x00);
			; SOURCE LINE # 283
	CLR  	A
	MOV  	R5,A
	MOV  	R7,A
	LJMP 	_D12_SetMode
; END OF disconnect_USB

; }
; 
; void connect_USB(void)

	RSEG  ?PR?connect_USB?MAINLOOP
connect_USB:
	USING	0
			; SOURCE LINE # 286
; {
			; SOURCE LINE # 287
; 	unsigned int i;
; 	// reset event flags
; 	DISABLE;
			; SOURCE LINE # 290
	CLR  	EA
; 	bEPPflags.value = 0;	//for (i=0; i<11; i++)	bEPPflags.c_value[i] = 0;
			; SOURCE LINE # 291

⌨️ 快捷键说明

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