interret.c

来自「全数字高清电视数字调谐器」· C语言 代码 · 共 84 行

C
84
字号
#include <w77e58.h>
#include <stdio.h>
#include<intrins.h>

unsigned char pns;//中断次数
unsigned int pnztime;//PAL/NTSC 时间
bit pnds;//PAL/NTSC 判别完
bit p_n;//P/N标志
bit chan;//确定有电视信号

bit pal_ntsc();
void dely(unsigned int i);

void extern_int1() interrupt 2 
{
 pns++;
 if(pns==1)
 {
  TH0=100;
  TL0=100;
   TR0=1;
   ET0=1;  
   dely(800);
 }
else if(pns==2){
   TR0=0;
   ET0=0; 
   pnds=1;
   chan=1;
   EX1=0;
 }
 else
 {
 pns=0;
 pnds=0;
 }
}

void time0() interrupt 1 using 1
{
  pnztime++;
  if(pnztime>0x500)
   pnds=1;
}

bit pal_ntsc()
{unsigned int i;
i=0;
 pns=0;
 pnds=0;
 chan=0;
 pnztime=0;
 PX1=1;
 EX1=1;
 while(!pnds)
     {
       i++;
        if(i>60000)
         pnds=1;
      }
 EX1=0;
 PX1=0;
 TR0=0;
 ET0=0; 
 if(pnztime<0x145)
       {
        p_n=1;
         printf("PAL/NTSC=%x,制式-NTSC\n",pnztime);
        }
 else {p_n=0;
        printf("PAL/NTSC=%x,制式-PAL\n",pnztime);
        }
        if(chan)
           return(1);
        else return(0);   
}

void dely(unsigned int i)
{
for (;i!=0;i--)
    _nop_();

}

⌨️ 快捷键说明

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