📄 dvstest.txt
字号:
000384 412e8480
|L1.904|
000388 00000000 DCD ||.bss$2||
ENDP
Set_Lcd_Tft_16Bit_240320_Dvs PROC
;;;264 void Set_Lcd_Tft_16Bit_240320_Dvs(void)
;;;265 {
00038c e92d4008 STMFD sp!,{r3,lr}
;;;266 int i,j,k;
;;;267
;;;268 Uart_Printf("[Set LCD]\n");
000390 e28f0f61 ADR r0,|L1.1308|
000394 ebfffffe BL Uart_Printf
;;;269
;;;270 Lcd_Port_Init();
000398 ebfffffe BL Lcd_Port_Init
;;;271 Lcd_Init(MODE_TFT_16BIT_240320);
00039c e59f0184 LDR r0,|L1.1320|
0003a0 ebfffffe BL Lcd_Init
;;;272 Glib_Init(MODE_TFT_16BIT_240320);
0003a4 e59f017c LDR r0,|L1.1320|
0003a8 ebfffffe BL Glib_Init
;;;273 Lcd_Lcc3600Enable(); // Enable LCC3600
0003ac ebfffffe BL Lcd_Lcc3600Enable
;;;274 Lcd_PowerEnable(0, 1);
0003b0 e3a01001 MOV r1,#1
0003b4 e3a00000 MOV r0,#0
0003b8 ebfffffe BL Lcd_PowerEnable
;;;275 Lcd_EnvidOnOff(1);
0003bc e3a00001 MOV r0,#1
0003c0 ebfffffe BL Lcd_EnvidOnOff
;;;276
;;;277 Glib_ClearScr(0, MODE_TFT_16BIT_240320);
0003c4 e59f115c LDR r1,|L1.1320|
0003c8 e3a00000 MOV r0,#0
0003cc ebfffffe BL Glib_ClearScr
;;;278 Glib_FilledRectangle(0,0,119,159,0xf800);
0003d0 e3a03cf8 MOV r3,#0xf800
0003d4 e58d3000 STR r3,[sp,#0]
0003d8 e3a0309f MOV r3,#0x9f
0003dc e3a02077 MOV r2,#0x77
0003e0 e3a01000 MOV r1,#0
0003e4 e3a00000 MOV r0,#0
0003e8 ebfffffe BL Glib_FilledRectangle
;;;279 Glib_FilledRectangle(120,0,239,159,0x07e0);
0003ec e3a03e7e MOV r3,#0x7e0
0003f0 e58d3000 STR r3,[sp,#0]
0003f4 e3a0309f MOV r3,#0x9f
0003f8 e3a020ef MOV r2,#0xef
0003fc e3a01000 MOV r1,#0
000400 e3a00078 MOV r0,#0x78
000404 ebfffffe BL Glib_FilledRectangle
;;;280 Glib_FilledRectangle(0,160,119,320,0x001f);
000408 e3a0301f MOV r3,#0x1f
00040c e58d3000 STR r3,[sp,#0]
000410 e3a03f50 MOV r3,#0x140
000414 e3a02077 MOV r2,#0x77
000418 e3a010a0 MOV r1,#0xa0
00041c e3a00000 MOV r0,#0
000420 ebfffffe BL Glib_FilledRectangle
;;;281 Glib_FilledRectangle(120,160,239,320,0xffff);
000424 e59f3100 LDR r3,|L1.1324|
000428 e58d3000 STR r3,[sp,#0]
00042c e3a03f50 MOV r3,#0x140
000430 e3a020ef MOV r2,#0xef
000434 e3a010a0 MOV r1,#0xa0
000438 e3a00078 MOV r0,#0x78
00043c ebfffffe BL Glib_FilledRectangle
;;;282 Glib_FilledRectangle(100,100,150,200,0x5555);
000440 e59f30e8 LDR r3,|L1.1328|
000444 e58d3000 STR r3,[sp,#0]
000448 e3a030c8 MOV r3,#0xc8
00044c e3a02096 MOV r2,#0x96
000450 e3a01064 MOV r1,#0x64
000454 e3a00064 MOV r0,#0x64
000458 ebfffffe BL Glib_FilledRectangle
;;;283
;;;284 rLCDCON1 &= ~(0x1); // ENVID off.
00045c e3a0044d MOV r0,#0x4d000000
000460 e5900000 LDR r0,[r0,#0]
000464 e3c00001 BIC r0,r0,#1
000468 e3a0144d MOV r1,#0x4d000000
00046c e5810000 STR r0,[r1,#0]
;;;285 rLCDCON1 = (rLCDCON1 & ~(0x3ff<<8)) | (9<<8) | 1; // ENVID on. 5MHz 60fps
000470 e3a0044d MOV r0,#0x4d000000
000474 e5900000 LDR r0,[r0,#0]
000478 e3c00bc0 BIC r0,r0,#0x30000
00047c e3c00cff BIC r0,r0,#0xff00
000480 e3800e90 ORR r0,r0,#0x900
000484 e3800001 ORR r0,r0,#1
000488 e3a0144d MOV r1,#0x4d000000
00048c e5810000 STR r0,[r1,#0]
;;;286
;;;287 // ON PWREN signal
;;;288 rLCDCON5 = (rLCDCON5 & ~(1<<3)) ; // PWREN disable
000490 e3a0044d MOV r0,#0x4d000000
000494 e5900010 LDR r0,[r0,#0x10]
000498 e3c00008 BIC r0,r0,#8
00049c e3a0144d MOV r1,#0x4d000000
0004a0 e5810010 STR r0,[r1,#0x10]
;;;289 rGPGCON = (rGPGCON & ~(0x3<<8)) | 0x1<<8; // GPG4, PWR_EN -> Output.
0004a4 e3a00456 MOV r0,#0x56000000
0004a8 e5900060 LDR r0,[r0,#0x60]
0004ac e3c00fc0 BIC r0,r0,#0x300
0004b0 e3800f40 ORR r0,r0,#0x100
0004b4 e3a01456 MOV r1,#0x56000000
0004b8 e5810060 STR r0,[r1,#0x60]
;;;290 rGPGDAT&=(~(1<<4)); // GPG4=Low
0004bc e3a00456 MOV r0,#0x56000000
0004c0 e5900064 LDR r0,[r0,#0x64]
0004c4 e3c00010 BIC r0,r0,#0x10
0004c8 e3a01456 MOV r1,#0x56000000
0004cc e5810064 STR r0,[r1,#0x64]
;;;291 Delay(50); // GPG4=Low
0004d0 e3a00032 MOV r0,#0x32
0004d4 ebfffffe BL Delay
;;;292 rGPGDAT|=(1<<4); //GPG4=High
0004d8 e3a00456 MOV r0,#0x56000000
0004dc e5900064 LDR r0,[r0,#0x64]
0004e0 e3800010 ORR r0,r0,#0x10
0004e4 e3a01456 MOV r1,#0x56000000
0004e8 e5810064 STR r0,[r1,#0x64]
;;;293
;;;294 //--------LCD frame interrupt setting ------------------------------------START
;;;295 pISR_LCD=(unsigned)Lcd_Int_Frame_ForDvs;
0004ec e59f0040 LDR r0,|L1.1332|
0004f0 e59f1040 LDR r1,|L1.1336|
0004f4 e5810f60 STR r0,[r1,#0xf60]
;;;296 rINTMSK &= ~(BIT_LCD);
0004f8 e3a0044a MOV r0,#0x4a000000
0004fc e5900008 LDR r0,[r0,#8]
000500 e3c00b40 BIC r0,r0,#0x10000
000504 e3a0144a MOV r1,#0x4a000000
000508 e5810008 STR r0,[r1,#8]
;;;297 rLCDINTMSK=(1<<2)|(0<<1)|(1); // 8Words Trigger Level,Unmask Frame int,mask Fifo int
00050c e3a00005 MOV r0,#5
000510 e3a0144d MOV r1,#0x4d000000
000514 e581005c STR r0,[r1,#0x5c]
;;;298 //--------LCD frame interrupt setting ------------------------------------END
;;;299
;;;300 }
000518 e8bd8008 LDMFD sp!,{r3,pc}
|L1.1308|
00051c 7465535b DCB "[Set"
000520 44434c20 DCB " LCD"
000524 00000a5d DCB "]\n\0\0"
|L1.1320|
000528 00004104 DCD 0x00004104
|L1.1324|
00052c 0000ffff DCD 0x0000ffff
|L1.1328|
000530 00005555 DCD 0x00005555
|L1.1332|
000534 00000000 DCD Lcd_Int_Frame_ForDvs
|L1.1336|
000538 31fff000 DCD 0x31fff000
ENDP
Timer0_intr PROC
;;;125 void __irq Timer0_intr(void)
;;;126 {
00053c e92d503f STMFD sp!,{r0-r5,r12,lr}
;;;127 int i;
;;;128
;;;129 //if(Timer_cnt0%2) Led_Onoff(LED1,ON);
;;;130 //else Led_Onoff(LED1,OFF);
;;;131
;;;132 ClearPending(BIT_TIMER0)
000540 e3a00e40 MOV r0,#0x400
000544 e3a0144a MOV r1,#0x4a000000
000548 e5810000 STR r0,[r1,#0]
00054c e3a00e40 MOV r0,#0x400
000550 e3a0144a MOV r1,#0x4a000000
000554 e5810010 STR r0,[r1,#0x10]
000558 e3a0044a MOV r0,#0x4a000000
00055c e5900010 LDR r0,[r0,#0x10]
;;;133
;;;134 if(rLCDSRCPND & 2) {
000560 e3a0044d MOV r0,#0x4d000000
000564 e5900058 LDR r0,[r0,#0x58]
000568 e3100002 TST r0,#2
00056c 0a00000d BEQ |L1.1448|
;;;135 rLCDSRCPND=2; // Clear LCD SUB Interrupt source pending
000570 e3a00002 MOV r0,#2
000574 e3a0144d MOV r1,#0x4d000000
000578 e5810058 STR r0,[r1,#0x58]
;;;136 rLCDINTPND=2; // Clear LCD SUB Interrupt pending
00057c e3a00002 MOV r0,#2
000580 e3a0144d MOV r1,#0x4d000000
000584 e5810054 STR r0,[r1,#0x54]
;;;137 ClearPending(BIT_LCD);
000588 e3a00b40 MOV r0,#0x10000
00058c e3a0144a MOV r1,#0x4a000000
000590 e5810000 STR r0,[r1,#0]
000594 e3a00b40 MOV r0,#0x10000
000598 e3a0144a MOV r1,#0x4a000000
00059c e5810010 STR r0,[r1,#0x10]
0005a0 e3a0044a MOV r0,#0x4a000000
0005a4 e5900010 LDR r0,[r0,#0x10]
;;;138 }
;;;139
;;;140 #if ADS10==TRUE
;;;141 i= (rand()%700) + 61; // 0.081ms/cnt
|L1.1448|
0005a8 ebfffffe BL rand
0005ac e1a05000 MOV r5,r0
0005b0 e1a01000 MOV r1,r0
0005b4 e3a00faf MOV r0,#0x2bc
0005b8 ebfffffe BL __rt_sdiv
0005bc e281403d ADD r4,r1,#0x3d
;;;142 #else
;;;143 i= 370; // 0.081ms/cnt -> 370cnt==300ms.
;;;144 #endif
;;;145
;;;146 rTCNTB0 = i;
0005c0 e3a00451 MOV r0,#0x51000000
0005c4 e580400c STR r4,[r0,#0xc]
;;;147 //rTCNTB0 = timer_val_arr[Timer_cnt0%4];
;;;148
;;;149 // Load timer cnt value
;;;150 rTCON = 1<<3| 1<<1;
0005c8 e3a0000a MOV r0,#0xa
0005cc e3a01451 MOV r1,#0x51000000
0005d0 e5810008 STR r0,[r1,#8]
;;;151 // Timer start.
;;;152 rTCON = 1<<3| 1<<0;
0005d4 e3a00009 MOV r0,#9
0005d8 e3a01451 MOV r1,#0x51000000
0005dc e5810008 STR r0,[r1,#8]
;;;153
;;;154 if(Timer_cnt0%2) {
0005e0 e59f0114 LDR r0,|L1.1788|
0005e4 e5900000 LDR r0,[r0,#0] ; Timer_cnt0
0005e8 e3100001 TST r0,#1
0005ec 0a000008 BEQ |L1.1556|
;;;155 Idle_flag = 1; // Idle mode
0005f0 e3a00001 MOV r0,#1
0005f4 e51f128c LDR r1,|L1.880|
0005f8 e1c100b0 STRH r0,[r1,#0] ; Idle_flag
;;;156 rINTMSK &= ~(BIT_LCD); // unmask.
0005fc e3a0044a MOV r0,#0x4a000000
000600 e5900008 LDR r0,[r0,#8]
000604 e3c00b40 BIC r0,r0,#0x10000
000608 e3a0144a MOV r1,#0x4a000000
00060c e5810008 STR r0,[r1,#8]
000610 ea000007 B |L1.1588|
;;;157 #if IDLE_EN==1
;;;158 Led_Onoff(LED4, OFF);
;;;159 rCLKCON |= 1<<2; // Enter Idle mode.
;;;160 for(i=0;i<10;i++);
;;;161 //wait until S3C2400X enters IDLE mode.
;;;162 //wait EINT0 interrupt or RTC alarm interrupt
;;;163 rCLKCON&=~(1<<2);
;;;164 Led_Onoff(LED4, ON);
;;;165 //turn-off IDLE bit. IDLE bit should be turned off after wake-up.
;;;166 #endif
;;;167 } else {
;;;168 Idle_flag = 0; // Normal mode
|L1.1556|
000614 e3a00000 MOV r0,#0
000618 e51f12b0 LDR r1,|L1.880|
00061c e1c100b0 STRH r0,[r1,#0] ; Idle_flag
;;;169 rINTMSK &= ~(BIT_LCD); // unmask.
000620 e3a0044a MOV r0,#0x4a000000
000624 e5900008 LDR r0,[r0,#8]
000628 e3c00b40 BIC r0,r0,#0x10000
00062c e3a0144a MOV r1,#0x4a000000
000630 e5810008 STR r0,[r1,#8]
;;;170 }
;;;171
;;;172 Timer_cnt0++;
|L1.1588|
000634 e59f00c0 LDR r0,|L1.1788|
000638 e5900000 LDR r0,[r0,#0] ; Timer_cnt0
00063c e2800001 ADD r0,r0,#1
000640 e59f10b4 LDR r1,|L1.1788|
000644 e5810000 STR r0,[r1,#0] ; Timer_cnt0
;;;173 }
000648 e8bd503f LDMFD sp!,{r0-r5,r12,lr}
00064c e25ef004 SUBS pc,lr,#4
ENDP
Timer_Setting PROC
;;;311 void Timer_Setting(void)
;;;312 {
000650 e92d4010 STMFD sp!,{r4,lr}
;;;313 float cnt_val=0.0;
000654 e3a04000 MOV r4,#0
;;;314
;;;315 Uart_Printf("[ Timer 0 Interrupt setting]\n");
000658 e28f00a0 ADR r0,|L1.1792|
00065c ebfffffe BL Uart_Printf
;;;316
;;;317 // Uart_Printf("[Timer interval: %4.1f, %4.1f, %4.1f, %4.1f[ms].\n", \
;;;318 // timer_val_arr[0]*0.081, timer_val_arr[1]*0.081, timer_val_arr[2]*0.081, timer_val_arr[3]*0.081);
;;;319 // 296, 617, 802, 1284 -> 24ms, 50ms, 65ms, 104ms for eac
;;;320
;;;321 rGPBCON = rGPBCON& ~(0x03) | 0x2;
000660 e3a00456 MOV r0,#0x56000000
000664 e5900010 LDR r0,[r0,#0x10]
000668 e3c00003 BIC r0,r0,#3
00066c e3800002 ORR r0,r0,#2
000670 e3a01456 MOV r1,#0x56000000
000674 e5810010 STR r0,[r1,#0x10]
;;;322 rCLKCON |= 1<<8; // PWM timer PCLK clock enable.
000678 e3a0044c MOV r0,#0x4c000000
00067c e590000c LDR r0,[r0,#0xc]
000680 e3800f40 ORR r0,r0,#0x100
000684 e3a0144c MOV r1,#0x4c000000
000688 e581000c STR r0,[r1,#0xc]
;;;323
;;;324 pISR_TIMER0 = (int)Timer0_intr;
00068c e59f008c LDR r0,|L1.1824|
000690 e51f1160 LDR r1,|L1.1336|
000694 e5810f48 STR r0,[r1,#0xf48]
;;;325 // Timer interupt start.
;;;326 rINTMSK &= ~BIT_TIMER0;
000698 e3a0044a MOV r0,#0x4a000000
00069c e5900008 LDR r0,[r0,#8]
0006a0 e3c00e40 BIC r0,r0,#0x400
0006a4 e3a0144a MOV r1,#0x4a000000
0006a8 e5810008 STR r0,[r1,#8]
;;;327
;;;328 rTCFG0 = 0xff; // Prescaler0 = 0xff=256.
0006ac e3a000ff MOV r0,#0xff
0006b0 e3a01451 MOV r1,#0x51000000
0006b4 e5810000 STR r0,[r1,#0]
;;;329 // Timer input clock freq = PCLK/(Prescaler0+1)/divider value.
;;;330 // where, PCLK = 50.7MHz
;;;331
;;;332 rTCFG1 = 0<<20 | 3<<0; // MUX0 = 1/16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -