亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vfd.c

?? VFD顯示屏的驅(qū)動(dòng)UPD16312的完整C測試程序,已正常使用.
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include<reg52.h>
#include<panel.h>
#include<use.h>

void WR_PANEL(BYTE);
void LIGHT_ALL(void);
BYTE RD_PANEL(void);
BYTE GET_KEY_VAL(void);
BIT  LEAP_YEAR(void);         // if this year /4 =0
BIT  LEAP_MONTH(void);        // if this month only 30 days
void DAY_INC(void);        // month and year inc process 
BYTE HEXTOBCD(BYTE);          //translate hex to bcd 
void COMPARE_TIME(BYTE *); //compare now_time and (alarm_begin&alarm_end)
void FILL_ALL_PIX(void);
void FILL_BCD_DISP(BYTE *,BYTE *,BYTE *);
void KEY_PROCESS(void);
void DELAY_TIME(BYTE);
void DELAY_100uS(void);
BYTE GET_IR_KEY(void);	
void ALARM_MAKE(void);
void timer0(void) interrupt 1 using 1 
{     TR0=0;
      TH0=0XD8;
      TL0=0XF0;
      TR0=1;
      mSECOND++;
      if(mSECOND==50)  COUNT2=0;
      if((mSECOND<40)||(mSECOND>60))// SOUND OF ALARM 0mS ON;40mS OFF;60mS ON
            COUNT1=1;
      if((mSECOND>40)&&(mSECOND<60))
            COUNT1=0;
      if(mSECOND>=100)
      {     SECOND_INC=1;
            COUNT2=1;
            COUNT3++;
            mSECOND=0;
      };
}
void IR0(void) interrupt 0 using 2
{
      EX0=0;//do not allow extern interrupt0
      bKEY=GET_IR_KEY();
      EX0=1;
}
main()
{
      BYTE TEMP,TEMPA;
      SP=0x70;
      IR = 1;
      ALARM_OUT1=0;
      ALARM_OUT2=0;
      TR0=0;
      TMOD=0X01;
      TH0=0XD8;
      TL0=0XF0;
      TR0=1;
      PT0=1;//Priority Interrupt timer0 
      ET0=1;
      EX0=1;
      IT0=1;		
      EA=1;//ENABLE TIMER0
	TEMP=12;
      while(TEMP--)
            DISP_ARRAY[TEMP-1]=0; 
	TEMP=15;
      while(TEMP--)
      {     TEMPA=3;
            while(TEMPA--)
                  ALARM_ARRAY[TEMP-1][TEMPA-1]=0;
	};
	KEY_ARRAY[0]=0;
	KEY_ARRAY[1]=0;
	KEY_ARRAY[2]=0;
//INITIAL VFD_PANEL AND LET IT ALL DARKEN
	VFD_STB=1;
	VFD_STB=0;
        WR_PANEL(VFD_DISP_MODE);
	VFD_STB=1;
	VFD_STB=0;
        WR_PANEL(VFD_CTRL_MODE);
	VFD_STB=1;
        LIGHT_ALL();   
// WHILE LOOP
while(1)
{
      if(SECOND_INC)
      {     SECOND_INC=0;
            SECOND++;
            if(SECOND>=60)
            {
                  SECOND=0;
                  MINUTE++;
                  if(MINUTE>=60)
                  {
                        MINUTE=0;
                        HOUR++;
                        if(HOUR>=24)
                        {
                              HOUR=0;
                              DAY++;
                              switch(DAY)
                              {
                              case 29:
                                 if(MONTH==2)
                                    if(!LEAP_YEAR())
                                    {     DAY=0;
                                          DAY_INC();
                                    };
                                  break;
                               case 30:
                                  if(MONTH==2)  DAY_INC();
                                   break;
                               case 31:
                                  if(LEAP_MONTH()) DAY_INC();
                                   break;
                                case 32:
                                   DAY_INC();
                                   break;
                              };// END OF SWITCH
                        };// hour>=24
                  };// minute>=60
            };// second>=60
      };//(second_inc)    END OF TIME PROCESS
      SECOND1=HEXTOBCD(SECOND);
      MINUTE1=HEXTOBCD(MINUTE);
      HOUR1=HEXTOBCD(HOUR);
      DAY1=HEXTOBCD(DAY);
      MONTH1=HEXTOBCD(MONTH);
      YEAR1=HEXTOBCD(YEAR);
//BEGIN ALARM TIME PROCESS
      if(ALARM_ENABLE)
      {     TEMP=8;
            do
            {     ALARM_ON_OFF=ALARM_ON_OFF_1;
                  TEMP=0;
                  ALARM_ON_OFF>>=TEMP;
                  if(ALARM_ON_OFF^0)
                        COMPARE_TIME(&ALARM_ARRAY[TEMP][0]);

            }while(TEMPA--);
            TEMP=8;
            do
            {     ALARM_ON_OFF=ALARM_ON_OFF_2;
                  TEMP=0;
                  ALARM_ON_OFF>>=TEMP;
                  if(ALARM_ON_OFF^0)
                        COMPARE_TIME(&ALARM_ARRAY[TEMP+8][0]);

            }while(TEMPA--);
            ALARM_MAKE();
      };//END OF PROCESS ALARM
      KEY_PROCESS();
      FILL_ALL_PIX();
      LIGHT_ALL();
};//END OF WHILE(1)
}//END OF MAIN



