📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _firmwareMode::
0000 .blkb 1
.area idata
0000 01 .byte 1
.area data(ram, con, rel)
0000 .dbfile ./main.c
0000 .dbsym e firmwareMode _firmwareMode c
.area text(rom, con, rel)
0000 .dbfile ./main.c
0000 .dbfunc e main _main fV
0000 ; j -> X+4
0000 ; i -> X+2
0000 ; adcVal -> X+0
0000 _main::
0000 .dbline -1
0000 10 push X
0001 4F mov X,SP
0002 3806 add SP,6
0004 .dbline 20
0004 ; //----------------------------------------------------------------------------
0004 ; // C main line
0004 ; //----------------------------------------------------------------------------
0004 ;
0004 ; #include <m8c.h> // part specific constants and macros
0004 ; #include "PSoCAPI.h" // PSoC API definitions for all User Modules
0004 ;
0004 ; unsigned char buttonChar;
0004 ; unsigned char sendChar;
0004 ; int gyroYData, gyroZData, tempData;
0004 ; unsigned short p1;
0004 ; unsigned short p2;
0004 ; signed short p3;
0004 ; signed short p4;
0004 ;
0004 ; //Change to 1 to compile as embedded mouse
0004 ; unsigned char firmwareMode = 1;
0004 ;
0004 ; void main()
0004 ; {
0004 .dbline 21
0004 ; int i=0;
0004 560300 mov [X+3],0
0007 560200 mov [X+2],0
000A .dbline 22
000A ; int j=0;
000A 560500 mov [X+5],0
000D 560400 mov [X+4],0
0010 .dbline 26
0010 ; int adcVal;
0010 ;
0010 ;
0010 ; PRT2DR |= 0x80;
0010 430880 or REG[0x8],-128
0013 .dbline 27
0013 ; PRT0DR |= 0x80;
0013 430080 or REG[ 0],-128
0016 .dbline 28
0016 ; PRT0DR |= 0x02;
0016 430002 or REG[ 0],2
0019 .dbline 29
0019 ; M8C_EnableGInt; // Enable global interrupts
0019 7101 or F, 01h
001B
001B .dbline 30
001B ; PGA_1_Start(PGA_1_HIGHPOWER);
001B 10 push X
001C 5003 mov A,3
001E 7C0000 xcall _PGA_1_Start
0021 .dbline 31
0021 ; ADCINC_1_Start(ADCINC_1_HIGHPOWER);
0021 5003 mov A,3
0023 7C0000 xcall _ADCINC_1_Start
0026 .dbline 33
0026 ;
0026 ; UART_1_Start(UART_1_PARITY_NONE);
0026 5000 mov A,0
0028 7C0000 xcall _UART_1_Start
002B 20 pop X
002C 81C7 xjmp L3
002E L2:
002E .dbline 35
002E ;
002E ; while (1) {
002E .dbline 36
002E ; buttonChar = 48;
002E 550F30 mov [_buttonChar],48
0031 .dbline 38
0031 ;
0031 ; ADCINC_1_GetSamples(1);
0031 10 push X
0032 5001 mov A,1
0034 7C0000 xcall _ADCINC_1_GetSamples
0037 20 pop X
0038 L5:
0038 .dbline 39
0038 L6:
0038 .dbline 39
0038 ; while(ADCINC_1_fIsDataAvailable() == 0);
0038 10 push X
0039 7C0000 xcall _ADCINC_1_fIsDataAvailable
003C 20 pop X
003D 3900 cmp A,0
003F AFF8 jz L5
0041 .dbline 40
0041 ; AMX_IN ^= 0x0c;
0041 45600C xor REG[0x60],12
0044 .dbline 41
0044 ; adcVal = ADCINC_1_iClearFlagGetData();
0044 10 push X
0045 7C0000 xcall _ADCINC_1_iClearFlagGetData
0048 5A00 mov [__r0],X
004A 20 pop X
004B 5401 mov [X+1],A
004D 5100 mov A,[__r0]
004F 5400 mov [X+0],A
0051 .dbline 42
0051 ; gyroZData = adcVal+2048;
0051 5201 mov A,[X+1]
0053 0100 add A,0
0055 530B mov [_gyroZData+1],A
0057 5200 mov A,[X+0]
0059 0908 adc A,8
005B 530A mov [_gyroZData],A
005D .dbline 44
005D ;
005D ; ADCINC_1_GetSamples(1);
005D 10 push X
005E 5001 mov A,1
0060 7C0000 xcall _ADCINC_1_GetSamples
0063 20 pop X
0064 L8:
0064 .dbline 45
0064 L9:
0064 .dbline 45
0064 ; while(ADCINC_1_fIsDataAvailable() == 0);
0064 10 push X
0065 7C0000 xcall _ADCINC_1_fIsDataAvailable
0068 20 pop X
0069 3900 cmp A,0
006B AFF8 jz L8
006D .dbline 46
006D ; AMX_IN |= 0x0c;
006D 43600C or REG[0x60],12
0070 .dbline 47
0070 ; adcVal = ADCINC_1_iClearFlagGetData();
0070 10 push X
0071 7C0000 xcall _ADCINC_1_iClearFlagGetData
0074 5A00 mov [__r0],X
0076 20 pop X
0077 5401 mov [X+1],A
0079 5100 mov A,[__r0]
007B 5400 mov [X+0],A
007D .dbline 48
007D ; gyroYData = adcVal+2048;
007D 5201 mov A,[X+1]
007F 0100 add A,0
0081 530D mov [_gyroYData+1],A
0083 5200 mov A,[X+0]
0085 0908 adc A,8
0087 530C mov [_gyroYData],A
0089 .dbline 50
0089 ;
0089 ; ADCINC_1_GetSamples(1);
0089 10 push X
008A 5001 mov A,1
008C 7C0000 xcall _ADCINC_1_GetSamples
008F 20 pop X
0090 L11:
0090 .dbline 51
0090 L12:
0090 .dbline 51
0090 ; while(ADCINC_1_fIsDataAvailable() == 0);
0090 10 push X
0091 7C0000 xcall _ADCINC_1_fIsDataAvailable
0094 20 pop X
0095 3900 cmp A,0
0097 AFF8 jz L11
0099 .dbline 52
0099 ; AMX_IN &= 0xfb;
0099 4160FB and REG[0x60],-5
009C .dbline 53
009C ; adcVal = ADCINC_1_iClearFlagGetData();
009C 10 push X
009D 7C0000 xcall _ADCINC_1_iClearFlagGetData
00A0 5A00 mov [__r0],X
00A2 20 pop X
00A3 5401 mov [X+1],A
00A5 5100 mov A,[__r0]
00A7 5400 mov [X+0],A
00A9 .dbline 54
00A9 ; tempData = adcVal+2048;
00A9 5201 mov A,[X+1]
00AB 0100 add A,0
00AD 5309 mov [_tempData+1],A
00AF 5200 mov A,[X+0]
00B1 0908 adc A,8
00B3 5308 mov [_tempData],A
00B5 .dbline 56
00B5 ;
00B5 ; p1 = (unsigned short)gyroYData;
00B5 5F070D mov [_p1+1],[_gyroYData+1]
00B8 5F060C mov [_p1],[_gyroYData]
00BB .dbline 57
00BB ; p2 = (unsigned short)gyroZData;
00BB 5F050B mov [_p2+1],[_gyroZData+1]
00BE 5F040A mov [_p2],[_gyroZData]
00C1 .dbline 59
00C1 ;
00C1 ; buttonChar = 0x30;
00C1 550F30 mov [_buttonChar],48
00C4 .dbline 62
00C4 ;
00C4 ; //Get button state
00C4 ; if ((PRT0DR & 0x80) == 0) {
00C4 490080 tst REG[ 0],-128
00C7 B004 jnz L14
00C9 .dbline 62
00C9 .dbline 63
00C9 ; buttonChar|=0x01;
00C9 2E0F01 or [_buttonChar],1
00CC .dbline 64
00CC ; }
00CC L14:
00CC .dbline 65
00CC ; if ((PRT0DR & 0x02) == 0) {
00CC 490002 tst REG[ 0],2
00CF B004 jnz L16
00D1 .dbline 65
00D1 .dbline 66
00D1 ; buttonChar|=0x02;
00D1 2E0F02 or [_buttonChar],2
00D4 .dbline 67
00D4 ; }
00D4 L16:
00D4 .dbline 70
00D4 ;
00D4 ; //Run Mouse Algorithm
00D4 ; updateMouse(&tempData, &p1, &p2, &p3, &p4, &buttonChar);
00D4 500F mov A,>_buttonChar
00D6 08 push A
00D7 500F mov A,<_buttonChar
00D9 08 push A
00DA 5000 mov A,>_p4
00DC 08 push A
00DD 5000 mov A,<_p4
00DF 08 push A
00E0 5002 mov A,>_p3
00E2 08 push A
00E3 5002 mov A,<_p3
00E5 08 push A
00E6 5004 mov A,>_p2
00E8 08 push A
00E9 5004 mov A,<_p2
00EB 08 push A
00EC 5006 mov A,>_p1
00EE 08 push A
00EF 5006 mov A,<_p1
00F1 08 push A
00F2 5008 mov A,>_tempData
00F4 08 push A
00F5 5008 mov A,<_tempData
00F7 08 push A
00F8 7C0000 xcall _updateMouse
00FB 38F4 add SP,-12
00FD L18:
00FD .dbline 73
00FD .dbline 73
00FD L19:
00FD .dbline 73
00FD ;
00FD ; //Send data
00FD ; while (!UART_1_TX_COMPLETE) {}
00FD .dbline 74
00FD ; UART_1_PutChar('$');
00FD 10 push X
00FE 5024 mov A,36
0100 7C0000 xcall _UART_1_PutChar
0103 20 pop X
0104 .dbline 76
0104 ;
0104 ; if (firmwareMode==0) {
0104 3C0000 cmp [_firmwareMode],0
0107 B066 jnz L21
0109 .dbline 76
0109 .dbline 79
0109 ;
0109 ; //Send firmware mode
0109 ; UART_1_PutChar(0);
0109 10 push X
010A 5000 mov A,0
010C 7C0000 xcall _UART_1_PutChar
010F 20 pop X
0110 .dbline 82
0110 ;
0110 ; //Send raw data
0110 ; asm("mov [_sendChar], [_tempData]");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -