📄 adc.txt
字号:
00091c eafffffa B |L1.2316|
;;;332 {
;;;333 rADCCON|=0x1; //start ADC
|L1.2336|
000920 e51f05b8 LDR r0,|L1.880|
000924 e5900000 LDR r0,[r0,#0]
000928 e3800001 ORR r0,r0,#1
00092c e51f15c4 LDR r1,|L1.880|
000930 e5810000 STR r0,[r1,#0]
;;;334 while(rADCCON & 0x1); //check if Enable_start is low, waiting for 0
000934 e1a00000 NOP
|L1.2360|
000938 e51f05d0 LDR r0,|L1.880|
00093c e5900000 LDR r0,[r0,#0]
000940 e3100001 TST r0,#1
000944 1afffffb BNE |L1.2360|
;;;335 while(!(rADCCON & 0x8000)); //check if EC(End of Conversion) flag is high, waiting for 1
000948 e1a00000 NOP
|L1.2380|
00094c e51f05e4 LDR r0,|L1.880|
000950 e5900000 LDR r0,[r0,#0]
000954 e3100c80 TST r0,#0x8000
000958 0afffffb BEQ |L1.2380|
;;;336 *tmp = rADCDAX & 0x3ff;
00095c e51f05f4 LDR r0,|L1.880|
000960 e590000c LDR r0,[r0,#0xc]
000964 e1a00b00 MOV r0,r0,LSL #22
000968 e1a00b20 MOV r0,r0,LSR #22
00096c e5850000 STR r0,[r5,#0]
;;;337 tmp++;
000970 e2855004 ADD r5,r5,#4
;;;338 }
000974 eaffffe7 B |L1.2328|
;;;339
;;;340 for(i=0;i<REQCNT; i++)
|L1.2424|
000978 e3a04000 MOV r4,#0
|L1.2428|
00097c e3540064 CMP r4,#0x64
000980 aa000006 BGE |L1.2464|
000984 ea000001 B |L1.2448|
|L1.2440|
000988 e2844001 ADD r4,r4,#1
00098c eafffffa B |L1.2428|
;;;341 Uart_Printf("%04d\n", *dst++);
|L1.2448|
000990 e24f0f6a ADR r0,|L1.2032|
000994 e4961004 LDR r1,[r6],#4
000998 ebfffffe BL _printf
00099c eafffff9 B |L1.2440|
;;;342
;;;343 Uart_Printf("Conversion is done!!!\n");
|L1.2464|
0009a0 e28f0034 ADR r0,|L1.2524|
0009a4 ebfffffe BL _printf
;;;344 Uart_Printf("If you want to stop, press enter key else if you want to covert more, press any key except enter\n");
0009a8 e59f0044 LDR r0,|L1.2548|
0009ac ebfffffe BL _printf
;;;345 if(Uart_Getch()=='\r') break;
0009b0 ebfffffe BL Uart_Getch
0009b4 e350000d CMP r0,#0xd
0009b8 1a000000 BNE |L1.2496|
0009bc ea000000 B |L1.2500|
;;;346
;;;347 }
|L1.2496|
0009c0 eaffffc4 B |L1.2264|
;;;348 rADCCON=rADCCON|(1<<2); //stand by mode to reduce power consumption
|L1.2500|
0009c4 e51f065c LDR r0,|L1.880|
0009c8 e5900000 LDR r0,[r0,#0]
0009cc e3800004 ORR r0,r0,#4
0009d0 e51f1668 LDR r1,|L1.880|
0009d4 e5810000 STR r0,[r1,#0]
;;;349
;;;350
;;;351
;;;352 }
0009d8 e8bd80f8 LDMFD sp!,{r3-r7,pc}
|L1.2524|
0009dc 766e6f43 DCB "Conv"
0009e0 69737265 DCB "ersi"
0009e4 69206e6f DCB "on i"
0009e8 6f642073 DCB "s do"
0009ec 2121656e DCB "ne!!"
0009f0 00000a21 DCB "!\n\0\0"
|L1.2548|
0009f4 000000f0 DCD ||.constdata$1|| + 240
ENDP
Test_Adc_Interrupt PROC
;;;378 void Test_Adc_Interrupt(void)
;;;379 {
0009f8 e92d4010 STMFD sp!,{r4,lr}
;;;380 int i,key;
;;;381
;;;382 U32 ch;
;;;383
;;;384 Uart_Printf("ADC Test using Interrupt\n");
0009fc e28f0f49 ADR r0,|L1.2856|
000a00 ebfffffe BL _printf
;;;385 Uart_Printf("ADC conv. freq. = %dHz\n", ADC_FREQ);
000a04 e51f13dc LDR r1,|L1.1584|
000a08 e24f0ff7 ADR r0,|L1.1588|
000a0c ebfffffe BL _printf
;;;386
;;;387 adcDone=0;
000a10 e3a00000 MOV r0,#0
000a14 e51f1990 LDR r1,|L1.140|
000a18 e5810000 STR r0,[r1,#0] ; adcDone
;;;388 pISR_ADC_PENUP_DOWN=(U32)ADC_Int;
000a1c e59f0120 LDR r0,|L1.2884|
000a20 e59f1120 LDR r1,|L1.2888|
000a24 e5810f9c STR r0,[r1,#0xf9c]
;;;389 rINTMSK&=~(BIT_ADC_PENUP_DOWN);
000a28 e51f09b0 LDR r0,|L1.128|
000a2c e5900008 LDR r0,[r0,#8]
000a30 e3c00480 BIC r0,r0,#0x80000000
000a34 e51f19bc LDR r1,|L1.128|
000a38 e5810008 STR r0,[r1,#8]
;;;390 rINTSUBMSK &= ~(BIT_SUB_ADC);
000a3c e1a00001 MOV r0,r1
000a40 e590001c LDR r0,[r0,#0x1c]
000a44 e3c00a80 BIC r0,r0,#0x80000
000a48 e581001c STR r0,[r1,#0x1c]
;;;391
;;;392 Uart_Printf("Select the channel[0~3]:\n");
000a4c e24f0ff5 ADR r0,|L1.1664|
000a50 ebfffffe BL _printf
;;;393 ch=Uart_GetIntNum();
000a54 ebfffffe BL Uart_GetIntNum
000a58 e1a04000 MOV r4,r0
;;;394
;;;395 while(1) {
000a5c e1a00000 NOP
|L1.2656|
000a60 e1a00000 NOP
;;;396 preScaler = PCLK/ADC_FREQ -1; //PCLK:50.7MHz
000a64 e3a00013 MOV r0,#0x13
000a68 e51f14e4 LDR r1,|L1.1420|
000a6c e5810000 STR r0,[r1,#0] ; preScaler
;;;397 rADCCON = (1<<14)|(preScaler<<6)|(ch<<3); //setup channel
000a70 e51f04ec LDR r0,|L1.1420|
000a74 e5900000 LDR r0,[r0,#0] ; preScaler
000a78 e1a00300 MOV r0,r0,LSL #6
000a7c e1800184 ORR r0,r0,r4,LSL #3
000a80 e3800c40 ORR r0,r0,#0x4000
000a84 e51f171c LDR r1,|L1.880|
000a88 e5810000 STR r0,[r1,#0]
;;;398 rADCCON|=0x1; //start ADC
000a8c e1a00001 MOV r0,r1
000a90 e5900000 LDR r0,[r0,#0]
000a94 e3800001 ORR r0,r0,#1
000a98 e5810000 STR r0,[r1,#0]
;;;399
;;;400 while(!adcDone);
000a9c e1a00000 NOP
|L1.2720|
000aa0 e51f0a1c LDR r0,|L1.140|
000aa4 e5900000 LDR r0,[r0,#0] ; adcDone
000aa8 e3500000 CMP r0,#0
000aac 0afffffb BEQ |L1.2720|
;;;401 adcDone=0;
000ab0 e3a00000 MOV r0,#0
000ab4 e51f1a30 LDR r1,|L1.140|
000ab8 e5810000 STR r0,[r1,#0] ; adcDone
;;;402 Uart_Printf("Conversion is done!!!\n");
000abc e24f00e8 ADR r0,|L1.2524|
000ac0 ebfffffe BL _printf
;;;403
;;;404 Uart_Printf("Enter:stop conversion, Other:continue conversion\n");
000ac4 e28f0080 ADR r0,|L1.2892|
000ac8 ebfffffe BL _printf
;;;405 if(Uart_Getch()=='\r') break;
000acc ebfffffe BL Uart_Getch
000ad0 e350000d CMP r0,#0xd
000ad4 1a000000 BNE |L1.2780|
000ad8 ea000000 B |L1.2784|
;;;406 }
|L1.2780|
000adc eaffffdf B |L1.2656|
;;;407
;;;408 Uart_Printf("Press any key to continue\n");
|L1.2784|
000ae0 e28f0098 ADR r0,|L1.2944|
000ae4 ebfffffe BL _printf
;;;409 Uart_Getch();
000ae8 ebfffffe BL Uart_Getch
;;;410 rADCCON=rADCCON|(1<<2); //stand by mode to reduce power consumption
000aec e51f0784 LDR r0,|L1.880|
000af0 e5900000 LDR r0,[r0,#0]
000af4 e3800004 ORR r0,r0,#4
000af8 e51f1790 LDR r1,|L1.880|
000afc e5810000 STR r0,[r1,#0]
;;;411
;;;412 rINTSUBMSK|=(BIT_SUB_ADC);
000b00 e2410656 SUB r0,r1,#0x5600000
000b04 e590001c LDR r0,[r0,#0x1c]
000b08 e3800a80 ORR r0,r0,#0x80000
000b0c e2411656 SUB r1,r1,#0x5600000
000b10 e581001c STR r0,[r1,#0x1c]
;;;413 rINTMSK|=(BIT_ADC_PENUP_DOWN);
000b14 e1a00001 MOV r0,r1
000b18 e5900008 LDR r0,[r0,#8]
000b1c e3800480 ORR r0,r0,#0x80000000
000b20 e5810008 STR r0,[r1,#8]
;;;414
;;;415 }
000b24 e8bd8010 LDMFD sp!,{r4,pc}
|L1.2856|
000b28 20434441 DCB "ADC "
000b2c 74736554 DCB "Test"
000b30 69737520 DCB " usi"
000b34 4920676e DCB "ng I"
000b38 7265746e DCB "nter"
000b3c 74707572 DCB "rupt"
000b40 0000000a DCB "\n\0\0\0"
|L1.2884|
000b44 00000000 DCD ADC_Int
|L1.2888|
000b48 13fff000 DCD 0x13fff000
|L1.2892|
000b4c 65746e45 DCB "Ente"
000b50 74733a72 DCB "r:st"
000b54 6320706f DCB "op c"
000b58 65766e6f DCB "onve"
000b5c 6f697372 DCB "rsio"
000b60 4f202c6e DCB "n, O"
000b64 72656874 DCB "ther"
000b68 6e6f633a DCB ":con"
000b6c 756e6974 DCB "tinu"
000b70 6f632065 DCB "e co"
000b74 7265766e DCB "nver"
000b78 6e6f6973 DCB "sion"
000b7c 0000000a DCB "\n\0\0\0"
|L1.2944|
000b80 73657250 DCB "Pres"
000b84 6e612073 DCB "s an"
000b88 656b2079 DCB "y ke"
000b8c 6f742079 DCB "y to"
000b90 6e6f6320 DCB " con"
000b94 756e6974 DCB "tinu"
000b98 00000a65 DCB "e\n\0\0"
ENDP
Test_Ts_Auto PROC
;;;420 void Test_Ts_Auto(void)
;;;421 {
000b9c e92d4008 STMFD sp!,{r3,lr}
;;;422
;;;423
;;;424 Uart_Printf("[Touch Screen Test.]\n");
000ba0 e28f0f5c ADR r0,|L1.3352|
000ba4 ebfffffe BL _printf
;;;425 Uart_Printf("Auto X/Y position conversion mode test\n");
000ba8 e28f0f60 ADR r0,|L1.3376|
000bac ebfffffe BL _printf
;;;426
;;;427 #if 0
;;;428 rGPCON_M=(rGPCON_M&~(0x3f))|(0x3f);
;;;429 rGPCON_L=(rGPCON_L&~(0x3<<20))|(0x3<<20);
;;;430 #endif
;;;431
;;;432 rADCDLY=(1000); // ADC Start or Interval Delay
000bb0 e3a00ffa MOV r0,#0x3e8
000bb4 e51f184c LDR r1,|L1.880|
000bb8 e5810008 STR r0,[r1,#8]
;;;433
;;;434 // Enable Prescaler,Prescaler,AIN5/7 fix,Normal,Disable read start,No operation
;;;435 rADCCON = (1<<14)|(ADCPRS<<6)|(0<<3)|(0<<2)|(0<<1)|0;
000bbc e59f0194 LDR r0,|L1.3416|
000bc0 e1c11000 BIC r1,r1,r0
000bc4 e5810000 STR r0,[r1,#0]
;;;436
;;;437 //rADCTSC=(0<<8)|(13<<4)|(0<<3)|(0<<2)|3;//tark, XP pullup En,Normal,Waiting for interrupt mode
;;;438 rADCTSC=0xd3;
000bc8 e3a000d3 MOV r0,#0xd3
000bcc e1c11000 BIC r1,r1,r0
000bd0 e5810004 STR r0,[r1,#4]
;;;439
;;;440 pISR_ADC_PENUP_DOWN=(U32)TS_Auto_Int;
000bd4 e59f0180 LDR r0,|L1.3420|
000bd8 e51f1098 LDR r1,|L1.2888|
000bdc e5810f9c STR r0,[r1,#0xf9c]
;;;441 rINTMSK&=~(BIT_ADC_PENUP_DOWN);
000be0 e51f0b68 LDR r0,|L1.128|
000be4 e5900008 LDR r0,[r0,#8]
000be8 e3c00480 BIC r0,r0,#0x80000000
000bec e51f1b74 LDR r1,|L1.128|
000bf0 e5810008 STR r0,[r1,#8]
;;;442 rINTSUBMSK&=~(BIT_SUB_PENUP|BIT_SUB_PENDN|BIT_SUB_ADC);
000bf4 e1a00001 MOV r0,r1
000bf8 e590001c LDR r0,[r0,#0x1c]
000bfc e3c00ae0 BIC r0,r0,#0xe0000
000c00 e581001c STR r0,[r1,#0x1c]
;;;443
;;;444 Uart_Printf("\nType any key to exit!!!\n");
000c04 e28f0f55 ADR r0,|L1.3424|
000c08 ebfffffe BL _printf
;;;445 Uart_Printf("\nStylus Down, please...... \n");
000c0c e28f0f5a ADR r0,|L1.3452|
000c10 ebfffffe BL _printf
;;;446
;;;447 tsTrue=0;
000c14 e3a00000 MOV r0,#0
000c18 e51f18b4 LDR r1,|L1.876|
000c1c e5810000 STR r0,[r1,#0] ; tsTrue
;;;448 while(1) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -