📄 mainloop.src
字号:
; 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
CLR A
MOV bEPPflags,A
MOV bEPPflags+01H,A
; ENABLE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -