drawusb.lst

来自「单片机USB接口模拟键盘,该程序可以控制PC机的PS/2键盘的NUM LOCK和」· LST 代码 · 共 1,077 行 · 第 1/5 页

LST
1,077
字号
                                   (0177)     ; Set up the clocks
                                   (0178)     ;------------------
                                   (0179)     ; Configure the external oscillator, EFTB Filter, and clock out
                                   (0180)     ;  It is configured with an 'OR' in case a USB Bus Reset occurred and
                                   (0181)     ;  the external oscillator has already been started.  This way
                                   (0182)     ;  it does not get unselected.
                                   (0183) IF XOSC_ENABLE
                                   (0184)     MOV  REG[XOSCTR], XOSC_XGM_JUST        ; Set the external OSC XGM
                                   (0185)     OR   REG[CLKIOCR], (XOSC_ENABLE_JUST | EFTB_JUST | CLOCK_OUT_JUST)
                                   (0186)     ; If the external oscillator has been selected, wait for it to stabilize
                                   (0187)     ;   then select it 
                                   (0188)     M8C_SetBank1
                                   (0189)     AND  REG[OSC_CR0], ~OSC_CR0_SLEEP
                                   (0190)     OR   REG[OSC_CR0],  OSC_CR0_SLEEP_512Hz ; Wait ~2 mSec
                                   (0191)     M8C_SetBank0
                                   (0192)     M8C_ClearWDTAndSleep                   ; Restart the sleep timer
                                   (0193)     MOV  REG[INT_VC], 0                    ; Clear all pending interrupts
                                   (0194) .WaitForStableXOSC:
                                   (0195)     TST  REG[INT_CLR0], INT_MSK0_SLEEP     ; Test the SleepTimer Interrupt Status
                                   (0196)     JZ   .WaitForStableXOSC                ; Wait until ~2 mSec has elapsed
                                   (0197) 
                                   (0198)     OR   REG[CLKIOCR], CLKIOCR_XOSC_SELECT ; Now, select the external oscillator
                                   (0199) ELSE
0068: 43 32 00 OR    REG[50],0     (0200)     OR   REG[CLKIOCR], (EFTB_JUST | CLOCK_OUT_JUST)
                                   (0201) ENDIF
                                   (0202) 
006B: 55 F8 00 MOV   [248],0       (0203)     mov  [bSSC_KEY1],0             ; Lockout Flash and Supervisiory operations
006E: 55 F9 00 MOV   [249],0       (0204)     mov  [bSSC_KEYSP],0      
                                   (0205) 
                                   (0206)     ;------------------
                                   (0207)     ; Set up the stack
                                   (0208)     ;------------------
0071: 50 6A    MOV   A,106         (0209)     mov   A, __ramareas_end        ; Set top of stack to end of used RAM
0073: 4E       SWAP  SP,A          (0210)     swap  SP, A                    ; This is only temporary if going to LMM
                                   (0211) 
                                   (0212)     ;-------------------------------------------------------------------------
                                   (0213)     ; All the user selections and UserModule selections are now loaded,
                                   (0214)     ; except CPU frequency (CPU is runing at 12 MHz).  Load the PSoC 
                                   (0215)     ; configuration with a 12 MHz CPU clock to keep config time short.
                                   (0216)     ;-------------------------------------------------------------------------
0074: 7C 02 25 LCALL 0x0225        (0217)     lcall LoadConfigInit           ; Configure PSoC blocks per Dev Editor
                                   (0218) 
                                   (0219) 
                                   (0220) IF (C_LANGUAGE_SUPPORT)
0077: 90 08    CALL  0x0081        (0221)     call InitCRunTime              ; Initialize for C language
                                   (0222) ENDIF ;(C_LANGUAGE_SUPPORT)
                                   (0223) 
                                   (0224)     ;-------------------------------------------------------------------------
                                   (0225)     ; Global Interrupt are NOT enabled, this should be done in main().
                                   (0226)     ; LVD is set but will not occur unless Global Interrupts are enabled. 
                                   (0227)     ; Global Interrupts should be as soon as possible in main().
                                   (0228)     ;-------------------------------------------------------------------------
0079: 62 E2 00 MOV   REG[226],0    (0229)     mov  reg[INT_VC],0              ; Clear any pending interrupts which may
                                   (0230)                                     ; have been set during the boot process. 
007C: 7C 0A 4C LCALL _main         (0231)     lcall _main                     ; Call main
                                   (0232) 
                                   (0233) __Exit:
007F: 8F FF    JMP   0x007F        (0234)     jmp  __Exit                     ; Wait here till power is turned off
                                   (0235) 
                                   (0236) 
                                   (0237) 
                                   (0238) ;-----------------------------------------------------------------------------
                                   (0239) ; C Runtime Environment Initialization
                                   (0240) ; The following code is conditionally assembled.
                                   (0241) ;-----------------------------------------------------------------------------
                                   (0242) 
                                   (0243) IF (C_LANGUAGE_SUPPORT)
                                   (0244) 
                                   (0245) InitCRunTime:
                                   (0246)     ;-----------------------------
                                   (0247)     ; clear bss segment
                                   (0248)     ;-----------------------------
