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

📄 cpu12isrs.c

📁 freescale最新的16位单片机
💻 C
📖 第 1 页 / 共 4 页
字号:
     Mask = Mask>>1;

		}// every bit




      if (count >90) {
        Message[0].Letter_Offset = Message[0].Letter_Offset-6 ;
    		count = 0;
      } 
      else {
        count++;
        if (Message[0].Letter_Offset < (unsigned int *) Fig0) {
          Message[0].Letter_Offset = (unsigned int *) Fig9;
        	if (Message[1].Letter_Offset!=(unsigned int *) Fig0) Message[1].Letter_Offset -= 23; 
    			 else Message[1].Letter_Offset =  (unsigned int *) Fig8;
        }
        
        
      }//else   
	 
    }//if
    ptr++; 
   }// for j
  
// Second digit

  ptr = (unsigned int *)Message[1].Letter_Offset;
//Test Valid position in current Block
   for (j=0;j<23;j++){				 // rows in a character

    if( ((Message[1].OriginPosY+j)>=Block_Offset)&&((Message[1].OriginPosY+j)<(Block_Offset + CURRENT_BLOCK_MAX_LINE))) {
      
        Mask=0x8000;

        for (k= Message[1].OriginPosX;k<Message[1].OriginPosX+20;k++	){

         if (*ptr  & Mask){          
          Screen_Array_in_RAM[Offset_Position+(Message[1].OriginPosY+j-Block_Offset)*NB_PIXELS_PER_LINES+k] = ~Message[1].Color;     
         if (ptr<=(unsigned int *) Fig5) Message[17].Status =1;
          else Message[17].Status = 0;
         
        }
         
         Mask = Mask>>1;

    }// every bit

  
    } //if
    ptr++;
   } // for j

 
//   PORTB_PB4=0;
}





