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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aaa.c.bak

?? 用51單片機編譯成的頻率計的源程序
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
#include <upsd3300.h>
#include <intrins.h>
#include <string.h>
#include <absacc.h>
//#include "upsd33_adc.h"
//#include <Turbo_adc.h>
//#include <Turbo_timer.h>
//#include <Turbo_PCA-PWM.h>
//#include <test.h>

#define uchar unsigned char
#define uint unsigned int

//#define PSD_REG_ADDR 0x0800		 //PSD寄存器IO基址	 
#define  scan  P3					 //鍵掃
#define POWK P1_7					 //交流接觸器開關,0有效
#define POWZ P4_7					 //電阻短接,0有效
#define ST   P4_6					 //脈沖使能

#define RS  P1_6			         //液晶命令口
#define RW  P1_5
#define  E  P1_4
#define PSD_REG_ADDR 0x0200
   
/*********管腳定義****************/
//#define  lcdport  PSD33_reg.DATAOUT_A  //P4        //P4液晶數據口,必須用雙通道IO


xdata PSD_REGS PSD33_reg _at_ PSD_REG_ADDR ;

uchar bdata temp;		    //判忙用字節
sbit busy = temp^7;
uchar  keyv ;
uchar  pinlv[3] = {0,0,0};		   //頻率值
uchar  dianya[2] = {0,0};		   //電壓值
//uchar  mm[3] = {1,6,0};			   //調制度,30-210
uchar code OK[]={"OK"};

 uchar i;
/******************************************************************************
*                PWM變量定義

******************************************************************************/
/*------------------------------------------------------------------------------
			  Local Variable Declarations
------------------------------------------------------------------------------*/
//時鐘周期為30ns,(板上33.1776M晶振)
//固定頻率采樣,載波頻率5K,周期200us,計數值=200us/(30ns*12)=556 
//采樣周期 = 1/2載波周期 = 278 



//long Fc;					
long idata F;
long idata F_min;
uint data N;				//載波比
long data M;				//調制系數

						


uint data Ts; 					//采樣周期 = 1/2 載波周期
long data Half_Ts;      		//1/2采樣周期

long idata K_M;					//調制系數放大倍數
long idata K_F;					//輸入頻率放大倍數

//uint idata K_sin;				//sin表放大倍數
//uint idata K_coe;				//總放大倍數,K_M * K_sin;
							



//int idata dead_time;		
uint data U_angle;
uint data V_angle;
uint data W_angle;

uint data K;				//采樣個數,偶數為頂點采樣,奇數為底點采樣
uint data U_Toff;			//頂點采樣開通延時
uint data U_Ton;         	//底點采樣關斷延時
uint data V_Toff;
uint data V_Ton;
uint data W_Toff;
uint data W_Ton;

uint Tm;
code uint u36 = 0x125;


unsigned char data P_flag,aa;		 //奇偶采樣點標志

static unsigned int idata timer0_tick;
static unsigned int idata timer0_value;

static unsigned int idata timer1_tick;
static unsigned int idata timer1_value;


int data M_angle;

unsigned long idata Fm;


unsigned int data PCA0;


//0--180度正弦表


unsigned char code sin_table[181] = { 0,4,9,13,18,22,27,31,35,40,
                          44,49,53,57,62,66,70,75,79,83,
                          87,91,96,100,104,108,112,116,120,124,
                          128,131,135,139,143,146,150,153,157,160,
                          164,167,171,174,177,180,183,186,190,192,
                          195,198,201,204,206,209,211,214,216,219,
                          221,223,225,227,229,231,233,235,236,238,
                          240,241,243,244,245,246,247,248,249,250,
                          251,252,253,253,254,254,254,255,255,255,
                          255,255,255,255,254,254,254,253,253,252,
                          251,250,249,248,247,246,245,244,243,241,
                          240,238,236,235,233,231,229,227,225,223,
                          221,219,216,214,211,209,206,204,201,198,
                          195,192,190,186,183,180,177,174,171,167,
                          164,160,157,153,150,146,143,139,135,131,
                          128,124,120,116,112,108,104,100,96,91,
                          87,83,79,75,70,66,62,57,53,48,
                          44,40,35,31,27,22,18,13,9,4,0	};

