📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_firmwareMode::
.blkb 1
.area idata
.byte 1
.area data(ram, con, rel)
.dbfile ./main.c
.dbsym e firmwareMode _firmwareMode c
.area text(rom, con, rel)
.dbfile ./main.c
.dbfunc e main _main fV
; j -> X+4
; i -> X+2
; adcVal -> X+0
_main::
.dbline -1
push X
mov X,SP
add SP,6
.dbline 20
; //----------------------------------------------------------------------------
; // C main line
; //----------------------------------------------------------------------------
;
; #include <m8c.h> // part specific constants and macros
; #include "PSoCAPI.h" // PSoC API definitions for all User Modules
;
; unsigned char buttonChar;
; unsigned char sendChar;
; int gyroYData, gyroZData, tempData;
; unsigned short p1;
; unsigned short p2;
; signed short p3;
; signed short p4;
;
; //Change to 1 to compile as embedded mouse
; unsigned char firmwareMode = 1;
;
; void main()
; {
.dbline 21
; int i=0;
mov [X+3],0
mov [X+2],0
.dbline 22
; int j=0;
mov [X+5],0
mov [X+4],0
.dbline 26
; int adcVal;
;
;
; PRT2DR |= 0x80;
or REG[0x8],-128
.dbline 27
; PRT0DR |= 0x80;
or REG[ 0],-128
.dbline 28
; PRT0DR |= 0x02;
or REG[ 0],2
.dbline 29
; M8C_EnableGInt; // Enable global interrupts
or F, 01h
.dbline 30
; PGA_1_Start(PGA_1_HIGHPOWER);
push X
mov A,3
xcall _PGA_1_Start
.dbline 31
; ADCINC_1_Start(ADCINC_1_HIGHPOWER);
mov A,3
xcall _ADCINC_1_Start
.dbline 33
;
; UART_1_Start(UART_1_PARITY_NONE);
mov A,0
xcall _UART_1_Start
pop X
xjmp L3
L2:
.dbline 35
;
; while (1) {
.dbline 36
; buttonChar = 48;
mov [_buttonChar],48
.dbline 38
;
; ADCINC_1_GetSamples(1);
push X
mov A,1
xcall _ADCINC_1_GetSamples
pop X
L5:
.dbline 39
L6:
.dbline 39
; while(ADCINC_1_fIsDataAvailable() == 0);
push X
xcall _ADCINC_1_fIsDataAvailable
pop X
cmp A,0
jz L5
.dbline 40
; AMX_IN ^= 0x0c;
xor REG[0x60],12
.dbline 41
; adcVal = ADCINC_1_iClearFlagGetData();
push X
xcall _ADCINC_1_iClearFlagGetData
mov [__r0],X
pop X
mov [X+1],A
mov A,[__r0]
mov [X+0],A
.dbline 42
; gyroZData = adcVal+2048;
mov A,[X+1]
add A,0
mov [_gyroZData+1],A
mov A,[X+0]
adc A,8
mov [_gyroZData],A
.dbline 44
;
; ADCINC_1_GetSamples(1);
push X
mov A,1
xcall _ADCINC_1_GetSamples
pop X
L8:
.dbline 45
L9:
.dbline 45
; while(ADCINC_1_fIsDataAvailable() == 0);
push X
xcall _ADCINC_1_fIsDataAvailable
pop X
cmp A,0
jz L8
.dbline 46
; AMX_IN |= 0x0c;
or REG[0x60],12
.dbline 47
; adcVal = ADCINC_1_iClearFlagGetData();
push X
xcall _ADCINC_1_iClearFlagGetData
mov [__r0],X
pop X
mov [X+1],A
mov A,[__r0]
mov [X+0],A
.dbline 48
; gyroYData = adcVal+2048;
mov A,[X+1]
add A,0
mov [_gyroYData+1],A
mov A,[X+0]
adc A,8
mov [_gyroYData],A
.dbline 50
;
; ADCINC_1_GetSamples(1);
push X
mov A,1
xcall _ADCINC_1_GetSamples
pop X
L11:
.dbline 51
L12:
.dbline 51
; while(ADCINC_1_fIsDataAvailable() == 0);
push X
xcall _ADCINC_1_fIsDataAvailable
pop X
cmp A,0
jz L11
.dbline 52
; AMX_IN &= 0xfb;
and REG[0x60],-5
.dbline 53
; adcVal = ADCINC_1_iClearFlagGetData();
push X
xcall _ADCINC_1_iClearFlagGetData
mov [__r0],X
pop X
mov [X+1],A
mov A,[__r0]
mov [X+0],A
.dbline 54
; tempData = adcVal+2048;
mov A,[X+1]
add A,0
mov [_tempData+1],A
mov A,[X+0]
adc A,8
mov [_tempData],A
.dbline 56
;
; p1 = (unsigned short)gyroYData;
mov [_p1+1],[_gyroYData+1]
mov [_p1],[_gyroYData]
.dbline 57
; p2 = (unsigned short)gyroZData;
mov [_p2+1],[_gyroZData+1]
mov [_p2],[_gyroZData]
.dbline 59
;
; buttonChar = 0x30;
mov [_buttonChar],48
.dbline 62
;
; //Get button state
; if ((PRT0DR & 0x80) == 0) {
tst REG[ 0],-128
jnz L14
.dbline 62
.dbline 63
; buttonChar|=0x01;
or [_buttonChar],1
.dbline 64
; }
L14:
.dbline 65
; if ((PRT0DR & 0x02) == 0) {
tst REG[ 0],2
jnz L16
.dbline 65
.dbline 66
; buttonChar|=0x02;
or [_buttonChar],2
.dbline 67
; }
L16:
.dbline 70
;
; //Run Mouse Algorithm
; updateMouse(&tempData, &p1, &p2, &p3, &p4, &buttonChar);
mov A,>_buttonChar
push A
mov A,<_buttonChar
push A
mov A,>_p4
push A
mov A,<_p4
push A
mov A,>_p3
push A
mov A,<_p3
push A
mov A,>_p2
push A
mov A,<_p2
push A
mov A,>_p1
push A
mov A,<_p1
push A
mov A,>_tempData
push A
mov A,<_tempData
push A
xcall _updateMouse
add SP,-12
L18:
.dbline 73
.dbline 73
L19:
.dbline 73
;
; //Send data
; while (!UART_1_TX_COMPLETE) {}
.dbline 74
; UART_1_PutChar('$');
push X
mov A,36
xcall _UART_1_PutChar
pop X
.dbline 76
;
; if (firmwareMode==0) {
cmp [_firmwareMode],0
jnz L21
.dbline 76
.dbline 79
;
; //Send firmware mode
; UART_1_PutChar(0);
push X
mov A,0
xcall _UART_1_PutChar
pop X
.dbline 82
;
; //Send raw data
; asm("mov [_sendChar], [_tempData]");
mov [_sendChar], [_tempData]
.dbline 83
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 84
; asm("mov [_sendChar], [_tempData+1]");
mov [_sendChar], [_tempData+1]
.dbline 85
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 87
;
; asm("mov [_sendChar], [_gyroYData]");
mov [_sendChar], [_gyroYData]
.dbline 88
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 89
; asm("mov [_sendChar], [_gyroYData+1]");
mov [_sendChar], [_gyroYData+1]
.dbline 90
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 92
;
; asm("mov [_sendChar], [_gyroZData]");
mov [_sendChar], [_gyroZData]
.dbline 93
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 94
; asm("mov [_sendChar], [_gyroZData+1]");
mov [_sendChar], [_gyroZData+1]
.dbline 95
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
L23:
.dbline 97
.dbline 97
L24:
.dbline 97
;
; while (!UART_1_TX_COMPLETE) {}
.dbline 99
;
; UART_1_PutChar(0);
push X
mov A,0
xcall _UART_1_PutChar
.dbline 100
; UART_1_PutChar(0);
mov A,0
xcall _UART_1_PutChar
.dbline 102
;
; UART_1_PutChar(0);
mov A,0
xcall _UART_1_PutChar
.dbline 103
; UART_1_PutChar(0);
mov A,0
xcall _UART_1_PutChar
.dbline 105
;
; UART_1_PutChar(0);
mov A,0
xcall _UART_1_PutChar
.dbline 106
; UART_1_PutChar(0);
mov A,0
xcall _UART_1_PutChar
pop X
.dbline 107
; }
xjmp L22
L21:
.dbline 108
; else {
.dbline 111
;
; //Send firmware mode
; UART_1_PutChar(1);
push X
mov A,1
xcall _UART_1_PutChar
pop X
.dbline 114
;
; //Send output of mouse algorithm
; asm("mov [_sendChar], [_tempData]");
mov [_sendChar], [_tempData]
.dbline 115
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 116
; asm("mov [_sendChar], [_tempData+1]");
mov [_sendChar], [_tempData+1]
.dbline 117
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 119
;
; asm("mov [_sendChar], [_gyroYData]");
mov [_sendChar], [_gyroYData]
.dbline 120
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 121
; asm("mov [_sendChar], [_gyroYData+1]");
mov [_sendChar], [_gyroYData+1]
.dbline 122
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 124
;
; asm("mov [_sendChar], [_gyroZData]");
mov [_sendChar], [_gyroZData]
.dbline 125
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 126
; asm("mov [_sendChar], [_gyroZData+1]");
mov [_sendChar], [_gyroZData+1]
.dbline 127
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
.dbline 129
;
; UART_1_PutChar(0);
mov A,0
xcall _UART_1_PutChar
.dbline 130
; UART_1_PutChar(0);
mov A,0
xcall _UART_1_PutChar
pop X
.dbline 132
;
; asm("mov [_sendChar], [_p3]");
mov [_sendChar], [_p3]
.dbline 133
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 134
; asm("mov [_sendChar], [_p3+1]");
mov [_sendChar], [_p3+1]
.dbline 135
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 137
;
; asm("mov [_sendChar], [_p4]");
mov [_sendChar], [_p4]
.dbline 138
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 139
; asm("mov [_sendChar], [_p4+1]");
mov [_sendChar], [_p4+1]
.dbline 140
; UART_1_PutChar(sendChar);
push X
mov A,[_sendChar]
xcall _UART_1_PutChar
pop X
.dbline 142
;
; }
L22:
.dbline 146
push X
mov A,[_buttonChar]
xcall _UART_1_PutChar
.dbline 148
mov A,13
xcall _UART_1_PutChar
.dbline 149
mov A,10
xcall _UART_1_PutChar
pop X
.dbline 151
L3:
.dbline 35
xjmp L2
X0:
.dbline -2
.dbline 153
;
;
; //Send button state
; UART_1_PutChar(buttonChar);
;
; UART_1_PutChar('\r');
; UART_1_PutChar('\n');
;
; }
;
; }
L1:
add SP,-6
pop X
.dbline 0 ; func end
jmp .
.dbsym l j 4 I
.dbsym l i 2 I
.dbsym l adcVal 0 I
.dbend
.area bss(ram, con, rel)
.dbfile ./main.c
_p4::
.blkb 2
.dbsym e p4 _p4 S
_p3::
.blkb 2
.dbsym e p3 _p3 S
_p2::
.blkb 2
.dbsym e p2 _p2 s
_p1::
.blkb 2
.dbsym e p1 _p1 s
_tempData::
.blkb 2
.dbsym e tempData _tempData I
_gyroZData::
.blkb 2
.dbsym e gyroZData _gyroZData I
_gyroYData::
.blkb 2
.dbsym e gyroYData _gyroYData I
_sendChar::
.blkb 1
.dbsym e sendChar _sendChar c
_buttonChar::
.blkb 1
.dbsym e buttonChar _buttonChar c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -