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

📄 record3.s

📁 关于DVD的MPEG2用的DSP代码,在DSP的实现MPEG的压缩,解压算法.
💻 S
📖 第 1 页 / 共 5 页
字号:
                
                movi   DcacheBase,APP_DATA_SEG
                               
                dlw    r2,r2_temp
                dlw    r3,r3_temp
                dlw    r4,r4_temp  
                dlw    r5,r5_temp
                dlw    r7,r7_temp
                dlw    r8,r8_temp
                dlw    r9,r9_temp
                dlw    r10,r10_temp
 
                dlw    r0,BlockSize_temp
                nop
                mov    BlockSize,r0
 
                dlw    r0,BlockSkip_temp                
                nop
                mov    BlockSkip,r0

                dlw    r0,DMASize_temp                
                nop
                mov    DMASize,r0
                
                dlw    r0,r0_temp                       //  restore the register    
                dlw    r1,r1_temp

                mov    DcacheBase,r24 
                 
                nop

                j       r11

                nop
                nop
                
//----------------------------------------------------------------------------
//-------------- End of  record programm -------------------------------------
//----------------------------------------------------------------------------


//****************************************************************************
//----------------------------------------------------------------------------
//***************** next for real record sub programm ************************
//----------------------------------------------------------------------------
//****************************************************************************

real_record:

//----------------------------------------------------------------------------
//****************************************************************************
//----------------------------------------------------------------------------
                     
                movi   DcacheBase,APP_DATA_SEG
                dlw    r0,record_on_off_flag           // here we need check the play back flag ??????
                nop
                andi   r0,0xffff
                tsti   r0,0xaaaa                  
                bne    record_over                     // test if now in record mode 
                                               
//---------------------------------------------------------------------------              
              
                dlw    r0,recording_flag
                nop
                andi   r0,0xffff
                tsti   r0,0xaaaa
                beq    now_recording                              

                li     r0,buffer_first_page_head
                dsw    r0,record_fifo_start_address               // here for record use
                dsw    r0,record_fifo_current_address             // here for record use 
                
                li     r0,buffer_third_page_tail                    
                dsw    r0,record_fifo_end_address                 // care for do it 

//--------------------------------------------------------------------------
//--------------------------- debug use ------------------------------------
//              mupi   r0,REC_SEG
//              ori    r0,24*4                                    // for debug  only  
//              dsw    r0,record_fifo_end_address                 // care for do it                                                                   // use 8 frames 
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------

                movi   r0,544
                dsh    r0,y0                                     // initial y0   
                                
                movi   r0,0
                dsh    r0,se                                     // initial se
                
                la     r1,(sl)

                loop   35,initial_vary
                dswr   r0,r1                                     // all 35 variable need to clear
                addi   r1,4
initial_vary:                 
                
                movi   r0,0
                dsw    r0,frame_count                            // initial the frame count   
                movi   r0,0xaaaa
                dsw    r0,recording_flag                         // set the flag
                
//-------------------------------------------------------------------------
//   next for check the system time             
//-------------------------------------------------------------------------

#if 1                

//              li     r0,sync_info 
//              shr    r1,r0,16
//              andi   r1,0xffff
//              mov    DcacheBase,r1                             // set the dcachebase                
//              movi   r2,0                                      // clear the buffer
//              andi   r0,0xffff
//              dlwr   r3,r0                                     // pick the hour    

//              rlwi   r3,(0x750>>2)                             // read video PTS  
                rlwi   r3,STC
                nop
                nop
                               
                dsw    r3,system_time                            // if now (pick the record time for play use ) 

                movi   r0,0                                      // in play don't need to check
                dsw    r0,system_time_buffer                     // clear the playing flag  

#endif

//--------------------------------------------------------------------------
//--------------------------------------------------------------------------

now_recording:

//--------------------------------------------------------------------------
//**************************************************************************
//--------------------------------------------------------------------------

                
//--------------------------------------------------------------------------                
//  ************ next for check address ************************************
//--------------------------------------------------------------------------
                             
                dlw    r0,record_fifo_current_address
                dlw    r1,record_fifo_end_address
                dlw    r2,frame_count
                          
                tst    r0,r1
                bgte   record_over
#if !LINEAR_BUFFER
                li     r1,buffer_first_page_tail
                tst    r0,r1
                bne    check_address_next1
                li     r0,buffer_second_page_head
                dsw    r0,record_fifo_current_address          // skip the used zone
                j      check_address_end
                                                
