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

📄 main.lis

📁 单片机USB接口模拟键盘,该程序可以控制PC机的PS/2键盘的NUM LOCK和SCROLL LOCK的灯,以此说明通讯正常
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile ./main.c
 0000                   .dbfunc e TD_init _TD_init fV
 0000           _TD_init::
 0000                   .dbline -1
 0000                   .dbline 54
 0000           ; // Switch S1 is connected to P0.2 (Down=Start Movement/Up=Stop Movement)
 0000           ; // Switch S2 is connected to P0.3 (Down=Left Button Down/Up=Left Button Up)
 0000           ; // Switch S3 is connected to P0.4 (Not used)
 0000           ; // 
 0000           ; // LED D1 is connected to P0.5 (Tracks S1: On=Down/Off=Up)
 0000           ; // LED D2 is connected to P0.6 (Tracks S2: On=Down/Off=Up)
 0000           ; // LED D3 is connected to P1.3 (Not used)
 0000           ; // 
 0000           ; //----------------------------------------------------------------------------
 0000           ; 
 0000           ; #include <m8c.h>        // part specific constants and macros
 0000           ; #include "PSoCAPI.h"    // PSoC API definitions for all User Modules
 0000           ; 
 0000           ; // Constant for button handling
 0000           ; #define GO        1
 0000           ; #define STOP      0
 0000           ; #define UP        0
 0000           ; #define DOWN      1
 0000           ; #define NULL      0
 0000           ; #define FULL      1
 0000           ; // Constants for the mouse reports
 0000           ; #define STEP_SIZE 1
 0000           ; #define X_SIGN    1
 0000           ; #define Y_SIGN    1
 0000           ; #define Cap_L_UP      1
 0000           ; #define Cap_L_DOWN    0
 0000           ; #define Shift_UP      1
 0000           ; #define Shift_DOWN    0
 0000           ; // Movement Vectors for the letters U, S, and B
 0000           ; 
 0000           ; /*#define STEP(ctl,NULL,char1,char2,char3,char4,char5,char6)  ( ctl ), \
 0000           ;         (NULL),(char1),(char2),(char3),(char4),(char5),(char6),0
 0000           ; 
 0000           ; const BYTE a_logo_vectors[] =
 0000           ; {
 0000           ;   STEP(NULL, NULL,0x00,0x00,0x00,0x00,0x00,0x97),  // ;1
 0000           ;   STEP(Shift_DOWN,NULL,0x00,0x00,0x00,0x00,0x00,0x97),  //    ;1
 0000           ; };
 0000           ; 
 0000           ; void delay(unsigned char ch)
 0000           ; {
 0000           ; unsigned char couter; 
 0000           ; while(ch)
 0000           ;       {
 0000           ;       couter=0xff;
 0000           ;       while(couter)
 0000           ;               couter--;
 0000           ;       ch--;
 0000           ;       }
 0000           ;       return;
 0000           ; }     
 0000           ;               */
 0000           ; void TD_init()
 0000           ; {
 0000                   .dbline 55
 0000           ;       M8C_EnableGInt;
 0000 7101                      or  F, 01h
 0002           
 0002                   .dbline 62
 0002           ;       
 0002           ; //    USB_INTERFACE_0_OUT_RPT_DATA[0] = 0;
 0002           ;       
 0002           ; //    OSC_CR0 &= ~OSC_CR0_CPU;
 0002           ; //    OSC_CR0 |=  OSC_CR0_CPU_24MHz;
 0002           ;       
 0002           ;       USB_Start(0);
 0002 10                push X
 0003 5000              mov A,0
 0005 7C0000            xcall _USB_Start
 0008 20                pop X
 0009           L3:
 0009                   .dbline 63
 0009           L4:
 0009                   .dbline 63
 0009           ;       while(USB_bGetConfiguration() == 0);
 0009 10                push X
 000A 7C0000            xcall _USB_bGetConfiguration
 000D 20                pop X
 000E 3900              cmp A,0
 0010 AFF8              jz L3
 0012                   .dbline -2
 0012                   .dbline 66
 0012           ;       
 0012           ; //    while(USB_INTERFACE_0_OUT_RPT_DATA[0] == 0);
 0012           ; }             
 0012           L2:
 0012                   .dbline 0 ; func end
 0012 7F                ret
 0013                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000           _a_ram::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 0002 5300              .byte 'S,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 0004 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 0006 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .dbsym e a_ram _a_ram A[8:8]c
 0000           _b_ram::
 0000                   .blkb 2
                        .area idata
 0008 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 000A 4700              .byte 'G,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 000C 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 000E 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .dbsym e b_ram _b_ram A[8:8]c
 0000           _c_ram::
 0000                   .blkb 2
                        .area idata
 0010 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 0012 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 0014 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 0016 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .dbsym e c_ram _c_ram A[8:8]c
 0000           _d_ram::
 0000                   .blkb 2
                        .area idata
 0018 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 001A 3900              .byte 57,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 001C 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .blkb 2
                        .area idata
 001E 0000              .byte 0,0
                        .area data(ram, con, rel)
 0000                   .dbfile ./main.c
 0000                   .dbsym e d_ram _d_ram A[8:8]c
                        .area text(rom, con, rel)
 0013                   .dbfile ./main.c
 0013                   .dbfunc e main _main fV
 0013           _main::
 0013                   .dbline -1
 0013 10                push X
 0014 4F                mov X,SP
 0015 3808              add SP,8
 0017                   .dbline 77
 0017           ; // 
 0017           ; BYTE left_button;
 0017           ; BYTE move,right_button;
 0017           ; BYTE pre_move,pre_LB_down,pre_RB_down;
 0017           ; BYTE a_ram[8]={0x00, 0x00,0x53,0x00,0x00,0x00,0x00,0x00};
 0017           ; BYTE b_ram[8]={0x00, 0x00,0x47,0x00,0x00,0x00,0x00,0x00};
 0017           ; BYTE c_ram[8]={0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00};
 0017           ; BYTE d_ram[8]={0x00, 0x00,0x39,0x00,0x00,0x00,0x00,0x00};
 0017           ; //unsigned char *p_data;
 0017           ; void main()
 0017           ; {
 0017                   .dbline 78
 0017           ;     TD_init();
 0017 9FE7              xcall _TD_init
 0019                   .dbline 82
 0019           ;     
 0019           ;     //p_data = &a_logo_vectors[0]; // Point to the first of the logo vectors
 0019           ; 
 0019           ;     move = STOP;
 0019 550400            mov [_move],0
 001C                   .dbline 83
 001C           ;     left_button = UP;
 001C 550500            mov [_left_button],0
 001F                   .dbline 84
 001F           ;     right_button= UP;
 001F 550300            mov [_right_button],0
 0022                   .dbline 85
 0022           ;     pre_move=UP;
 0022 550200            mov [_pre_move],0
 0025                   .dbline 86
 0025           ;     pre_LB_down=UP;
 0025 550100            mov [_pre_LB_down],0
 0028                   .dbline 87
 0028           ;     pre_RB_down=UP;
 0028 550000            mov [_pre_RB_down],0
 002B                   .dbline 89
 002B           ;     
 002B           ;     P0DATA |= (0x20);         // P0.5 low (on)
 002B 430020            or REG[ 0],32
 002E                   .dbline 90
 002E           ;     P0DATA |= (0x40);         // P0.6 low (on)
 002E 430040            or REG[ 0],64
 0031                   .dbline 91
 0031           ;     P1DATA |= (0x08);         // P1.3 low (on)
 0031 430108            or REG[0x1],8
 0034 814A              xjmp L8
 0036           L7:
 0036                   .dbline 94
 0036           ;     
 0036           ;     while (1)
 0036           ;     {
 0036                   .dbline 95
 0036           ;       move         = ((P0DATA & 0x04) ? STOP : GO);  // P0.2 Up or Down
 0036 490004            tst REG[ 0],4
 0039 A009              jz L11
 003B 560100            mov [X+1],0
 003E 560000            mov [X+0],0
 0041 8007              xjmp L12
 0043           L11:
 0043 560101            mov [X+1],1
 0046 560000            mov [X+0],0
 0049           L12:
 0049 5201              mov A,[X+1]
 004B 5304              mov [_move],A
 004D                   .dbline 96
 004D           ;           left_button  = ((P0DATA & 0x08) ? UP : DOWN);  // P0.3 Up or Down
 004D 490008            tst REG[ 0],8
 0050 A009              jz L14
 0052 560300            mov [X+3],0
 0055 560200            mov [X+2],0
 0058 8007              xjmp L15
 005A           L14:
 005A 560301            mov [X+3],1
 005D 560200            mov [X+2],0
 0060           L15:
 0060 5203              mov A,[X+3]
 0062 5305              mov [_left_button],A
 0064                   .dbline 97
 0064           ;           right_button = ((P0DATA & 0x10) ? UP : DOWN);  // P0.4 Up or Down
 0064 490010            tst REG[ 0],16
 0067 A009              jz L17
 0069 560500            mov [X+5],0
 006C 560400            mov [X+4],0
 006F 8007              xjmp L18

⌨️ 快捷键说明

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