?? main.s
字號:
.module main.c
.area text(rom, con, rel)
.dbfile ./main.c
.dbfunc e TD_init _TD_init fV
_TD_init::
.dbline -1
.dbline 54
; // Switch S1 is connected to P0.2 (Down=Start Movement/Up=Stop Movement)
; // Switch S2 is connected to P0.3 (Down=Left Button Down/Up=Left Button Up)
; // Switch S3 is connected to P0.4 (Not used)
; //
; // LED D1 is connected to P0.5 (Tracks S1: On=Down/Off=Up)
; // LED D2 is connected to P0.6 (Tracks S2: On=Down/Off=Up)
; // LED D3 is connected to P1.3 (Not used)
; //
; //----------------------------------------------------------------------------
;
; #include <m8c.h> // part specific constants and macros
; #include "PSoCAPI.h" // PSoC API definitions for all User Modules
;
; // Constant for button handling
; #define GO 1
; #define STOP 0
; #define UP 0
; #define DOWN 1
; #define NULL 0
; #define FULL 1
; // Constants for the mouse reports
; #define STEP_SIZE 1
; #define X_SIGN 1
; #define Y_SIGN 1
; #define Cap_L_UP 1
; #define Cap_L_DOWN 0
; #define Shift_UP 1
; #define Shift_DOWN 0
; // Movement Vectors for the letters U, S, and B
;
; /*#define STEP(ctl,NULL,char1,char2,char3,char4,char5,char6) ( ctl ), \
; (NULL),(char1),(char2),(char3),(char4),(char5),(char6),0
;
; const BYTE a_logo_vectors[] =
; {
; STEP(NULL, NULL,0x00,0x00,0x00,0x00,0x00,0x97), // ;1
; STEP(Shift_DOWN,NULL,0x00,0x00,0x00,0x00,0x00,0x97), // ;1
; };
;
; void delay(unsigned char ch)
; {
; unsigned char couter;
; while(ch)
; {
; couter=0xff;
; while(couter)
; couter--;
; ch--;
; }
; return;
; }
; */
; void TD_init()
; {
.dbline 55
; M8C_EnableGInt;
or F, 01h
.dbline 62
;
; // USB_INTERFACE_0_OUT_RPT_DATA[0] = 0;
;
; // OSC_CR0 &= ~OSC_CR0_CPU;
; // OSC_CR0 |= OSC_CR0_CPU_24MHz;
;
; USB_Start(0);
push X
mov A,0
xcall _USB_Start
pop X
L3:
.dbline 63
L4:
.dbline 63
; while(USB_bGetConfiguration() == 0);
push X
xcall _USB_bGetConfiguration
pop X
cmp A,0
jz L3
.dbline -2
.dbline 66
;
; // while(USB_INTERFACE_0_OUT_RPT_DATA[0] == 0);
; }
L2:
.dbline 0 ; func end
ret
.dbend
.area data(ram, con, rel)
.dbfile ./main.c
_a_ram::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 'S,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.dbsym e a_ram _a_ram A[8:8]c
_b_ram::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 'G,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.dbsym e b_ram _b_ram A[8:8]c
_c_ram::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.dbsym e c_ram _c_ram A[8:8]c
_d_ram::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 57,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile ./main.c
.dbsym e d_ram _d_ram A[8:8]c
.area text(rom, con, rel)
.dbfile ./main.c
.dbfunc e main _main fV
_main::
.dbline -1
push X
mov X,SP
add SP,8
.dbline 77
; //
; BYTE left_button;
; BYTE move,right_button;
; BYTE pre_move,pre_LB_down,pre_RB_down;
; BYTE a_ram[8]={0x00, 0x00,0x53,0x00,0x00,0x00,0x00,0x00};
; BYTE b_ram[8]={0x00, 0x00,0x47,0x00,0x00,0x00,0x00,0x00};
; BYTE c_ram[8]={0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00};
; BYTE d_ram[8]={0x00, 0x00,0x39,0x00,0x00,0x00,0x00,0x00};
; //unsigned char *p_data;
; void main()
; {
.dbline 78
; TD_init();
xcall _TD_init
.dbline 82
;
; //p_data = &a_logo_vectors[0]; // Point to the first of the logo vectors
;
; move = STOP;
mov [_move],0
.dbline 83
; left_button = UP;
mov [_left_button],0
.dbline 84
; right_button= UP;
mov [_right_button],0
.dbline 85
; pre_move=UP;
mov [_pre_move],0
.dbline 86
; pre_LB_down=UP;
mov [_pre_LB_down],0
.dbline 87
; pre_RB_down=UP;
mov [_pre_RB_down],0
.dbline 89
;
; P0DATA |= (0x20); // P0.5 low (on)
or REG[ 0],32
.dbline 90
; P0DATA |= (0x40); // P0.6 low (on)
or REG[ 0],64
.dbline 91
; P1DATA |= (0x08); // P1.3 low (on)
or REG[0x1],8
xjmp L8
L7:
.dbline 94
;
; while (1)
; {
.dbline 95
; move = ((P0DATA & 0x04) ? STOP : GO); // P0.2 Up or Down
tst REG[ 0],4
jz L11
mov [X+1],0
mov [X+0],0
xjmp L12
L11:
mov [X+1],1
mov [X+0],0
L12:
mov A,[X+1]
mov [_move],A
.dbline 96
; left_button = ((P0DATA & 0x08) ? UP : DOWN); // P0.3 Up or Down
tst REG[ 0],8
jz L14
mov [X+3],0
mov [X+2],0
xjmp L15
L14:
mov [X+3],1
mov [X+2],0
L15:
mov A,[X+3]
mov [_left_button],A
.dbline 97
; right_button = ((P0DATA & 0x10) ? UP : DOWN); // P0.4 Up or Down
tst REG[ 0],16
jz L17
mov [X+5],0
mov [X+4],0
xjmp L18
L17:
mov [X+5],1
mov [X+4],0
L18:
mov A,[X+5]
mov [_right_button],A
.dbline 98
; if (move == STOP)
cmp [_move],0
jnz L19
.dbline 99
; {
.dbline 100
; P0DATA |= 0x20; // P0.5 high (off)
or REG[ 0],32
.dbline 101
; pre_move=UP;
mov [_pre_move],0
.dbline 104
; // while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
; // USB_LoadEP(1, &c_ram[0], 8);
; }
L19:
.dbline 105
; if (move == GO && pre_move ==UP)
cmp [_move],1
jnz L21
cmp [_pre_move],0
jnz L21
.dbline 106
; {
.dbline 107
; P0DATA &= ~(0x20); // P0.5 low (on)
and REG[ 0],-33
.dbline 108
; pre_move=DOWN;
mov [_pre_move],1
L23:
.dbline 110
L24:
.dbline 110
; // Check to see if the endpoint is empty
; while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
push X
mov A,1
xcall _USB_bGetEPState
pop X
cmp A,1
jnz L23
.dbline 111
; USB_LoadEP(1, &a_ram[0], 8);
mov [_USB_APIEPNumber],1
.dbline 111
mov [_USB_APICount],8
.dbline 111
push X
mov A,>_a_ram
push A
mov A,<_a_ram
mov X,A
pop A
xcall _USB_XLoadEP
pop X
.dbline 112
; }
L21:
.dbline 114
; ///////////////////
; if (left_button == UP)
cmp [_left_button],0
jnz L26
.dbline 115
; {
.dbline 116
; P0DATA |= 0x40; // P0.6 high (off)
or REG[ 0],64
.dbline 117
; pre_LB_down =UP;
mov [_pre_LB_down],0
.dbline 120
; // while(USB_bGetEPState(1) != IN_BUFFER_EMPTY);
; // USB_LoadEP(1, &c_ram[0], 8);
; }
L26:
.dbline 121
; if (left_button == DOWN && pre_LB_down ==UP)
cmp [_left_button],1
jnz L28
cmp [_pre_LB_down],0
jnz L28
.dbline 122
; {
.dbline 123
; P0DATA &= ~(0x40); // P0.6 low (on)
and REG[ 0],-65
.dbline 124
; pre_LB_down=DOWN;
mov [_pre_LB_down],1
.dbline 125
; switch (USB_bGetEPState(1))
push X
mov A,1
xcall _USB_bGetEPState
pop X
mov [X+7],A
mov [X+6],0
cmp [X+6],0
jnz X2
cmp [X+7],0
jz L33
X2:
cmp [X+6],0
jnz X3
cmp [X+7],1
jz L34
X3:
cmp [X+6],0
jnz X4
cmp [X+7],2
jz L35
X4:
xjmp L31
X0:
.dbline 126
; {
L33:
.dbline 127
; case 0: P0DATA &= ~(0x20);break; // P0.5 low (on)
and REG[ 0],-33
.dbline 127
xjmp L31
L34:
.dbline 128
; case 1: P0DATA &= ~(0x40);break; // P0.6 low (on)
and REG[ 0],-65
.dbline 128
xjmp L31
L35:
.dbline 129
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -