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

📄 video2.c

📁 视频测量
💻 C
字号:
 
//video gen
//B.0 is sync:1000 ohm + diode to 75 ohm resistor
//D.7 is video:330 ohm + diode to 75 ohm resistor
                    
//#include <Mega163.h>   
#include "iom8515v.h"
   
#define lineTime 1014  //507 //cycles = 63.5 * 8
#define begin {
#define end   }
#define ScreenTop 65 //25
#define ScreenBot 177 //225

char syncON, syncOFF, v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16; 
int i,j,LineCount;
char screen[900]; 

const char bitmap[900]={
           0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
           0xF8,0x00,0x02,0x04,0x4C,0x20,0x00,0x00,0x02,0x12,0x00,0x21,0x00,0x00,0x00,0x1F,
           0xFC,0x00,0x44,0xA,0x00,0x00,0x00,0x00,0x09,0x00,0x20,0x00,0x48,0x00,0x00,0x3F,
           0xFC,0x00,0x81,0x88,0x00,0xE4,0x00,0x00,0x14,0x00,0x00,0x10,0x22,0x00,0x00,0x3F,
           0xF8,0x00,0x14,0x04,0x01,0xE0,0x00,0x00,0x00,0x08,0x28,0x78,0x44,0x00,0x00,0x1F,
           0xFA,0x00,0x05,0x00,0x03,0xF2,0x00,0x00,0x01,0xC4,0x11,0xF8,0x24,0x00,0x00,0x5F,
           0xF8,0x00,0x18,0x08,0x05,0xE1,0x00,0x00,0x01,0xF0,0x7F,0xF7,0xE,0x00,0x00,0x1F,
           0xF8,0x00,0x26,0x27,0x83,0xE0,0x00,0x00,0x03,0xFC,0x3F,0xCF,0xFF,0x00,0x00,0x1F,
           0xF8,0x00,0xF,0xFF,0xC1,0xE0,0x84,0x00,0x21,0xFF,0xBC,0xF,0xFF,0x80,0x00,0x1F,
           0xF8,0x00,0x3F,0xFF,0xF3,0xFF,0xFE,0x00,0x00,0xFF,0x78,0x2F,0x8F,0x80,0x00,0x1F,
           0xF8,0x00,0x3E,0x8F,0xEB,0xFF,0xFF,0x00,0x44,0x46,0x00,0x17,0xA7,0xD0,0x00,0x1F,
           0xF8,0x00,0x1C,0x47,0xD7,0xFF,0xFF,0x00,0x20,0xA0,0x3C,0x27,0x47,0x98,0x00,0x1F,
           0xF8,0x00,0x50,0x9F,0xC7,0xC0,0xF,0x00,0x03,0x00,0x38,0x87,0x17,0xA2,0x00,0x1F,
           0xF8,0x00,0x07,0x87,0x8F,0x72,0x3F,0x00,0x27,0xFE,0x18,0x27,0x67,0x44,0x00,0x1F,
           0xF8,0x00,0xF,0xD7,0x1E,0x78,0x7E,0x00,0x47,0xFF,0x38,0x47,0x07,0x02,0x00,0x1F,
           0xF8,0x00,0x17,0xEF,0x1C,0x78,0x7E,0x00,0x2F,0xCE,0x00,0x27,0xF,0x40,0x00,0x1F,
           0xF8,0x00,0x23,0xFE,0x7C,0x78,0xFA,0x00,0x00,0xC,0x38,0x17,0x9E,0x00,0x00,0x1F,
           0xF8,0x00,0x01,0xFE,0x28,0x7B,0xD4,0x00,0x00,0x1E,0x3C,0xF7,0x7E,0x00,0x00,0x1F,
           0xF8,0x00,0xA,0x7E,0x28,0xF8,0x08,0x00,0x00,0x5C,0x7F,0xC7,0xFD,0x00,0x00,0x1F,
           0xF8,0x00,0x05,0xFE,0x10,0xFE,0x10,0x00,0x00,0xC,0x7F,0xF,0xE0,0x00,0x00,0x1F,
           0xF8,0x00,0x01,0xFF,0x00,0xFF,0x00,0x00,0x00,0xE,0x7C,0x87,0x40,0x00,0x00,0x1F,
           0xF8,0x00,0x43,0xEF,0xC0,0xF7,0x84,0x00,0x00,0x1E,0x88,0x27,0x24,0x00,0x00,0x1F,
           0xF8,0x00,0xF,0xD7,0xE1,0xE7,0xD0,0x00,0x00,0xC,0x04,0x47,0xA,0x00,0x00,0x1F,
           0xF8,0x00,0x3F,0x81,0xD3,0xE3,0xF0,0x00,0x00,0xFC,0x00,0x27,0x20,0x00,0x00,0x1F,
           0xF8,0x85,0xFF,0x00,0x27,0xC9,0xFC,0x21,0x3F,0xFF,0xFE,0x07,0x00,0x00,0x00,0x1F,
           0xF8,0x03,0xFC,0x40,0x1F,0x80,0xFE,0xA0,0x7F,0xFF,0xFF,0xFF,0x00,0x81,0x00,0x1F,
           0xF8,0x14,0x78,0x48,0x1F,0x00,0x7F,0xC1,0xFF,0xB4,0x7F,0xFF,0xFF,0xFF,0x00,0x1F,
           0xF8,0x22,0xA,0x00,0x7E,0x02,0x3F,0xFA,0x7C,0x01,0x4F,0xFF,0xFF,0xFE,0x00,0x1F,
           0xF8,0x58,0x00,0x01,0xFC,0x08,0x1F,0xFD,0xE2,0x50,0x00,0xFF,0xFF,0xFE,0x00,0x1F,
           0xF8,0x21,0x44,0x4F,0xFD,0x02,0x8F,0xFA,0x58,0x81,0x08,0x5F,0xFF,0xFC,0x00,0x1F,
           0xF8,0x00,0x88,0x3F,0xE8,0x14,0x27,0xF0,0x24,0x00,0x04,0x07,0xFF,0xFC,0x00,0x1F,
           0xF8,0x00,0x00,0x3F,0x80,0x00,0x13,0xC0,0x10,0x08,0x00,0x10,0xFF,0xF0,0x00,0x1F,
           0xF8,0x00,0x00,0x01,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x1F,
           0xF8,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA4,0x10,0x00,0x1F,
           0xF8,0x00,0x00,0x48,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x22,0x00,0x1F,
           0xF8,0x00,0x00,0x11,0x82,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xC,0x20,0x00,0x1F,
           0xF8,0x00,0x00,0x00,0x28,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x00,0x1F,
           0xF8,0x00,0x00,0x40,0x85,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x21,0x40,0x00,0x1F,
           0xF8,0x00,0x00,0xA,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x1B,0xB0,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x09,0x20,0x00,0x10,0x00,0x02,0x08,0x10,0x02,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x49,0x70,0x04,0x10,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x19,0xA0,0x20,0x10,0x20,0x20,0x10,0x08,0x90,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x09,0x70,0xF0,0x10,0x5F,0x83,0xE7,0xF0,0x7C,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0xA,0xA9,0xA,0x10,0xB0,0x94,0x62,0x58,0x53,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x00,0xA2,0x05,0x10,0x20,0x00,0x92,0x48,0x89,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x8E,0xB3,0xFE,0x10,0x60,0x09,0x12,0x68,0xFF,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0xA,0xC2,0x00,0x10,0x24,0x08,0x12,0x48,0x82,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x04,0x42,0x10,0x50,0x20,0x1D,0x12,0x4C,0x80,0x00,0x00,0x00,0x1F,
           0xF8,0x00,0x00,0x04,0x42,0x04,0x18,0x28,0x00,0x36,0x48,0x85,0x00,0x00,0x00,0x1F,
           0xFA,0x00,0x00,0x04,0x41,0x18,0x50,0x12,0xCC,0x32,0x4C,0x42,0x00,0x00,0x00,0x5F,
           0xF8,0x00,0x00,0x04,0x42,0xF4,0xFE,0x1F,0x03,0xE7,0x6C,0x3C,0x00,0x00,0x00,0x1F,
           0xFC,0x00,0x00,0x08,0x11,0x00,0x08,0x00,0x42,0xC8,0x20,0x42,0x00,0x00,0x00,0x3F,
           0xFC,0x00,0x00,0x00,0x00,0x82,0x45,0x04,0x21,0x20,0x08,0x00,0x00,0x00,0x00,0x3F,
           0xF8,0x00,0x00,0x04,0x00,0x08,0x10,0x00,0x04,0x00,0x00,0x41,0x00,0x00,0x00,0x1F,
           0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
 };
 