/********************************************************************
*鍵盤碼
********************************************************************/
uchar code key_tab[] =
{
	0x01,0x02,0x03,0x0a,
	0x04,0x05,0x06,0x0b,
	0x07,0x08,0x09,0x0c,
	0x0f,0x00,0x0e,0x0d,
};


/********************************************************************/
/*******************************函數聲明*****************************/
/********************************************************************/

/*---------------------------------------------------------------
*          LCD函數聲明
*---------------------------------------------------------------*/
void lcdbusytest();
void writelcdcom(uchar com);
void writelcddat(uchar dat);
void mdelay(uchar j);							 //upsd 40M延時
void initlcd();								     //初始化
void clrlcd();								     //清屏
void printchar(uchar xpos,uchar ypos,uchar str); //寫一個字符
void printstr(uchar xpos,uchar ypos,uchar *str); //寫字符串
/*-------------------------------------------------------------
*        鍵盤掃描
*-------------------------------------------------------------*/
uchar getkey (void);

/*-------------------------------------------------------------
*    ADC 程序聲明
-------------------------------------------------------------*/
void ADC_EnableAll(void) ;
void ADC_Init (unsigned char channel);
unsigned int ADC_Read( unsigned char channel );

/*-------------------------------------------------------------
*    得到電壓電壓值,并在液晶上顯示
-------------------------------------------------------------*/
void getVA (uchar channel);

/*-------------------------------------------------------------
*   得到功率和頻率
-------------------------------------------------------------*/
void  getPf  (void);

/*******************************************************************
************************PWM部分聲明*********************************
*******************************************************************/

/*-------------------------------------------------------------
//定時器0中斷服務程序,PWM
//定時器0用于產生采樣周期的定時中斷,采樣周期Ts	=1/2載波周期 = 278 時鐘周期
-------------------------------------------------------------*/
static void timer0_isr (void); //interrupt TF0_VECTOR using 1

/*-------------------------------------------------------------
*    int sin_angle(long angle )
*功能描述:角度換算函數,使角度值控制在180以內
*
-------------------------------------------------------------*/
int sin_angle(long angle );

/*-------------------------------------------------------------
*             void first(void )
*第一個采樣點計算函數,在K=0時計算
-------------------------------------------------------------*/
void first(void );

/*-------------------------------------------------------------
*定時器0初始化
-------------------------------------------------------------*/
void timer0_init (void);


/*--------------------------------------------------------------------
*PCA中斷服務程序
---------------------------------------------------------------------*/

static void PCA_isr (void); //interrupt PCA_VECTOR using 1   

/*-------------------------------------------------------------------
*  PCA0初始化
--------------------------------------------------------------------*/
void PCA_init() ;
void pwmwork();
/***********************PWM聲明結束***********************************/

/*********************************************************************
***************************函數聲明結束*******************************
**********************************************************************/


/****************************************************************
*延時子程序,1ms
****************************************************************/

void delay1ms(uint x)
{
    uint i;
    while(x--)   			//((11+7*i)*x+5	)T
      {  i= 450;		
        while((i--)>0);			//i=141,x=1,t=1003T
      }
}
/******************************************************************
*              uchar  keyscan()
*功能:鍵盤掃描程序
*說明: 4*4鍵盤,無上拉電阻。P0~P3為行輸出,P4~P7為列輸入
*返回值:0x(lie)(hang)
******************************************************************/


uchar getkey (void)
{   
     
     static uchar kn;
	 uchar lie=0,hang,x=0;
	 //E = 0;
	 //RS = 0;
	 scan = 0xf0;
	 if((scan & 0xf0) !=0xf0)               
     {  delay1ms(10);                             
        if((scan & 0xf0) !=0xf0)          
          { hang = 0xfe;                     
            for(i=0;i<4;i++ )                
            { scan = hang;
              if((scan & 0xf0) != 0xf0)        
               {
			     lie = ~(scan | 0x0f );        
                 switch (lie)
				  { case 0x10:kn = *(key_tab + i);break;
				    case 0x20:kn = *(key_tab+i+4) ;break;
				    case 0x40:kn = *(key_tab+i+8) ;break;
				    case 0x80:kn = *(key_tab+i+12) ;break;
					default:break;
				   } 
				   return( kn);
               } 
              else hang = (hang<<1)|0x01;
            }
          }   
     }
   return(kn);  
}





/**********延時子程序*************/
void mdelay(uchar j)
{uint i;
for(;j>0;j--)
  { for(i=0;i<200;i++)
  {;}
    }
}

/**********判忙子程序*************/
 void lcdbusytest()
{
  PSD33_reg.DATAOUT_A = 0xff;
 // lcdport=0xff;
  RS=0;
  RW=1;
  E=1;
  PSD33_reg.DIRECTION_A =0;		          //PB為輸入模式
  do{temp=PSD33_reg.DATAIN_A;} while(busy);
//do{temp=lcdport;}while(busy);
  E=0;
  PSD33_reg.DIRECTION_A =0xff; 
}


/*********寫命令******************/
 void writelcdcom(uchar com)
{
  lcdbusytest();
  RS=0;
  RW=0;
  E=1; 
  PSD33_reg.DATAOUT_A =	com;
  //lcdport=com;
  E=0;
}

/**********寫數據****************/
void writelcddat(uchar dat)
{
  lcdbusytest();
  RS=1;
  RW=0;
  E=1;
  PSD33_reg.DATAOUT_A = dat;
  //lcdport=dat;
  E=0;
}

/***********LCD清屏****************/
void clrlcd()
{writelcdcom(0x01);}

/***********LCD初始化**************/
 void init_lcd()
{ mdelay(15);
  RS=0;
  RW=0;
  E=1;
  PSD33_reg.DATAOUT_A = 0x38;
 // lcdport=0x38;
  E=0;
  mdelay(5);
  RS=0;
  RW=0;
  E=1;
  PSD33_reg.DATAOUT_A = 0x38;
  //lcdport=0x38;
  E=0;
  mdelay(5);
  RS=0;
  RW=0;
  E=1;
  PSD33_reg.DATAOUT_A = 0x38;
 // lcdport=0x38;
  E=0;
  writelcdcom(0x38);
  writelcdcom(0x08);
  clrlcd();
  writelcdcom(0x06);
  writelcdcom(0x0c);
}

/*********寫一個字符****************/
void printchar(uchar xpos,uchar ypos,uchar str)
{uchar m=0;
switch (ypos)
{ case 0:  xpos|=0x80;break;
  case 1: xpos|=0xc0;break;
  default: break;
  }
writelcdcom(xpos);
writelcddat(str);
}

/*********寫字符串函數*************/
void printstr(uchar xpos,uchar ypos,uchar *str)
{ 
 //uchar n;
 uchar m=0;
 switch (ypos)
 { case 0: xpos|=0x80;break;	        //寫入顯示地址要求D7恒為高電平
   case 1: xpos|=0xc0;break;
   default: break;
  }
 writelcdcom(xpos);                //此處的Xpos已轉換為LCM的顯示寄存器實際地址
 for(i=0;i<strlen(str);i++)
   {
     writelcddat(str[m++]);
   }

}


/*****************************************************************************
*                         ADC_EnableAll()
*功能:ADC使能,設置P1口通道為ADC輸入,選擇ADC時鐘頻率
*參數:無
******************************************************************************/
void ADC_EnableAll(void) 
{
    ACON = 0;                           // 關閉ADC


    ADCPS =(0x08 + 1);                  //使能ADC時鐘,設置時鐘頻率
    _nop_();
    _nop_();
   	P1SFS0 |= 0x07;
	P1SFS1 |= 0x07;                      // 選擇P1口相應位為ADC輸入

    
    ACON = 0x20;
                        // 使能ADC;Enable ADC

    // NOTE: USER CODE MUST WAIT AT LEAST 20 MS before calling ADC_Read (Using the ADC)
}



/******************************************************************************
*                       ADC_Init(channel)
*功能描述:ADC初始化,選擇模擬通道輸入,初始化時鐘,關閉ADC中斷
*參    數:channel - uchar 選擇ADC通道
*注    意:當ADC通道改變得時候,此子程序一定要被調用
*****************************************************************************/
void ADC_Init (unsigned char channel) 
{
    unsigned char temp;
    ACON = 0;                           

    temp = (0x01) << channel;           // 選擇通道
    P1SFS0 |= temp;         
    P1SFS1 |= temp;                     // 設置P1口相應位為ADC輸入

    ADCPS =(0x08 + 1);  // 使能ADC時鐘,設置時鐘頻率
    _nop_();
    ACON = 0x20;                        // 允許ADC轉換


    // NOTE: USER CODE MUST WAIT AT LEAST 20 MS before calling ADC_Read (Using the ADC)
}

/******************************************************************************
*                      uint  ADC_Read(channel)
*功能描述:讀A/D轉換后的數據
*參    數:channel,初始化程序中選擇的通道
*返 回 值:ADC轉換結果,12位
*注    意:該子程序調用前,ADC_Init()必須先被調用
*******************************************************************************/
unsigned int ADC_Read( unsigned char channel )
{
    unsigned int  temp_ADC_result;  
    ACON &= 0xE0;                        //清除輸入通路  ~(00101110B) = (11010001B)

    ACON |= (channel<<2);                 //選擇通路
    _nop_ ();
    _nop_ ();   

    ACON |= 0x02;                           //開始ADC轉換
    _nop_ ();                               //延時一個機器周期: ADST: 1->0

    while( (ACON & 0x01) != 1 );            //等待轉換結束

      // Note: For increased ADC accuracy, the while loop above should be
      //       replaced with code that puts the MCU into Idle mode via PCON
      //       and makes use of the ADC interrupt to exit the Idle mode.
      //       The user would need to enable the ADC int and define the ADC ISR.

    temp_ADC_result = (ADAT1<<8)+ADAT0;     //Calculate ADC conversion result

    return (temp_ADC_result);
}


/*******************************************************************************
*    int sin_angle(long angle )
*功能描述:角度換算函數,使角度值控制在180以內
*
********************************************************************************/

int sin_angle(long angle )
{
	int Mod_data;

	Mod_data = (int)angle/180;
	switch (Mod_data )
	{
	case 0:
		 M_angle = sin_table[angle];
	     break;
	case 1:
		 M_angle = -sin_table[angle - 180];
		 break;
    case 2:
	     M_angle = sin_table[angle - 360];
		 break;
	case 3:
		 M_angle = -sin_table[angle - 540];
 	     break;
	}

	return(M_angle);
}

/*******************************************************************************
*             void first(void )
*第一個采樣點計算函數,在K=0時計算
*******************************************************************************/
void first(void )		
{

	U_angle = K*180/N;			//U相在K=0時計算
	V_angle = U_angle + 120;
	W_angle = U_angle + 240;


	U_Toff = ((Half_Ts * (0xffff - M*(sin_angle(U_angle))))>>16);
	V_Toff = ((Half_Ts * (0xffff - M*(sin_angle(V_angle))))>>16);
	W_Toff = ((Half_Ts * (0xffff - M*(sin_angle(W_angle))))>>16);



	P_flag = 0;

}

/*------------------------------------------------------------------------------
timer0_isr()

This function is an interrupt service routine for TIMER 0.  It should never
be called by a C or assembly function.  It will be executed automatically
when TIMER 0 overflows.

This ISR stops timer0, adjusts the counter so that another interrupt occurs in
10ms, and then restarts the timer.
------------------------------------------------------------------------------*/

