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

📄 g2300.c

📁 video to VGA 源码
💻 C
字号:
/*===============================
G2300.c
===============================*/
#include "g2300.h"

unsigned char standard=PAL;
unsigned char fvideo=ON;
unsigned char serial=0;
unsigned char debug=OFF;
unsigned char sbuf[16];

unsigned char const RWOK[]="Rw_ok\n";
unsigned char const RWERROR[]="Rw_error\n";

/*===============================
===============================*/
void McuInit(void)
{
  CLI();
  PORTB=0xdf;
  DDRB =0x02;
  PORTC=0xff;
  DDRC =0x02;
  PORTD=0xff;
  DDRD =0x20;
  //
  WDR();
  WDTCR=0x18;
  WDTCR=0x1f;
//TIMER0 initialisation - prescale:1024
// desired value: 50mSec
// actual value: 49.920mSec (0.2%)
  TCCR0 = 0x00; //stop
  TCNT0 = 0x3D; //set count
  TCCR0 = 0x05; //start timer

//TWI initialisation
// bit rate:12  100kHz
  TWCR= 0X00; //disable twi
  TWBR= 0x0C; //set bit rate
  TWSR= 0x00; //set prescale
  TWAR= 0x02; //set slave address
  TWCR= 0x04; //enable twi

//UART0 initialisation
// desired baud rate: 19200
// actual: baud rate:19231 (0.2%)
// char size: 8 bit
// parity: Disabled
  UCSRB = 0x00; //disable while setting baud rate
  UCSRA = 0x00;
  UCSRC = 0x86;
  UBRRL = 0x0C; //set baud rate lo
  UBRRH = 0x00; //set baud rate hi
  UCSRB = 0x98;

  MCUCR = 0x00;
  GICR  = 0x00;
  TIMSK = 0x01; //timer interrupt sources

  SEI();

}
/*===============================
===============================*/
void main (void)
{
  unsigned char Data,Sub;
  unsigned char state=0,old_state=1;
  McuInit();
  DelayMs(100);
  ResetDevice();
  SetPvx521();
  LEDon();
  SetTvp5150();
  while(1)
  {
    WDR();
    if(!debug)
    {
      if(!(TVP5150read(0x88)&0x02) && !(TVP5150read(0x88)&0x02))
      {
        fvideo=0;
      }
      else
      {
        if(TVP5150read(0x88)&0x20)
          standard=PAL;
        else
          standard=NTSC;
        fvideo=1;
      }
      state=TVP5150read(0x88);
      if(old_state!=state)
      {
        old_state=state;
        SetTvp5150();
      }
      SetPvx521();
    }
    /**Uart command**/
    if(serial)
    {
      serial=0;
      if(sbuf[0]=='w' && sbuf[1]=='w' && sbuf[2]=='2' && sbuf[3]=='e' && sbuf[4] && sbuf[5] && sbuf[6] && sbuf[7])
      {
        debug=ON;
        Sub   = (CharToValue(sbuf[4])<<4)|CharToValue(sbuf[5]);
        Data  = (CharToValue(sbuf[6])<<4)|CharToValue(sbuf[7]);
        if(PVX521write(Sub,Data))
          UartTxdStr(RWOK);
        else
          UartTxdStr(RWERROR);
      }
      else if(sbuf[0]=='r' && sbuf[1]=='r' && sbuf[2]=='2' && sbuf[3]=='e' && sbuf[4] && sbuf[5])
      {
        Sub   = (CharToValue(sbuf[4])<<4)|CharToValue(sbuf[5]);
        Data  = PVX521read(Sub);
        UartTxdHexValue(Data);
      }
      else if(sbuf[0]=='w' && sbuf[1]=='w' && sbuf[2]=='b' && sbuf[3]=='a' && sbuf[4] && sbuf[5] && sbuf[6] && sbuf[7])
      {
        debug=ON;
        Sub   = (CharToValue(sbuf[4])<<4)|CharToValue(sbuf[5]);
        Data  = (CharToValue(sbuf[6])<<4)|CharToValue(sbuf[7]);
        if(TVP5150write(Sub,Data))
          UartTxdStr(RWOK);
        else
          UartTxdStr(RWERROR);
      }
      else if(sbuf[0]=='r' && sbuf[1]=='r' && sbuf[2]=='b' && sbuf[3]=='a' && sbuf[4] && sbuf[5])
      {
        Sub   = (CharToValue(sbuf[4])<<4)|CharToValue(sbuf[5]);
        Data  = TVP5150read(Sub);
        UartTxdHexValue(Data);
      }
      sbuf[0]=sbuf[1]=sbuf[2]=sbuf[3]=sbuf[4]=0;
    }
  }
}

/*===============================
===============================*/
#pragma vector=TIMER0_OVF_vect  //50mS
__interrupt void timer0_ovf_isr(void)
{
//  unsigned char static count=0;
  TCNT0 = 0x3D; //reload counter value
//  LEDblink();
}
/*================================
================================*/
#pragma vector=USART_RXC_vect
__interrupt void uart0_rx_isr(void)
{
 //uart has received a character in UDR
  static unsigned char ptr=0;
  static unsigned char tmp=0;
  tmp=UDR;
  if(tmp!='\n')
  {
    sbuf[ptr]=tmp;
    if(ptr<15)
      ptr++;
  }
  else
  {
    serial=ptr;
    ptr=0;
  }
//  UartTxd(tmp);
}
/*===============================
END
===============================*/

⌨️ 快捷键说明

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