⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 framemgr.lst

📁 mg128+Ov7620实现图象采集
💻 LST
📖 第 1 页 / 共 2 页
字号:
 220 009e 0895      		ret
 221               	/* epilogue: frame size=0 */
 222 00a0 0895      		ret
 223               	/* epilogue end (size=1) */
 224               	/* function FrameMgr_acquireLine size 59 (58) */
 229               	.Lscope2:
 231               	.global	FrameMgr_processLine
 233               	FrameMgr_processLine:
 164:FrameMgr.c    **** 	}		
 165:FrameMgr.c    **** 	
 166:FrameMgr.c    **** }
 167:FrameMgr.c    **** 
 168:FrameMgr.c    **** /***********************************************************
 169:FrameMgr.c    **** 	Function Name: FrameMgr_processLine
 170:FrameMgr.c    **** 	Function Description: This function is responsible for
 171:FrameMgr.c    **** 	parsing the received image line and performing either
 172:FrameMgr.c    **** 	connected region mapping (if in the Tracking state) or
 173:FrameMgr.c    **** 	sending out the raw sampled data (if in the Dumping
 174:FrameMgr.c    **** 	state).
 175:FrameMgr.c    **** 	Inputs:  none
 176:FrameMgr.c    **** 	Outputs: none
 177:FrameMgr.c    **** ***********************************************************/	
 178:FrameMgr.c    **** void FrameMgr_processLine(void)
 179:FrameMgr.c    **** {
 235               	.LM22:
 236               	/* prologue: frame size=1 */
 237 00a2 BF92      		push r11
 238 00a4 CF92      		push r12
 239 00a6 DF92      		push r13
 240 00a8 EF92      		push r14
 241 00aa FF92      		push r15
 242 00ac 0F93      		push r16
 243 00ae 1F93      		push r17
 244 00b0 CF93      		push r28
 245 00b2 DF93      		push r29
 246 00b4 CDB7      		in r28,__SP_L__
 247 00b6 DEB7      		in r29,__SP_H__
 248 00b8 2197      		sbiw r28,1
 249 00ba 0FB6      		in __tmp_reg__,__SREG__
 250 00bc F894      		cli
 251 00be DEBF      		out __SP_H__,r29
 252 00c0 0FBE      		out __SREG__,__tmp_reg__
 253 00c2 CDBF      		out __SP_L__,r28
 254               	/* prologue end (size=17) */
 180:FrameMgr.c    **** 	//unsigned char i;
 181:FrameMgr.c    **** 	int i;
 182:FrameMgr.c    **** 	volatile unsigned char dataToSend;
 183:FrameMgr.c    **** 
 184:FrameMgr.c    **** 	
 185:FrameMgr.c    **** 
 186:FrameMgr.c    **** 	if (currentState == ST_FrameMgr_DumpingFrame)
 256               	.LM23:
 257 00c4 8091 0000 		lds r24,currentState
 258 00c8 8130      		cpi r24,lo8(1)
 259 00ca 09F0      		breq .+2
 260 00cc 71C0      		rjmp .L30
 187:FrameMgr.c    **** 	{
 188:FrameMgr.c    **** 		/* we want to sit in a tight loop and send the acquired data
 189:FrameMgr.c    **** 		sitting in current and previous line buffers out the serial
 190:FrameMgr.c    **** 		port...it is sent out the serial port immediately instead
 191:FrameMgr.c    **** 		of going into the UIMgr tx fifo because we can't do anything
 192:FrameMgr.c    **** 		until its sent out anyway...may as well just get it out now	*/
 193:FrameMgr.c    **** 		
 194:FrameMgr.c    **** 		/* currentLineBuffer is getting "g" previousLineBuffer is getting "b-r" */
 195:FrameMgr.c    **** 		UartInt_txByte(0x0B);			/* send the header byte */
 262               	.LM24:
 263 00ce 8BE0      		ldi r24,lo8(11)
 264 00d0 0E94 0000 		call UartInt_txByte
 196:FrameMgr.c    **** 		UartInt_txByte(lineCount);		/* send the line count */
 266               	.LM25:
 267 00d4 8091 0000 		lds r24,lineCount
 268 00d8 0E94 0000 		call UartInt_txByte
 197:FrameMgr.c    **** 		for (i=0; i<NUM_PIXELS_IN_A_DUMP_LINE; i+=2)////176
 270               	.LM26:
 271 00dc CC24      		clr r12
 272 00de DD24      		clr r13
 273 00e0 0F2E      		mov __tmp_reg__,r31
 274 00e2 F0EF      		ldi r31,lo8(-16)
 275 00e4 BF2E      		mov r11,r31
 276 00e6 F02D      		mov r31,__tmp_reg__
 277               	.L35:
 198:FrameMgr.c    **** 		{
 199:FrameMgr.c    **** 			/* when a dump line is sampled, the upper byte can potentially
 200:FrameMgr.c    **** 			have garbage in it...we don't have time to mask it off as we're
 201:FrameMgr.c    **** 			sampling, so it is done here before we send it out...we also
 202:FrameMgr.c    **** 			combine the samples together so we really are sending up a
 203:FrameMgr.c    **** 			sample for line N as well as line N+1 */
 204:FrameMgr.c    **** 			dataToSend = previousLineBuffer[i];
 279               	.LM27:
 280 00e8 0F2E      		mov __tmp_reg__,r31
 281 00ea F0E0      		ldi r31,lo8(previousLineBuffer)
 282 00ec EF2E      		mov r14,r31
 283 00ee F0E0      		ldi r31,hi8(previousLineBuffer)
 284 00f0 FF2E      		mov r15,r31
 285 00f2 F02D      		mov r31,__tmp_reg__
 286 00f4 EC0C      		add r14,r12
 287 00f6 FD1C      		adc r15,r13
 288 00f8 F701      		movw r30,r14
 289 00fa 8081      		ld r24,Z
 290 00fc 8983      		std Y+1,r24
 205:FrameMgr.c    **** 			dataToSend &= 0xF0;
 292               	.LM28:
 293 00fe 8981      		ldd r24,Y+1
 294 0100 8B21      		and r24,r11
 295 0102 8983      		std Y+1,r24
 206:FrameMgr.c    **** 			dataToSend >>= 4;
 297               	.LM29:
 298 0104 8981      		ldd r24,Y+1
 299 0106 8295      		swap r24
 300 0108 8F70      		andi r24,0x0f
 301 010a 8983      		std Y+1,r24
 207:FrameMgr.c    **** 			dataToSend |= (currentLineBuffer[i] & 0xF0);
 303               	.LM30:
 304 010c 8601      		movw r16,r12
 305 010e 0050      		subi r16,lo8(-(currentLineBuffer))
 306 0110 1040      		sbci r17,hi8(-(currentLineBuffer))
 307 0112 F801      		movw r30,r16
 308 0114 8081      		ld r24,Z
 309 0116 982F      		mov r25,r24
 310 0118 9B21      		and r25,r11
 311 011a 8981      		ldd r24,Y+1
 312 011c 892B      		or r24,r25
 313 011e 8983      		std Y+1,r24
 208:FrameMgr.c    **** 			/* dataToSend should be packed now */
 209:FrameMgr.c    **** 			UartInt_txByte(dataToSend);
 315               	.LM31:
 316 0120 8981      		ldd r24,Y+1
 317 0122 0E94 0000 		call UartInt_txByte
 210:FrameMgr.c    **** 			
 211:FrameMgr.c    **** 			/* flip the colors around since we are doing all G on Y and BR on UV */
 212:FrameMgr.c    **** 			dataToSend = currentLineBuffer[i+1];
 319               	.LM32:
 320 0126 F801      		movw r30,r16
 321 0128 8181      		ldd r24,Z+1
 322 012a 8983      		std Y+1,r24
 213:FrameMgr.c    **** 			dataToSend &= 0xF0;
 324               	.LM33:
 325 012c 8981      		ldd r24,Y+1
 326 012e 8B21      		and r24,r11
 327 0130 8983      		std Y+1,r24
 214:FrameMgr.c    **** 			dataToSend >>= 4;
 329               	.LM34:
 330 0132 8981      		ldd r24,Y+1
 331 0134 8295      		swap r24
 332 0136 8F70      		andi r24,0x0f
 333 0138 8983      		std Y+1,r24
 215:FrameMgr.c    **** 			dataToSend |= (previousLineBuffer[i+1] & 0xF0);
 335               	.LM35:
 336 013a F701      		movw r30,r14
 337 013c 8181      		ldd r24,Z+1
 338 013e 982F      		mov r25,r24
 339 0140 9B21      		and r25,r11
 340 0142 8981      		ldd r24,Y+1
 341 0144 892B      		or r24,r25
 342 0146 8983      		std Y+1,r24
 216:FrameMgr.c    **** 			/* dataToSend should be packed now */
 217:FrameMgr.c    **** 			UartInt_txByte(dataToSend);
 344               	.LM36:
 345 0148 8981      		ldd r24,Y+1
 346 014a 0E94 0000 		call UartInt_txByte
 348               	.LM37:
 349 014e 82E0      		ldi r24,lo8(2)
 350 0150 90E0      		ldi r25,hi8(2)
 351 0152 C80E      		add r12,r24
 352 0154 D91E      		adc r13,r25
 353 0156 90E4      		ldi r25,lo8(320)
 354 0158 C916      		cp r12,r25
 355 015a 91E0      		ldi r25,hi8(320)
 356 015c D906      		cpc r13,r25
 357 015e 24F2      		brlt .L35
 218:FrameMgr.c    **** 		}
 219:FrameMgr.c    **** 		UartInt_txByte(0x0F);  /* send line end */
 359               	.LM38:
 360 0160 8FE0      		ldi r24,lo8(15)
 361 0162 0E94 0000 		call UartInt_txByte
 220:FrameMgr.c    **** 		/* once all the data is sent, increment out line count by 2 since
 221:FrameMgr.c    **** 		we really get 2 lines worth of pixels on each pass */
 222:FrameMgr.c    **** 		/* Update...increment only by 1, but only send 72 double-lines */
 223:FrameMgr.c    **** 		lineCount++;
 363               	.LM39:
 364 0166 8091 0000 		lds r24,lineCount
 365 016a 8F5F      		subi r24,lo8(-(1))
 366 016c 8093 0000 		sts lineCount,r24
 224:FrameMgr.c    **** 		
 225:FrameMgr.c    **** 		if(lineCount%61==0)
 368               	.LM40:
 369 0170 6DE3      		ldi r22,lo8(61)
 370 0172 0E94 0000 		call __udivmodqi4
 371 0176 9923      		tst r25
 372 0178 21F4      		brne .L36
 226:FrameMgr.c    **** 		{
 227:FrameMgr.c    **** 		  Utility_delay(500);
 374               	.LM41:
 375 017a 84EF      		ldi r24,lo8(500)
 376 017c 91E0      		ldi r25,hi8(500)
 377 017e 0E94 0000 		call Utility_delay
 378               	.L36:
 228:FrameMgr.c    **** 		}
 229:FrameMgr.c    **** 		
 230:FrameMgr.c    **** 		
 231:FrameMgr.c    **** 		/* check to see if we have retrieved all of the needed lines */
 232:FrameMgr.c    **** 		if (lineCount >= 120)  /* half 144, since we send two lines at a time */
 380               	.LM42:
 381 0182 8091 0000 		lds r24,lineCount
 382 0186 8837      		cpi r24,lo8(120)
 383 0188 70F0      		brlo .L37
 233:FrameMgr.c    **** 		{
 234:FrameMgr.c    **** 			/* we're done, so send the dump complete?...nope, just change
 235:FrameMgr.c    **** 			states and we should be fine */
 236:FrameMgr.c    **** 			lineCount = 0;
 385               	.LM43:
 386 018a 1092 0000 		sts lineCount,__zero_reg__
 237:FrameMgr.c    **** 			currentState = ST_FrameMgr_idle;
 388               	.LM44:
 389 018e 1092 0000 		sts currentState,__zero_reg__
 238:FrameMgr.c    **** 			
 239:FrameMgr.c    **** 			/* disable the PCLK counting overflow interrupt */
 240:FrameMgr.c    **** 			TIMSK &= DISABLE_PCLK_TIMER1_OVERFLOW_BITMASK;////0xfb
 391               	.LM45:
 392 0192 87B7      		in r24,87-0x20
 393 0194 8B7F      		andi r24,lo8(-5)
 394 0196 87BF      		out 87-0x20,r24
 241:FrameMgr.c    **** 			
 242:FrameMgr.c    **** 			CamConfig_setCamReg(0x11,0x00);  /* reset the frame rate to normal*/
 396               	.LM46:
 397 0198 60E0      		ldi r22,lo8(0)
 398 019a 81E1      		ldi r24,lo8(17)
 399 019c 0E94 0000 		call CamConfig_setCamReg
 243:FrameMgr.c    **** 			CamConfig_sendFifoCmds();
 401               	.LM47:
 402 01a0 0E94 0000 		call CamConfig_sendFifoCmds
 403 01a4 05C0      		rjmp .L30
 404               	.L37:
 244:FrameMgr.c    **** 		}
 245:FrameMgr.c    **** 		else
 246:FrameMgr.c    **** 		{
 247:FrameMgr.c    **** 			/* we have more lines to acquire in this frame, so keep on truckin...*/
 248:FrameMgr.c    **** 			PUBLISH_FAST_EVENT(FEV_PROCESS_LINE_COMPLETE);
 406               	.LM48:
 407 01a6 8091 0000 		lds r24,fastEventBitmask
 408 01aa 8260      		ori r24,lo8(2)
 409 01ac 8093 0000 		sts fastEventBitmask,r24
 410               	.L30:
 411               	/* epilogue: frame size=1 */
 412 01b0 2196      		adiw r28,1
 413 01b2 0FB6      		in __tmp_reg__,__SREG__
 414 01b4 F894      		cli
 415 01b6 DEBF      		out __SP_H__,r29
 416 01b8 0FBE      		out __SREG__,__tmp_reg__
 417 01ba CDBF      		out __SP_L__,r28
 418 01bc DF91      		pop r29
 419 01be CF91      		pop r28
 420 01c0 1F91      		pop r17
 421 01c2 0F91      		pop r16
 422 01c4 FF90      		pop r15
 423 01c6 EF90      		pop r14
 424 01c8 DF90      		pop r13
 425 01ca CF90      		pop r12
 426 01cc BF90      		pop r11
 427 01ce 0895      		ret
 428               	/* epilogue end (size=16) */
 429               	/* function FrameMgr_processLine size 151 (118) */
 435               	.Lscope3:
 438               		.text
 440               	Letext:
 441               	/* File "FrameMgr.c": code  232 = 0x00e8 ( 196), prologues  17, epilogues  19 */
DEFINED SYMBOLS
                            *ABS*:00000000 FrameMgr.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
                             .bss:00000000 lineCount
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmQaaaa.s:70     .bss:00000001 currentState
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmQaaaa.s:75     .text:00000000 FrameMgr_init
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmQaaaa.s:90     .text:00000002 FrameMgr_dispatchEvent
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmQaaaa.s:133    .text:0000002c FrameMgr_acquireLine
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmQaaaa.s:233    .text:000000a2 FrameMgr_processLine
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccmQaaaa.s:440    .text:000001d0 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
CamConfig_setCamReg
CamConfig_sendFifoCmds
Utility_delay
currentLineBuffer
previousLineBuffer
CamIntAsm_acquireDumpLine
UartInt_txByte
__udivmodqi4
fastEventBitmask

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -