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

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

?? 2440lib.c

?? 非操作系統(tǒng)下QQ2440 LED測試程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
    {
        if(data=='\n')
        {
            while(!(rUTRSTAT1 & 0x2));
            Delay(10);                 //because the slow response of hyper_terminal 
            rUTXH1 = '\r';
        }
        while(!(rUTRSTAT1 & 0x2));   //Wait until THR is empty.
        Delay(10);
        rUTXH1 = data;
    }   
    else if(whichUart==2)
    {
        if(data=='\n')
        {
            while(!(rUTRSTAT2 & 0x2));
            Delay(10);                 //because the slow response of hyper_terminal 
            rUTXH2 = '\r';
        }
        while(!(rUTRSTAT2 & 0x2));   //Wait until THR is empty.
        Delay(10);
        rUTXH2 = data;
    }       
}               

//====================================================================
void Uart_SendString(char *pt)
{
    while(*pt)
        Uart_SendByte(*pt++);
}

#if !USE_MAIN
//If you don't use vsprintf(), the code size is reduced very much.
void Uart_Printf(const char *fmt,...)
{
    va_list ap;
    char string[256];

    va_start(ap,fmt);
    vsprintf(string,fmt,ap);
    Uart_SendString(string);
    va_end(ap);
}
#endif

//**************************[ BOARD LED ]*********************************
void Led_Display(int data)
{
          //Active is low.(LED On)
          // GPF7  GPF6   GPF5   GPF4
          //nLED_8 nLED4 nLED_2 nLED_1
//    rGPFDAT = (rGPFDAT & 0xf) | !((data & 0xf)<<4);
    rGPFDAT = (rGPFDAT & ~(0xf<<4)) | ((~data & 0xf)<<4);    
}


//*************************[ Timer ]********************************
void Timer_Start(int divider)  //0:16us,1:32us 2:64us 3:128us
{
    rWTCON = ((PCLK/1000000-1)<<8)|(divider<<3);  //Watch-dog timer control register
    rWTDAT = 0xffff;  //Watch-dog timer data register
    rWTCNT = 0xffff;  //Watch-dog count register

      // Watch-dog timer enable & interrupt  disable
    rWTCON = (rWTCON & ~(1<<5) & ~(1<<2)) |(1<<5);
}

//=================================================================
int Timer_Stop(void)
{
    rWTCON = ((PCLK/1000000-1)<<8);
    return (0xffff - rWTCNT);
}


//*************************[ MPLL ]*******************************
void ChangeMPllValue(int mdiv,int pdiv,int sdiv)
{
	//Led_Display(0x8);

    rMPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
	//Led_Display(0x0);
}


//************************[ HCLK, PCLK ]***************************
/*
// for 2410.
void ChangeClockDivider(int hdivn,int pdivn)
{
     // hdivn,pdivn FCLK:HCLK:PCLK
     //     0,0         1:1:1 
     //     0,1         1:1:2 
     //     1,0         1:2:2
     //     1,1         1:2:4
    rCLKDIVN = (hdivn<<1) | pdivn;    

    if(hdivn)
        MMU_SetAsyncBusMode();
    else 
        MMU_SetFastBusMode();
}
*/
// Modified for 2440.
void ChangeClockDivider(int hdivn_val,int pdivn_val)
{
	int hdivn=2, pdivn=0;
	
     // hdivn_val (FCLK:HCLK)ratio hdivn
     // 11           1:1       (0)
     // 12           1:2       (1)
     // 13           1:3       (3) 
     // 14           1:4       (2)
     // pdivn_val (HCLK:PCLK)ratio pdivn
     // 11           1:1       (0)
     // 12           1:2       (1)
	switch(hdivn_val) {
		case 11: hdivn=0; break;
		case 12: hdivn=1; break;
		case 13:
		case 16: hdivn=3; break;
		case 14: 
		case 18: hdivn=2; break;
	}
	
	switch(pdivn_val) {
		case 11: pdivn=0; break;
		case 12: pdivn=1; break;
	}
	
	//Uart_Printf("Clock division change [hdiv:%x, pdiv:%x]\n", hdivn, pdivn);
	rCLKDIVN = (hdivn<<1) | pdivn;
	//Uart_Printf("rCLKDIVN:%x]\n", rCLKDIVN);

	switch(hdivn_val) {
		case 16:		// when 1, HCLK=FCLK/6.
			rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<8); 
		break; 
		case 18: 	// when 1, HCLK=FCLK/8.
			rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9); 
		break;
	}
	//Uart_Printf("rCAMDIVN:%x]\n", rCAMDIVN);
	
    if(hdivn!=0)
        MMU_SetAsyncBusMode();
    else 
        MMU_SetFastBusMode();
}



//**************************[ UPLL ]*******************************
void ChangeUPllValue(int mdiv,int pdiv,int sdiv)
{
    rUPLLCON = (mdiv<<12) | (pdiv<<4) | sdiv;
}


//*************************[ General Library ]**********************
#if !USE_MAIN
void * malloc(unsigned nbyte) 
//Very simple; Use malloc() & free() like Stack
//void *mallocPt=Image$$RW$$Limit;
{
    void *returnPt = mallocPt;

    mallocPt = (int *)mallocPt+nbyte/4+((nbyte%4)>0); //To align 4byte

    if( (int)mallocPt > HEAPEND )
    {
        mallocPt = returnPt;
        return NULL;
    }
    return returnPt;
}

//-------------------------------------------------------------------
void free(void *pt)
{
    mallocPt = pt;
}
#endif


 void ChangeSromParameter(char bank, char minacc)  // only for Tacc
{
    int acc;

    //1000000/(hclk/1000000.)=Unit Period(ns)*1000
    acc = (int)(minacc*(HCLK/1000000.)/1000+0.5);	

    if(acc<=1)
		acc=0;    	
    else if(acc==2)
	 	acc=1;
    else if(acc==3)
	 	acc=2;
    else if(acc==4)
	 	acc=3;
    else if((5<acc)&&(acc<=6))
   		acc=4;
    else if((7<acc)&&(acc<=8))
	 	acc=5;
    else if((9<acc)&&(acc<=10))
   		acc=6;	
    else if(11<acc)
	 	acc=7;
	
    switch(bank)
    {
	  case 0 : rBANKCON0 |= (acc<<8); break;
	  case 1 : rBANKCON1 |= (acc<<8); break;
	  case 2 : rBANKCON2 |= (acc<<8); break;
	  case 3 : rBANKCON3 |= (acc<<8); break;
	  case 4 : rBANKCON4 |= (acc<<8); break;
	  case 5 : rBANKCON5 |= (acc<<8); break;
    }	
}


// each timing parameter's unit is nano second..
void ChangeSdramParameter(char bank_num, int minrc, int minrcd, int minrp, int refresh, int col_addr, int cl, char banksize)
{
    int rc, rcd, rp, rcnt, scan;

    //1000000/(hclk/1000000.)=Unit Period(ns)*1000
    rc = (int)(minrc*(HCLK/1000000.)/1000+0.5)-4;
    rcd = (int)(minrcd*(HCLK/1000000.)/1000+0.5)-2;
    rp = (int)(minrp*(HCLK/1000000.)/1000+0.5)-2;
	rcnt = (int)(2048+1-(HCLK/1000000.)*(refresh/1000.)+0.5);
	scan = col_addr-8;

	if (rc<0) rc=0; if (rc>3) rc = 3;
	if (rcd<0) rcd=0; if (rcd>2) rcd = 2;
	if (rp<0) rp=0; if (rp>2) rp = 2;
	if (cl==1) cl = 0;	
	switch(banksize)
	{
	case 2 : banksize = 4; break;
	case 4 : banksize = 5; break;
	case 8 : banksize = 6; break;
	case 16 : banksize = 7; break;
	case 32 : banksize = 0; break;
	case 64 : banksize = 1; break;
	default : banksize = 2; break; // 128MB/128MB
	}

//	Uart_Printf("rc=%d, rcd=%d, rp=%d, rcnt=%d, scan=%d, cl=%d, banksize=%d\n", rc, rcd, rp, rcnt, scan, cl, banksize);
	
    switch(bank_num)
    {
    case 0:
    case 6:
	default:
		rBANKCON6 = ( rBANKCON6 & ~((3<<15)|(0xf<<0)) ) | (3<<15)|(rcd<<2)|(scan); // SDRAM, Trcd, column address number
		rMRSRB6 = (rMRSRB6 & ~(3<<4)) | (cl<<4);
	break;
	case 1:
    case 7: // bank 7
		rBANKCON7 = ( rBANKCON7 & ~((3<<15)|(0xf<<0)) ) | (3<<15)|(rcd<<2)|(scan); // SDRAM, Trcd, column address number
		rMRSRB7 = (rMRSRB7 & ~(3<<4)) | (cl<<4);
	break;
    }	
	rREFRESH = (rREFRESH & ~(0x3f<<18)) | (1<<23)|(0<<22)|(rp<<20)|(rc<<18)|(rcnt); // refresh enable, auto refresh, Trp, Trc, Refresh counter
	rBANKSIZE = (rBANKSIZE & ~(7<<0)) | (banksize); // SCLK power save mode, 128/128 bank
	
}