void WR_PANEL(BYTE TEMP1)
{     BYTE TEMP4;
	VFD_CLK=1;
      for(TEMP4=0;TEMP4<8;TEMP4++)
        {       VFD_CLK=0;
		if(TEMP1&0X01)
			VFD_DATA=1;
		else
			VFD_DATA=0;
		TEMP1>>=1;
		VFD_CLK=1;
	 };
}
BYTE RD_PANEL(void)
{
      BIT I;
      BYTE TEMP5;
      BYTE TEMP4,TEMP6;
	VFD_CLK=1;
      VFD_DATA=1;
      TEMP5=0;
      for(TEMP4=0;TEMP4<8;TEMP4++)
      {     VFD_CLK=0;
            for(TEMP6=0;TEMP6<6;TEMP6++)
                  I=VFD_DATA;
            if(I)
            {     TEMP6=0X80;
                  TEMP6>>=(7-TEMP4);
                  TEMP5|=TEMP6;
            };
            VFD_CLK=1;
      };
return(TEMP5);
}
void LIGHT_ALL(void)
{     BYTE I;
	VFD_STB=1;
	VFD_STB=0;
	WR_PANEL(0X40);
	VFD_STB=1;
	VFD_STB=0;
	WR_PANEL(0XC0);
      for(I=0;I<12;I++) WR_PANEL(DISP_ARRAY[I]);
	VFD_STB=1;
}
BIT LEAP_YEAR(void)
{     BIT T;
      switch(YEAR)
      {     case  0:
            case  4:
            case  8:
                  T=1;
                  break;
            default:
                  T=0;
                  break;
      };
      return(T);
}
BIT LEAP_MONTH(void)    //if this month has 30 day
{     BIT T;
      switch(MONTH)
      {     case 4:
            case 6:
            case 9:
            case 11:
                  T=1;
                  break;
            default:
                  T=0;
                  break;
      };
      return(T);
}
void DAY_INC(void)
{     DAY=0;
      MONTH++;
      if(MONTH==0x12)
      {     MONTH=0;
            YEAR++;
            if(YEAR==10)
            YEAR=0;
      } ;
}
BYTE HEXTOBCD(BYTE TEMP7)
{     BYTE E,F;
      E=TEMP7;
      F=E/10;
      E%=10;
      F<<=4;
      F|=E;
      TEMP7=F;
      return(TEMP7);
}
void COMPARE_TIME(BYTE *CP1)
{     if(HOUR1==*CP1)
            if(MINUTE1==*(CP1++))
                  ALARM_ON=1;
      if(HOUR1==*(CP1++))
            if(MINUTE1==*(CP1++))
                  ALARM_ON=0;
 }