0081: 50 00    MOV   A,0           (0249)     mov  A,0
0083: 55 20 3A MOV   [__r0],58     (0250)     mov  [__r0],<__bss_start
                                   (0251) BssLoop:
0086: 3C 20 6A CMP   [32],106      (0252)     cmp  [__r0],<__bss_end
0089: A0 05    JZ    0x008F        (0253)     jz   BssDone
008B: 3F 20    MVI   [__r0],A      (0254)     mvi  [__r0],A
008D: 8F F8    JMP   0x0086        (0255)     jmp  BssLoop
                                   (0256) BssDone:
                                   (0257)     ;----------------------------
                                   (0258)     ; copy idata to data segment
                                   (0259)     ;----------------------------
008F: 50 01    MOV   A,1           (0260)     mov  A,>__idata_start
0091: 57 50    MOV   X,80          (0261)     mov  X,<__idata_start
0093: 55 20 00 MOV   [__r0],0      (0262)     mov  [__r0],<__data_start
                                   (0263) IDataLoop:
0096: 3C 20 20 CMP   [32],32       (0264)     cmp  [__r0],<__data_end
0099: A0 0B    JZ    0x00A5        (0265)     jz   IDataDone
009B: 08       PUSH  A             (0266)     push A
009C: 28       ROMX                (0267)     romx
009D: 3F 20    MVI   [__r0],A      (0268)     mvi  [__r0],A
009F: 18       POP   A             (0269)     pop  A
00A0: 75       INC   X             (0270)     inc  X
00A1: 09 00    ADC   A,0           (0271)     adc  A,0
00A3: 8F F2    JMP   0x0096        (0272)     jmp  IDataLoop
                                   (0273) IDataDone:
00A5: 7F       RET                 (0274)     ret
00A6: 30       HALT  
00A7: 30       HALT  
00A8: 30       HALT  
00A9: 30       HALT  
00AA: 30       HALT  
00AB: 30       HALT  
00AC: 30       HALT  
00AD: 30       HALT  
00AE: 30       HALT  
00AF: 30       HALT  
00B0: 30       HALT  
00B1: 30       HALT  
00B2: 30       HALT  
00B3: 30       HALT  
00B4: 30       HALT  
00B5: 30       HALT  
00B6: 30       HALT  
00B7: 30       HALT  
00B8: 30       HALT  
00B9: 30       HALT  
00BA: 30       HALT  
00BB: 30       HALT  
00BC: 30       HALT  
00BD: 30       HALT  
00BE: 30       HALT  
00BF: 30       HALT  
00C0: 30       HALT  
00C1: 30       HALT  
00C2: 30       HALT  
00C3: 30       HALT  
00C4: 30       HALT  
00C5: 30       HALT  
00C6: 30       HALT  
00C7: 30       HALT  
00C8: 30       HALT  
00C9: 30       HALT  
00CA: 30       HALT  
00CB: 30       HALT  
00CC: 30       HALT  
00CD: 30       HALT  
00CE: 30       HALT  
00CF: 30       HALT  
00D0: 30       HALT  
00D1: 30       HALT  
00D2: 30       HALT  
00D3: 30       HALT  
00D4: 30       HALT  
00D5: 30       HALT  
00D6: 30       HALT  
00D7: 30       HALT  
00D8: 30       HALT  
00D9: 30       HALT  
00DA: 30       HALT  
00DB: 30       HALT  
00DC: 30       HALT  
00DD: 30       HALT  
00DE: 30       HALT  
00DF: 30       HALT  
00E0: 30       HALT  
00E1: 30       HALT  
00E2: 30       HALT  
00E3: 30       HALT  
00E4: 30       HALT  
00E5: 30       HALT  
00E6: 30       HALT  
00E7: 30       HALT  
00E8: 30       HALT  
00E9: 30       HALT  
00EA: 30       HALT  
00EB: 30       HALT  
00EC: 30       HALT  
00ED: 30       HALT  
00EE: 30       HALT  
00EF: 30       HALT  
00F0: 30       HALT  
00F1: 30       HALT  
00F2: 30       HALT  
00F3: 30       HALT  
00F4: 30       HALT  
00F5: 30       HALT  
00F6: 30       HALT  
00F7: 30       HALT  
00F8: 30       HALT  
00F9: 30       HALT  
00FA: 30       HALT  
00FB: 30       HALT  
00FC: 30       HALT  
00FD: 30       HALT  
00FE: 30       HALT  
00FF: 30       HALT  
0100: 30       HALT  
0101: 30       HALT  
0102: 30       HALT  
0103: 30       HALT  
0104: 30       HALT  
0105: 30       HALT  
0106: 30       HALT  
0107: 30       HALT  
0108: 30       HALT  
0109: 30       HALT  
010A: 30       HALT  
010B: 30       HALT  
010C: 30       HALT  
010D: 30       HALT  
010E: 30       HALT  
010F: 30       HALT  
0110: 30       HALT  
0111: 30       HALT  
0112: 30       HALT  
0113: 30       HALT  
0114: 30       HALT  
0115: 30       HALT  
0116: 30       HALT  
0117: 30       HALT  
0118: 30       HALT  
0119: 30       HALT  
011A: 30       HALT  
011B: 30       HALT  

⌨️ 快捷键说明

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