// TFT Size
//unsigned char Block_number;
void  ScreenUpdate(unsigned char Block_number) {
unsigned char oldrpage;
Rom_Bank *bankPtr;

//   PORTB_PB6=1;
  oldrpage = RPAGE;
  bankPtr = &Bank[Block_number];

  asm {
     LDX  bankPtr
     LDAB dest_rpage_offset, X		// Load RPAGE
     STAB RPAGE
     
     LDAB source_ppage1_offset, X		// Load PPAGE1
     STAB PPAGE

     LDY  #0x1000			 // Y contains 0x1000, destination address

     LDD  length1_offset, X 			 // D contains length /2 due to word trasfert
     LSRD

     LDX  source_addr_offset, X 		  // X contains source address

loop:
     MOVW 2,X+,2,Y+
     DBNE  D, loop  

// test if (Bank[Block_number].length2)
       LDX  bankPtr
       LDD  length2_offset, X 			 // D contains length /2 due to word trasfert
  		 BEQ  exit


       LDAB source_ppage2_offset, X		// Load PPAGE2
       STAB PPAGE
  
       LDD  length2_offset, X 			 // D contains length /2 due to word trasfert
       LSRD  		 

       LDX  #0x8000					// Beginning of page 
       
loop2:
       MOVW 2,X+,2,Y+
       DBNE  D, loop2  		 
		 
exit:
  }//asm
 if (!PORTB){

 if (Block_number==4){
        _asm{
           LDY  #0x15C3			 // Offset Anim
        	 LDX  #0x1000        // Bank A 
        	 LDAB #10            // Number of line Block 4 
        	 PSHB     
        	 LDAB #160					 // Pixel per line
        	 PSHB
        	 LDAA RPAGE
        	 PSHA
        	 
line:  	 							          // One Lines 
        	 STAB 1,SP
        	 LDAA #0xFA
        	 STAA RPAGE
        	 LDAA 1,X+
        	 LDAB 0,SP
        	 STAB RPAGE
        	 STAA 1,Y+
        	 LDAB 1,SP
        	 DBNE B, line 
        	 
// Next Line
           LDAB 2,SP    
           DECB
           BEQ exitB4
           STAB 2,SP 
           ADDY #80       // 45 + 35
        	 LDAB #160					 //reinit             
           BRA  line         	 
        	 
exitB4:        	 
          PULB
          PULB
          PULB
        }//asm
 }//if 
  
else if (Block_number==5){
        _asm{
           LDY  #0x1023			 // 1000 + 35 Offset Anim
        	 LDX  #0x1640        // Bank A + 10lines offset
        	 LDAB #10            // Number of line Block 4 
        	 PSHB     
        	 LDAB #160					 // Pixel per line
        	 PSHB
        	 LDAA RPAGE
        	 PSHA
        	 
line5:  	 							          // One Lines 
        	 STAB 1,SP
        	 LDAA #0xFA
        	 STAA RPAGE
        	 LDAA 1,X+
        	 LDAB 0,SP
        	 STAB RPAGE
        	 STAA 1,Y+
        	 LDAB 1,SP
        	 DBNE B, line5 
        	 
// Next Line
           LDAB 2,SP    
           DECB
           BEQ exitB5
           STAB 2,SP 
           ADDY #80       // 45 + 35
        	 LDAB #160					 //reinit             
           BRA  line5         	 
        	 
exitB5:    
           ADDY #80
       	   LDX  #0x1000           
           LDAB #6   // 6 more line s on FB
           STAB 2,SP 
        	 LDAB #160					 // Pixel per line
        	 
line52:  	 							          // One Lines 
        	 STAB 1,SP
        	 LDAA #0xFB
        	 STAA RPAGE
        	 LDAA 1,X+
        	 LDAB 0,SP
        	 STAB RPAGE
        	 STAA 1,Y+
        	 LDAB 1,SP
        	 DBNE B, line52 
        	 
// Next Line
           LDAB 2,SP    
           DECB
           BEQ exitB52
           STAB 2,SP 
           ADDY #80       // 45 + 35
        	 LDAB #160					 //reinit             
           BRA  line52         	            
           
exitB52:           
              	 
          PULB
          PULB
          PULB
        }//asm
 }//if 

else if (Block_number==6){
        _asm{
           LDY  #0x1023			 // 1000 + 35 Offset Anim
        	 LDX  #0x13C0        // Bank A + 6lines offset
        	 LDAB #14            // Number of line Block 4 
        	 PSHB     
        	 LDAB #160					 // Pixel per line
        	 PSHB
        	 LDAA RPAGE
        	 PSHA
        	 
line6:  	 							          // One Lines 
        	 STAB 1,SP
        	 LDAA #0xFB
        	 STAA RPAGE
        	 LDAA 1,X+
        	 LDAB 0,SP
        	 STAB RPAGE
        	 STAA 1,Y+
        	 LDAB 1,SP
        	 DBNE B, line6 
        	 
// Next Line
           LDAB 2,SP    
           DECB
           BEQ exitB6
           STAB 2,SP 
           ADDY #80       // 45 + 35
        	 LDAB #160					 //reinit             
           BRA  line6         	 
        	 
exitB6:    
           ADDY #80
       	   LDX  #0x1000           
           LDAB #2   // 2 more line s on FC
           STAB 2,SP 
        	 LDAB #160					 // Pixel per line
        	 
line62:  	 							          // One Lines 
        	 STAB 1,SP
        	 LDAA #0xFC
        	 STAA RPAGE
        	 LDAA 1,X+
        	 LDAB 0,SP
        	 STAB RPAGE
        	 STAA 1,Y+
        	 LDAB 1,SP
        	 DBNE B, line62 
        	 
// Next Line
           LDAB 2,SP    
           DECB
           BEQ exitB62
           STAB 2,SP 
           ADDY #80       // 45 + 35
        	 LDAB #160					 //reinit             
           BRA  line62         	            
           
exitB62:           
              	 
          PULB
          PULB
          PULB
        }//asm
 }//if 
 
else  if (Block_number==7){
        _asm{
           LDY  #0x1023		 // Offset Anim
        	 LDX  #0x1140        //  2lines offset Bank C 
        	 LDAB #15            // Number of line Block 4 
        	 PSHB     
        	 LDAB #160					 // Pixel per line
        	 PSHB
        	 LDAA RPAGE
        	 PSHA
        	 
line7:  	 							          // One Lines 
        	 STAB 1,SP
        	 LDAA #0xFC
        	 STAA RPAGE
        	 LDAA 1,X+
        	 LDAB 0,SP
        	 STAB RPAGE
        	 STAA 1,Y+
        	 LDAB 1,SP
        	 DBNE B, line7 
        	 
// Next Line
           LDAB 2,SP    
           DECB
           BEQ exitB7
           STAB 2,SP 
           ADDY #80       // 45 + 35
        	 LDAB #160					 //reinit             
           BRA  line7         	 
        	 
exitB7:        	 
          PULB
          PULB
          PULB
        }//asm
 }//if 
} // if (!PORTB)
	 
  
  
    RPAGE = oldrpage;
//    PORTB_PB6=0;  
} // end ScreenUpdate    

 




interrupt near void CPU12XGSwTrig7ISR(void)
{
	int BlockNumber;
	XGSWT = 0x8000;   /* reset software trigger 7 */

  //PTS_PTS5 = 0;
	//  PORTB = (char) CBLOC ;
	 // PORTA=0x1;
	BlockNumber = (CBLOC+1)%20;
	ScreenUpdate(BlockNumber);
	if (BlockNumber==0) Image_Number++;
	GearUpdate (BlockNumber,Gearnumber+10);
	if (Message[17].Status) GasUpdate (BlockNumber);
	CharUpdate(BlockNumber);
	
//	S12X_img_up();

	//PTS_PTS5 = 1;

  //PORTA= 0x0;


}	/* end CPU12XGSwTrig7interrupt */

⌨️ 快捷键说明

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