void FILL_BCD_DISP(BYTE *I,BYTE *J,BYTE *K)
{     BYTE TEMP;
                  TEMP=*I;
                  TEMP&=0X0F;
                  DISP_ARRAY[VFD_N1_ADDR]=DISP_CHARACTER[TEMP];
                  TEMP=*I;
                  TEMP>>=4;
                  TEMP&=0X0F;
                  DISP_ARRAY[VFD_N2_ADDR]=DISP_CHARACTER[TEMP];
                  TEMP=*J;
                  TEMP&=0X0F;
                  DISP_ARRAY[VFD_MIN_N1_ADDR]=DISP_CHARACTER[TEMP];
                  TEMP=*J;
                  TEMP>>=4;
                  TEMP&=0X0F;
                  DISP_ARRAY[VFD_MIN_N2_ADDR]=DISP_CHARACTER[TEMP];
                  TEMP=*K;
                  TEMP&=0X0F;
                  DISP_ARRAY[VFD_SEC_N1_ADDR]=DISP_CHARACTER[TEMP];
                  TEMP=*K;
                  TEMP>>=4;
                  TEMP&=0X0F;
                  DISP_ARRAY[VFD_SEC_N2_ADDR]=DISP_CHARACTER[TEMP];
}
void FILL_ALL_PIX(void)
{     BYTE TEMP;
      BIT1=ALARM1;
      BIT2=ALARM2;
      BIT3=ALARM3;
      BIT4=ALARM4;
      BIT5=ALARM5;
      BIT6=ALARM6;
      BIT7=ALARM7;
      BIT8=ALARM8;
      BIT9=ALARM9;
      BIT10=ALARM10;
      BIT11=ALARM11;
      BIT12=ALARM12;
      BIT13=ALARM13;
      BIT14=ALARM14;
      BIT15=ALARM15;
      BIT16=ALARM16;
      DISP_ARRAY[VFD_TRACKBIT_N2_ADDR]=BIT_A;
      DISP_ARRAY[VFD_TRACKBIT_N1_ADDR]=BIT_B;
      BG_HOUR     =HEXTOBCD(ALARM_ARRAY[DISP_SW-2][0]);
      BG_MINUTE   =HEXTOBCD(ALARM_ARRAY[DISP_SW-2][1]);
      END_HOUR    =HEXTOBCD(ALARM_ARRAY[DISP_SW-2][2]);
      END_MINUTE  =HEXTOBCD(ALARM_ARRAY[DISP_SW-2][3]);
      if((DISP_SW<=DISP_ALARM8)&&(DISP_SW>DISP_DATE))
      {     ALARM_ON_OFF=ALARM_ON_OFF_1;
            ALARM_ON_OFF>>=(DISP_SW-2);
      }
      if(DISP_SW>DISP_ALARM8)
      {     ALARM_ON_OFF=ALARM_ON_OFF_2;
            ALARM_ON_OFF>>=(DISP_SW-10);
      }
      switch(DISP_SW)
      {
            case  DISP_TIME:
                  FILL_BCD_DISP(&HOUR1,&MINUTE1,&SECOND1);
                  if(COUNT2)
                  {     DISP_ARRAY[VFD_DASH_ADDR]|=VFD_DASH;
                        DISP_ARRAY[VFD_COL_ADDR]|=VFD_COL;
                  }
                  else
                  {     DISP_ARRAY[VFD_DASH_ADDR]&=~VFD_DASH;
                        DISP_ARRAY[VFD_COL_ADDR]&=~VFD_COL;
                  };
                        DISP_ARRAY[VFD_SEC_ADDR]|=VFD_SEC;
                        DISP_ARRAY[VFD_MIN_ADDR]|=VFD_MIN;
                        TEMP=~VFD_MIC1;
                        DISP_ARRAY[VFD_MIC1_ADDR]&=TEMP;
                        TEMP=~VFD_MIC2;
                        DISP_ARRAY[VFD_MIC2_ADDR]&=TEMP;
                  break;
            case  DISP_DATE:
                  FILL_BCD_DISP(&YEAR1,&MONTH1,&DAY1);
                        TEMP=~VFD_DASH;
                        DISP_ARRAY[VFD_DASH_ADDR]&=TEMP;
                        TEMP=~VFD_COL;
                        DISP_ARRAY[VFD_COL_ADDR]&=TEMP;
                        TEMP=~VFD_MIC1;
                        DISP_ARRAY[VFD_MIC1_ADDR]&=TEMP;
                        TEMP=~VFD_MIC2;
                        DISP_ARRAY[VFD_MIC2_ADDR]&=TEMP;

                  break;
            default:
                  if(DISP_BG_END)
                  {     if(ALARM_ON_OFF^0)
                              FILL_BCD_DISP(&ON,&BG_HOUR,&BG_MINUTE);
                        else
                              FILL_BCD_DISP(&OF,&BG_HOUR,&BG_MINUTE);
                        DISP_ARRAY[VFD_MIC1_ADDR]|=VFD_MIC1;
                        TEMP=~VFD_MIC2;
                        DISP_ARRAY[VFD_MIC2_ADDR]&=TEMP;
                  }
                  else
                  {     if(ALARM_ON_OFF^0)
                              FILL_BCD_DISP(&ON,&END_HOUR,&END_MINUTE);
                        else
                              FILL_BCD_DISP(&OF,&END_HOUR,&END_MINUTE);
                        DISP_ARRAY[VFD_MIC1_ADDR]|=VFD_MIC1;
                        DISP_ARRAY[VFD_MIC2_ADDR]|=VFD_MIC2;
                  };
                  DISP_ARRAY[VFD_TRACKBIT_N2_ADDR]=0;
                  DISP_ARRAY[VFD_TRACKBIT_N1_ADDR]=0;
                  if(DISP_SW<=DISP_ALARM8)
                        DISP_ARRAY[VFD_TRACKBIT_N2_ADDR]=BIT_ARRAY[DISP_SW-2];
                  else
                        DISP_ARRAY[VFD_TRACKBIT_N1_ADDR]=BIT_ARRAY[DISP_SW-2];
                  break;
      };                //END OF switch(DISP_SW)
  if(TIME_EDIT)   
  {  switch(TIME_EDIT)
     {
            case  EDIT_HOUR:
            case  EDIT_YEAR:
            case  EDIT_SWITCH:
                  if(COUNT2)
                  {     DISP_ARRAY[VFD_N2_ADDR]=0;
                        DISP_ARRAY[VFD_N1_ADDR]=0;
                  };
                  break;
            case  EDIT_MINUTE:
            case  EDIT_MONTH:
            case  EDIT_BG_HOUR:
            case  EDIT_END_HOUR:
                  if(COUNT2)
                  {     DISP_ARRAY[VFD_MIN_N2_ADDR]=0;
                        DISP_ARRAY[VFD_MIN_N1_ADDR]=0;
                  };

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区二区在线| 日本精品一级二级| 日韩—二三区免费观看av| 国产精品久久二区二区| 国产夜色精品一区二区av| 欧美精品三级在线观看| 色婷婷亚洲精品| 日韩免费电影一区| 国产成人av一区二区三区在线| 久久国产免费看| 蜜桃精品在线观看| 精品一区二区三区视频 | 香蕉av福利精品导航| 亚洲综合精品久久| 日韩黄色一级片| 老司机一区二区| 国产精品一区2区| av电影天堂一区二区在线观看| 9色porny自拍视频一区二区| 99久久精品情趣| 在线观看亚洲a| 欧美高清视频www夜色资源网| 91丨porny丨国产入口| 国产成人午夜精品影院观看视频| 国产a区久久久| 波多野结衣中文字幕一区二区三区| 粉嫩av一区二区三区在线播放| 成人久久久精品乱码一区二区三区| av在线不卡网| 欧美色精品在线视频| 日韩一级在线观看| 欧美极品另类videosde| 亚洲久草在线视频| 人人超碰91尤物精品国产| 国产在线播放一区二区三区| 成人av免费在线观看| 欧美视频一区二区三区| 精品乱人伦一区二区三区| 国产精品久久久久久久久搜平片 | 欧美日韩精品三区| 精品久久久久一区| 国产精品久久久久久妇女6080| 亚洲伊人色欲综合网| 麻豆高清免费国产一区| 不卡的av中国片| 欧美日本国产视频| 国产亚洲精品aa午夜观看| 亚洲女爱视频在线| 青青草97国产精品免费观看无弹窗版 | 日本vs亚洲vs韩国一区三区| 国产成人亚洲精品青草天美| 欧美色精品天天在线观看视频| 欧美精品一区二区三区高清aⅴ | 日本免费在线视频不卡一不卡二| 国产久卡久卡久卡久卡视频精品| 色久综合一二码| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品卡一卡二卡三| 日本一区中文字幕| www.性欧美| 精品欧美一区二区在线观看| 自拍偷拍亚洲综合| 国内精品久久久久影院薰衣草| 在线观看日韩一区| 国产欧美日韩不卡| 免费观看在线综合色| 91麻豆国产在线观看| 久久综合国产精品| 亚洲国产精品久久人人爱| 国产+成+人+亚洲欧洲自线| 欧美精品777| 亚洲另类春色国产| 国产精品一区二区免费不卡| 欧美日韩高清影院| 中文字幕一区二区视频| 韩国精品久久久| 777午夜精品视频在线播放| 中文字幕亚洲不卡| 国产精品69毛片高清亚洲| 欧美一卡二卡在线观看| 亚洲国产一区视频| 色综合天天综合网国产成人综合天| 精品成人一区二区三区四区| 婷婷成人激情在线网| 在线观看视频一区二区欧美日韩 | 国产精品亚洲一区二区三区妖精| 欧美日韩国产大片| 亚洲一区日韩精品中文字幕| 99精品偷自拍| 国产精品二区一区二区aⅴ污介绍| 狠狠久久亚洲欧美| 日韩一区二区三区在线| 天天综合日日夜夜精品| 欧美性色欧美a在线播放| 中文字幕一区免费在线观看| 国产91精品一区二区| 国产午夜精品一区二区三区嫩草 | 亚洲国产精品综合小说图片区| av一本久道久久综合久久鬼色| 久久久久久亚洲综合影院红桃| 久久99精品久久久久久久久久久久| 欧美日韩另类一区| 亚洲超碰97人人做人人爱| 在线视频一区二区三区| 亚洲免费观看高清完整版在线观看 | 成人动漫一区二区在线| 久久久久国产成人精品亚洲午夜| 韩国欧美国产1区| 久久精品一区蜜桃臀影院| 国产在线视频一区二区三区| 精品久久久网站| 国产精品一区二区三区网站| 久久久夜色精品亚洲| 国产成人免费xxxxxxxx| 亚洲国产精品成人综合色在线婷婷 | 色天天综合久久久久综合片| 最好看的中文字幕久久| av电影天堂一区二区在线 | 91日韩在线专区| 亚洲精品伦理在线| 欧美在线观看一二区| 日日夜夜精品视频天天综合网| 91麻豆精品国产综合久久久久久| 日本视频在线一区| 欧美精品一区二区三区视频| 国产精品99精品久久免费| 国产精品传媒入口麻豆| 欧洲一区在线电影| 丝袜亚洲另类欧美| 精品国产乱码久久久久久闺蜜| 丁香激情综合国产| 亚洲精品免费在线| 欧美精品一卡二卡| 国产麻豆欧美日韩一区| 国产精品国产自产拍在线| 色94色欧美sute亚洲线路一久| 偷窥国产亚洲免费视频| 久久影视一区二区| 91免费小视频| 日韩成人精品视频| 国产欧美精品一区二区色综合| 91麻豆精东视频| 美国十次了思思久久精品导航| 国产午夜精品久久| 欧美三区在线观看| 国产乱人伦偷精品视频免下载 | 偷拍自拍另类欧美| 337p粉嫩大胆色噜噜噜噜亚洲 | 欧美国产精品专区| 91行情网站电视在线观看高清版| 日韩高清中文字幕一区| 国产三级一区二区三区| 日本久久电影网| 国模一区二区三区白浆| 亚洲日本韩国一区| 欧美tickle裸体挠脚心vk| 95精品视频在线| 麻豆国产精品官网| 亚洲精品久久久久久国产精华液| 日韩免费性生活视频播放| 91猫先生在线| 精品一区二区三区蜜桃| 亚洲精品国产无套在线观| 欧美第一区第二区| 在线观看日韩精品| 高清不卡在线观看| 五月综合激情网| 国产精品成人网| 欧美r级电影在线观看| 色国产综合视频| 成人永久免费视频| 麻豆成人在线观看| 亚洲高清一区二区三区| 国产女主播在线一区二区| 欧美精品久久久久久久多人混战| 成人h精品动漫一区二区三区| 日韩高清在线电影| 亚洲五码中文字幕| 亚洲欧洲国产日韩| 久久久国产午夜精品| 制服.丝袜.亚洲.另类.中文 | 国产精品毛片久久久久久| 日韩一区二区三区精品视频| 91久久一区二区| 不卡电影一区二区三区| 国产精品一区一区三区| 美女视频黄a大片欧美| 亚洲图片有声小说| 亚洲色图欧美偷拍| 国产精品每日更新在线播放网址| 精品国产免费一区二区三区四区 | 亚洲天堂久久久久久久| 国产午夜精品美女毛片视频| 精品乱人伦小说| 日韩欧美一级精品久久| 5月丁香婷婷综合| 欧美日韩大陆一区二区| 欧美亚洲日本国产| 色噜噜狠狠一区二区三区果冻| 97久久精品人人澡人人爽|