//定時器0中斷服務程序
//定時器0用于產生采樣周期的定時中斷,采樣周期Ts	=1/2載波周期 = 278 時鐘周期
static void timer0_isr (void) interrupt TF0_VECTOR using 1
{
  TR0 = 0;						/* stop timer 0 */
  TL0 = (timer0_value & 0x00FF);
  TH0 = (timer0_value >> 8);
  TR0 = 1;						/* start timer 0 */
  

////////////////////////////////////////////
////將上一次定時器中斷計算的延時值送入TCM0,TCM1,TCM2的比較寄存器
//
//
////取當前PCA0的計數值
	PCA0 = PCACL0 + (PCACH0  << 8 );
//
////實際延時時間應加上PCA0的當前計數值
//
	U_Toff += PCA0;
	V_Toff += PCA0;
	W_Toff += PCA0;
	U_Ton += PCA0;
	V_Ton += PCA0;
	W_Ton += PCA0;
//
//
////偶數頂點采樣使用Toff,奇數底點采樣使用Ton
  	if ( P_flag==0)
	{
		CAPCOML0 = (U_Toff & 0x00FF);
		CAPCOMH0 = (U_Toff >> 8);
	 	
		CAPCOML1 = (V_Toff & 0x00FF);
		CAPCOMH1 = (V_Toff >> 8);

		CAPCOML2 = (W_Toff & 0x00FF);
		CAPCOMH2 = (W_Toff >> 8);
	}
	else 
	{
		CAPCOML0 = (U_Ton & 0x00FF);
		CAPCOMH0 = (U_Ton >> 8);
	 	
		CAPCOML1 = (V_Ton & 0x00FF);
		CAPCOMH1 = (V_Ton >> 8);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av电影免费在线播放| 午夜电影网亚洲视频| 国产原创一区二区三区| 久久综合精品国产一区二区三区| 麻豆91免费看| 国产丝袜美腿一区二区三区| 成人精品一区二区三区中文字幕| 亚洲日穴在线视频| 欧美日韩日日夜夜| 国内国产精品久久| 亚洲女同女同女同女同女同69| 在线欧美日韩精品| 美女mm1313爽爽久久久蜜臀| 国产色综合久久| 91国在线观看| 久久er精品视频| 亚洲欧美日韩在线不卡| 91精品啪在线观看国产60岁| 国产精品一区专区| 一区二区三区在线观看欧美| 欧美一区二区免费观在线| 黑人巨大精品欧美黑白配亚洲| 中文久久乱码一区二区| 欧美日韩免费高清一区色橹橹| 韩国欧美国产1区| 一区二区三区91| 国产亚洲视频系列| 欧美日韩亚洲国产综合| 激情文学综合网| 欧美极品xxx| 日本乱人伦aⅴ精品| 久久66热re国产| 一区二区三区视频在线看| 久久久影视传媒| 欧美日韩国产bt| 95精品视频在线| 国产在线播放一区| 天天做天天摸天天爽国产一区| 国产精品免费视频网站| 欧美一区二区免费| 欧美手机在线视频| 成人h动漫精品| 激情文学综合网| 日产精品久久久久久久性色| 成人欧美一区二区三区黑人麻豆| 欧美不卡激情三级在线观看| 欧洲亚洲国产日韩| 成人永久免费视频| 国内精品伊人久久久久影院对白| 性欧美大战久久久久久久久| 亚洲天堂av老司机| 欧美高清在线视频| 久久综合色之久久综合| 91麻豆精品91久久久久同性| 色综合视频一区二区三区高清| 粉嫩av一区二区三区粉嫩| 美女国产一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 亚洲午夜精品在线| 亚洲综合激情网| 夜夜嗨av一区二区三区中文字幕| 国产嫩草影院久久久久| 久久人人超碰精品| 亚洲精品一区二区三区99| 欧美一区二区三区成人| 91精品国产黑色紧身裤美女| 欧美日韩免费一区二区三区 | 国模娜娜一区二区三区| 天天爽夜夜爽夜夜爽精品视频| 一级中文字幕一区二区| 亚洲另类色综合网站| 国产精品理论在线观看| 国产精品国产三级国产普通话蜜臀| 久久久国产一区二区三区四区小说| 日韩欧美区一区二| 精品国产99国产精品| 精品捆绑美女sm三区| 日韩欧美色综合网站| 日韩一级精品视频在线观看| 国产精品成人网| 国产精品女上位| 亚洲人成影院在线观看| 亚洲精选视频在线| 亚洲一区二区三区视频在线播放| 樱桃国产成人精品视频| 亚洲国产精品久久人人爱| 日韩电影在线观看一区| 久久www免费人成看片高清| 国产精品香蕉一区二区三区| 国产大片一区二区| 97久久超碰精品国产| 欧美视频中文字幕| 日韩免费看的电影| 国产精品丝袜久久久久久app| 中文字幕一区二区三区乱码在线 | 欧美午夜在线一二页| 欧美一区二区在线不卡| 久久午夜老司机| 中文字幕色av一区二区三区| 亚洲国产精品尤物yw在线观看| 午夜a成v人精品| 国产精品小仙女| 欧美怡红院视频| 久久久久久久久久看片| 亚洲欧美成aⅴ人在线观看| 亚洲va国产天堂va久久en| 国模一区二区三区白浆| 91麻豆精品在线观看| 欧美一区二区在线播放| 中文字幕av一区二区三区免费看 | 国产大片一区二区| 在线一区二区视频| 精品国产伦理网| 亚洲美女视频一区| 国产一区二三区| 日本高清不卡视频| 欧美精品一区二区精品网| 日韩理论电影院| 久久国产婷婷国产香蕉| 91网站在线观看视频| 日韩欧美自拍偷拍| 国产一区二区主播在线| 91在线无精精品入口| 精品卡一卡二卡三卡四在线| 亚洲精品亚洲人成人网| 韩国三级中文字幕hd久久精品| 91久久精品一区二区三| 久久精品亚洲一区二区三区浴池| 一区二区三区中文字幕精品精品| 国产一区二区在线免费观看| 欧美日韩一区 二区 三区 久久精品| 国产午夜精品一区二区三区视频| 亚洲va国产天堂va久久en| 成人av在线一区二区| 欧美电影免费观看高清完整版| 亚洲综合一区二区| 9色porny自拍视频一区二区| 日韩视频免费观看高清完整版在线观看 | 国产天堂亚洲国产碰碰| 奇米888四色在线精品| 欧美亚洲国产bt| 亚洲欧美日韩国产综合| 国产一区不卡在线| 日韩三级视频中文字幕| 午夜久久福利影院| 在线观看免费一区| 中文字幕一区二区三区色视频 | 日韩一级片网址| 亚洲高清免费观看高清完整版在线观看| av毛片久久久久**hd| 久久久久国产精品免费免费搜索| 亚洲综合激情小说| 日本久久电影网| 中文字幕一区av| 丁香一区二区三区| 欧美极品美女视频| 国产精品1区2区3区| 精品国产一区二区国模嫣然| 日韩高清一级片| 正在播放亚洲一区| 秋霞午夜av一区二区三区| 亚洲欧美一区二区视频| 成人动漫一区二区| 18成人在线观看| 一道本成人在线| 亚洲精品视频观看| 色猫猫国产区一区二在线视频| 国产精品成人免费在线| 粉嫩蜜臀av国产精品网站| 日本一区二区视频在线| av一二三不卡影片| 国产精品福利av| 在线亚洲一区观看| 亚洲超碰精品一区二区| 欧美一区永久视频免费观看| 日韩av电影免费观看高清完整版在线观看| 777色狠狠一区二区三区| 美腿丝袜亚洲一区| 国产日韩欧美不卡在线| 成人av集中营| 亚洲激情图片一区| 欧美日韩一区二区在线观看| 日本vs亚洲vs韩国一区三区二区| 精品国产一区二区三区不卡| 国产成人免费视频| 亚洲日本在线a| 欧美久久久久中文字幕| 日本欧美韩国一区三区| 国产欧美日韩在线| 91麻豆高清视频| 美女视频黄 久久| 中文av字幕一区| 欧美另类z0zxhd电影| 久久99久久精品欧美| 国产精品久久久久久久久久久免费看 | 99riav一区二区三区| 亚瑟在线精品视频| 久久久久久久综合日本| 91看片淫黄大片一级在线观看| 午夜久久久久久久久|