void t1_cmpA(void) 
{ 
  PORTB = syncON;     //start the Horizontal sync pulse    
  TCNT0=0;            //count timer 0 at 1/usec
  LineCount ++ ;      //update the curent scanline number

  if (LineCount==248)  // 248-250 场同步脉冲
  { 
    syncON = 0b00000001;
    syncOFF = 0;
  }
  if (LineCount==251)	  
  {
    syncON = 0;
    syncOFF = 0b00000001;
  }  
  if (LineCount>=263)     //场同步结束
     LineCount = 1;
	 
	 
  for(i=0;i<2;i++)
     asm("nop");
  PORTB = syncOFF;
} 

void main(void)
{ 
  OCR1A = lineTime; //One NTSC line
  TCCR1B = 9; 		//full speed; clear-on-match
  TCCR1A = 0x00;	//turn off pwm and oc lines
  TIMSK = 0x10;		//enable interrupt

  DDRD = 0xff;		//video out and switches
  DDRB =0xff;

  TCCR0 = 2;
  MCUCR =0x80;

  LineCount = 1;
  syncON = 0b00000000;
  syncOFF = 0b00000001;  
  
  //initialize screen   
  
/*  for (i=0;i<799;i=i+16) 
  {
  	for(j=0;j<8;j=j+1)
  	  	screen[i+j]=0x0f;
  	for(j=0;j<8;j=j+1)
   	  	screen[i+j+8]=0x0f; 
  }  */
  for(i=0;i<899;i++)
      screen[i]=bitmap[i];
  
 
  
  MCUCR = 0b01000000;
  asm ("sei");               // all interrupte enable
  
  while(1)
  {
    if (LineCount<ScreenBot && LineCount>=ScreenTop) 
    { 
       i=(LineCount-ScreenTop)<<2 & 0xfff0;       //i=0,0,16,16,32,32.....       
    }
   
    MCUCR =0x80;       
    asm ("sleep"); 
     
    if (LineCount<ScreenBot && LineCount>ScreenTop) 
    {
        v1 = screen[i]; 
        v2 = screen[i+1];
        v3 = screen[i+2];
        v4 = screen[i+3]; 
        v5 = screen[i+4]; 
        v6 = screen[i+5];
        v7 = screen[i+6];
        v8 = screen[i+7];
        v9 = screen[i+8];
        v10 = screen[i+9];
        v11 = screen[i+10]; 
        v12 = screen[i+11]; 
        v13 = screen[i+12];
        v14 = screen[i+13];
        v15 = screen[i+14];
        v16 = screen[i+15];
				        
	    PORTD=v1*1;
		PORTD=v1*2;
		PORTD=v1*4;
		PORTD=v1*8;
		PORTD=v1*16;
		PORTD=v1*32;
		PORTD=v1*64;
		PORTD=v1*128;											  

	    PORTD=v2*1;
		PORTD=v2*2;
		PORTD=v2*4;
		PORTD=v2*8;
		PORTD=v2*16;
		PORTD=v2*32;
		PORTD=v2*64;
		PORTD=v2*128;
		
	    PORTD=v3*1;
		PORTD=v3*2;
		PORTD=v3*4;
		PORTD=v3*8;
		PORTD=v3*16;
		PORTD=v3*32;
		PORTD=v3*64;
		PORTD=v3*128;
		
	    PORTD=v4*1;
		PORTD=v4*2;
		PORTD=v4*4;
		PORTD=v4*8;
		PORTD=v4*16;
		PORTD=v4*32;
		PORTD=v4*64;
		PORTD=v4*128;
		
	    PORTD=v5*1;
		PORTD=v5*2;
		PORTD=v5*4;
		PORTD=v5*8;
		PORTD=v5*16;
		PORTD=v5*32;
		PORTD=v5*64;
		PORTD=v5*128;
		
	    PORTD=v6*1;
		PORTD=v6*2;
		PORTD=v6*4;
		PORTD=v6*8;
		PORTD=v6*16;
		PORTD=v6*32;
		PORTD=v6*64;
		PORTD=v6*128;
		
	    PORTD=v7*1;
		PORTD=v7*2;
		PORTD=v7*4;
		PORTD=v7*8;
		PORTD=v7*16;
		PORTD=v7*32;
		PORTD=v7*64;
		PORTD=v7*128;
		
	    PORTD=v8*1;
		PORTD=v8*2;
		PORTD=v8*4;
		PORTD=v8*8;
		PORTD=v8*16;
		PORTD=v8*32;
		PORTD=v8*64;
		PORTD=v8*128;				

	    PORTD=v9*1;
		PORTD=v9*2;
		PORTD=v9*4;
		PORTD=v9*8;
		PORTD=v9*16;
		PORTD=v9*32;
		PORTD=v9*64;
		PORTD=v9*128;											  

	    PORTD=v10*1;
		PORTD=v10*2;
		PORTD=v10*4;
		PORTD=v10*8;
		PORTD=v10*16;
		PORTD=v10*32;
		PORTD=v10*64;
		PORTD=v10*128;
		
	    PORTD=v11*1;
		PORTD=v11*2;
		PORTD=v11*4;
		PORTD=v11*8;
		PORTD=v11*16;
		PORTD=v11*32;
		PORTD=v11*64;
		PORTD=v11*128;
		
	    PORTD=v12*1;
		PORTD=v12*2;
		PORTD=v12*4;
		PORTD=v12*8;
		PORTD=v12*16;
		PORTD=v12*32;
		PORTD=v12*64;
		PORTD=v12*128;
		
	    PORTD=v13*1;
		PORTD=v13*2;
		PORTD=v13*4;
		PORTD=v13*8;
		PORTD=v13*16;
		PORTD=v13*32;
		PORTD=v13*64;
		PORTD=v13*128;
		
	    PORTD=v14*1;
		PORTD=v14*2;
		PORTD=v14*4;
		PORTD=v14*8;
		PORTD=v14*16;
		PORTD=v14*32;
		PORTD=v14*64;
		PORTD=v14*128;
		
	    PORTD=v15*1;
		PORTD=v15*2;
		PORTD=v15*4;
		PORTD=v15*8;
		PORTD=v15*16;
		PORTD=v15*32;
		PORTD=v15*64;
		PORTD=v15*128;
		
	    PORTD=v16*1;
		PORTD=v16*2;
		PORTD=v16*4;
		PORTD=v16*8;
		PORTD=v16*16;
		PORTD=v16*32;
		PORTD=v16*64;
		PORTD=v16*128;		
			
		PORTD=0;															
    }  
  }
}


⌨️ 快捷键说明

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