void Max1718_Set(int voltage)
{

     int vtg;
	//////////////////////////////////////////////
	//   D4    D3  D2   D1     D0
	//	0	 1	0 	0	 0		// 1.35V
	//	0	 1	0 	0	 1		// 1.30V
	//	0	 1	0 	1	 0		// 1.25V
	//	0	 1	0 	1	 1		// 1.20V
	//	0	 1	1 	0	 0		// 1.15V
	//	0	 1	1 	0	 1		// 1.10V
	//	0	 1	1 	1	 0		// 1.05V
	//	0	 1	1 	1	 1		// 1.00V
	//	1	 0	0 	0	 1		// 0.95V
	//	1	 0	0 	1	 1		// 0.90V
	//	1	 0	1 	0	 1		// 0.85V
	//	1	 0	1 	1	 1		// 0.80V
	
    vtg=voltage;
	rGPBCON = (rGPBCON&~((3<<20) |(3<<16) |(3<<14))) | (1<<20) | (1<<16) | (1<<14);
	// GPB7, 8, 10 : Output
	rGPFCON=(rGPFCON&~(0xff<<8))|(0x55<<8);  // GPF4~7: Output , shared with LED4~7

     switch (vtg)
	{
	case 135:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
	      rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(0<<5)|(0<<4);	//D3~0
	      break;

	
	case 130:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(0<<5)|(1<<4); //D3~0
		 break;
       
	case 125:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(1<<5)|(0<<4); //D3~0
		break;

	case 120:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
		 break;

	case 115:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(0<<5)|(0<<4); //D3~0
		 break;

	case 110:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(0<<5)|(1<<4); //D3~0
		 break;

	case 105:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(1<<5)|(0<<4); //D3~0
		 break;

	case 100:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(1<<6)|(1<<5)|(1<<4); //D3~0
		break;

	case 95:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(0<<6)|(0<<5)|(1<<4); //D3~0
		 break;

	case 90:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
		 break;

	case 85:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
		rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(1<<6)|(0<<5)|(1<<4); //D3~0
		 break;

      	case 80:
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(1<<7);	//D4
	       rGPFDAT=(rGPFDAT&~(0xf<<4))|(0<<7)|(1<<6)|(1<<5)|(1<<4); //D3~0
		 break;

       default:	// 1.2V
		 rGPBDAT=(rGPBDAT&~(1<<7)) |(0<<7);	//D4
		 rGPFDAT=(rGPFDAT&~(0xf<<4))|(1<<7)|(0<<6)|(1<<5)|(1<<4); //D3~0
		 break;

		
	}
		 
	rGPBDAT&=~(1<<8);   //Latch enable
	rGPBDAT|=(1<<10);   //Output enable
	rGPBDAT|=(1<<8);	 //Latch disable

}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产久精国产| 在线观看中文字幕不卡| 精品一区二区国语对白| 日韩av不卡一区二区| 日韩高清一区在线| 免费人成精品欧美精品| 日本三级亚洲精品| 另类综合日韩欧美亚洲| 男男视频亚洲欧美| 精品一区免费av| 韩国女主播一区| 高清视频一区二区| 成人黄色av电影| 91网址在线看| 色婷婷一区二区| 欧美日韩三级一区| 日韩一区二区影院| 久久久精品中文字幕麻豆发布| 久久久久久久久久久电影| 国产亚洲午夜高清国产拍精品| 国产欧美日韩精品一区| 亚洲三级电影全部在线观看高清| 亚洲在线观看免费视频| 日韩国产高清影视| 国产乱子轮精品视频| 成人av在线一区二区三区| 欧美图片一区二区三区| 国产福利91精品| 99久久精品一区| 欧美日韩精品专区| 日韩欧美一区二区在线视频| 国产日产欧美一区二区视频| 1000精品久久久久久久久| 亚洲国产成人va在线观看天堂| 蜜桃精品视频在线观看| 成人午夜视频在线| 欧美日韩一区在线观看| 久久日一线二线三线suv| 亚洲欧洲99久久| 日韩福利电影在线| 国产.欧美.日韩| 欧美色爱综合网| 国产亚洲欧美在线| 亚洲成av人片在www色猫咪| 看片的网站亚洲| 91亚洲精品乱码久久久久久蜜桃 | 不卡av在线免费观看| 在线观看日韩毛片| 久久久www成人免费毛片麻豆 | 日韩av一区二| 成人免费视频一区| 91麻豆精品国产91久久久| 中文成人综合网| 男人的天堂久久精品| 91亚洲精华国产精华精华液| 精品国产网站在线观看| 亚洲综合男人的天堂| 丁香五精品蜜臀久久久久99网站| 欧美日韩夫妻久久| 亚洲同性同志一二三专区| 国产综合久久久久久鬼色| 韩国精品免费视频| 国产一区二区三区av电影| 欧美性色黄大片| 国产精品乱人伦| 国产一区二区视频在线播放| 欧洲视频一区二区| 国产精品视频麻豆| 国产自产视频一区二区三区| 在线播放欧美女士性生活| 中文字幕在线一区二区三区| 久久激五月天综合精品| 欧美三级电影在线看| 亚洲欧美韩国综合色| 国产福利电影一区二区三区| 精品久久久久久久久久久院品网| 亚洲制服丝袜一区| 色久综合一二码| 自拍偷拍国产精品| 成人开心网精品视频| 精品国产乱码久久久久久蜜臀| 亚洲一区二区黄色| 色悠久久久久综合欧美99| 国产欧美精品一区二区色综合| 开心九九激情九九欧美日韩精美视频电影 | 日韩电影一二三区| 色av成人天堂桃色av| 17c精品麻豆一区二区免费| 粉嫩蜜臀av国产精品网站| 国产欧美精品一区aⅴ影院| 日本aⅴ免费视频一区二区三区| 色婷婷综合五月| 亚洲黄色片在线观看| 在线观看网站黄不卡| 五月开心婷婷久久| 欧美一区二区三区免费| 一区在线观看免费| 一本色道a无线码一区v| 亚洲午夜视频在线| 久久女同互慰一区二区三区| 91色婷婷久久久久合中文| 亚洲h精品动漫在线观看| 日韩欧美你懂的| 成人精品一区二区三区中文字幕| 国产精品午夜免费| 欧美三级视频在线播放| 韩国女主播成人在线观看| 蜜臀av一区二区在线观看| 在线电影国产精品| 国产aⅴ综合色| 亚洲色图在线视频| 欧美视频日韩视频| 国产资源在线一区| 亚洲一区二区三区小说| 国产亚洲欧洲一区高清在线观看| 中文字幕一区二区三区视频| 亚洲一二三四在线观看| 日日夜夜一区二区| 日韩欧美一区在线| 国产精品1区2区3区在线观看| 久久久久国产精品人| 成人免费毛片嘿嘿连载视频| 亚洲人成精品久久久久久| 在线视频欧美精品| 天天综合天天综合色| 日韩一级片网址| 国产精品美女一区二区| 久久国产精品露脸对白| 国产调教视频一区| 色播五月激情综合网| 日韩av一区二区在线影视| 久久免费精品国产久精品久久久久 | 久久久精品国产免大香伊| 99久久精品99国产精品| 一区二区欧美在线观看| 日韩三级视频中文字幕| 成人网在线免费视频| 一区二区欧美在线观看| 精品欧美一区二区在线观看| 成人精品高清在线| 亚洲成av人片在www色猫咪| 精品av久久707| 一本大道av伊人久久综合| 婷婷夜色潮精品综合在线| 国产女人18毛片水真多成人如厕| 色八戒一区二区三区| 久久成人久久爱| 亚洲免费在线看| 2021中文字幕一区亚洲| 色婷婷综合久久久中文一区二区 | 精品一区二区综合| 亚洲视频中文字幕| 欧美成va人片在线观看| 色婷婷av一区二区三区软件 | 91小宝寻花一区二区三区| 美女脱光内衣内裤视频久久影院| 国产精品美女视频| 日韩亚洲欧美在线观看| 97久久精品人人做人人爽| 美洲天堂一区二卡三卡四卡视频 | 蜜臀久久久久久久| 亚洲三级在线免费| 久久久久九九视频| 3atv在线一区二区三区| 91在线观看污| 国产麻豆一精品一av一免费| 亚洲国产人成综合网站| 国产精品三级视频| 亚洲精品一区二区在线观看| 欧美色倩网站大全免费| av亚洲精华国产精华精| 国产一区二区按摩在线观看| 日韩精品一二三区| 一区二区国产视频| 国产精品国产三级国产aⅴ无密码| 日韩女同互慰一区二区| 欧美私模裸体表演在线观看| 不卡av在线免费观看| 国产麻豆精品久久一二三| 麻豆91在线播放| 午夜久久久久久久久久一区二区| 日韩美女视频19| 国产农村妇女精品| 精品国产成人在线影院| 制服丝袜中文字幕一区| 欧美日韩中文字幕一区| 在线免费观看日韩欧美| 亚洲高清不卡在线| 韩国在线一区二区| 免费观看一级特黄欧美大片| 性感美女极品91精品| 一区二区三区美女| 亚洲美女免费在线| 综合电影一区二区三区 | 国产麻豆一精品一av一免费| 久久精品国产久精国产爱| 日本中文字幕一区二区视频| 亚洲www啪成人一区二区麻豆 | 99久久婷婷国产综合精品电影| 国产一区二区三区黄视频|