check_address_next1:

                li     r1,buffer_second_page_tail
                tst    r0,r1                           
                bne    check_address_end                       // skip the used zone
                li     r0,buffer_third_page_head
                dsw    r0,record_fifo_current_address
#endif               

check_address_end:

                j      recording_next  

//-------------------------------------------------------------------------
// **************** end of check address **********************************
//-------------------------------------------------------------------------
               
//----------------------------------------------------------------------
//----------------------------------------------------------------------

record_over:                                                  // address overflow  
                movi   r0,0
                dsw    r0,record_on_off_flag                  // clear the flag forbidden re-in 
                dsw    r0,recording_flag
                j      real_record_end                      

//----------------------------------------------------------------------
//----------------------------------------------------------------------                

recording_next:                
                nop
                jsr    r6,adpcm_record
//----------------------------------------------------------------------

                nop

real_record_end:
                nop
                j      r9                          // return to call programm
                nop

//****************************************************************************
//---------------------------------------------------------------------------------
//-------------- end of real record sub programm -----------------------------
//----------------------------------------------------------------------------
//****************************************************************************

//----------------------------------------------------------------------------
//-------------- next for adpcm record ---------------------------------------
//----------------------------------------------------------------------------

adpcm_record:

#if 1

                movi	StartAddrHigh, APP_DATA_SEG
 

                la      r1, (mic_data_buffer)
                la      r0, (local_micro_44)
                
                shr     r0, 2
                shr     r1, 2
                
                movi    DMASize,31
                movi    BlockSize,31                      //0      // transfer 256*4 byte to main memory
                movi    BlockSkip,0
               
                loop    8, pick_local_buffer
                mov     LocalAddr, r0
                dmawr   r1

pick_local_wait:
                 
                bdb     pick_local_wait 
                addi    r0, 32 
                addi    r1, 32                           // protect the local memory now used in mic ( 1300H - 1700H )
                                              
pick_local_buffer:

               
                addi   r2,1
                dsw    r2,frame_count                    // frame increase 1

//-----------------------------------------------------------------------
// load debug data
//-----------------------------------------------------------------------
                

#if      !CLASSIC_METHOD
//-----------------------------------------------------------------------------------------------
// *************** next for use filter method to do down sample *******************************
//-----------------------------------------------------------------------------------------------
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//********************  next for sample rate change ************************ 
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//---------------- use filter method ---------------------------------------
//--------------------------------------------------------------------------

		movi	AGRAdr0, input_data_address	               // from 0x1c00
		movi	AGRInc0, 0x2
		movi	AGRSiz0, 0xffff                                // for microphone data now in 
		
		movi	AGRAdr1, input_data_address	
		movi	AGRInc1, 0x2
		movi	AGRSiz1, 0xffff                                // change from two channel to one channel
		
		li	r0,0x00400000
		
		loop	0, mix_two_channel_micro_data
		mulhf	r2, r0, i0			               // 
		maddhf	r2, r0, i0			               // 
		nop
		rndhf	i1, r2				               // 
mix_two_channel_micro_data:

                nop
                nop

//-------------------------------------------------------------------------
// **************** --------------------------------- *********************
//-------------------------------------------------------------------------

		movi	AGRAdr0, input_data_address+512
		movi	AGRAdr1, input_data_address+512+64	

		loop	256, move_local_buffer
				
                movhf   r0,a0(-2)                                      // for history data use 
                movhf   a1(-2),r0 

move_local_buffer:

                nop
                nop                                                   // move the buffer for filter use 

//------------------------------------------------------------------------
//************************************************************************
//------------------------------------------------------------------------

	        movi	StartAddrHigh, APP_DATA_SEG
		movi	DMASize, 15		                     

		movi	r0,down_sample_filter_history_data               
                shr     r0,2

		movi	r1, input_data_address
		shr	r1, 2

		mov	LocalAddr,r1
                dmarr   r0
                WaitDma                                              

//-------------------------------------------------------------------------
//*************************************************************************                 
//-------------------------------------------------------------------------

		movi	StartAddrHigh, APP_DATA_SEG
		movi	DMASize, 15
		movi	r0,rec_filter_coeff
		shr     r0,2
		movi	r1, input_data_address + 512+64
		shr	r1, 2
		mov	LocalAddr,r1

⌨️ 快捷键说明

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