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

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

?? device.c

?? UCOS2.83移植的s3c44b0x的最終版,如果那為燒友有好的建議請(qǐng)EMAIL我,不勝感激!
?? C
字號(hào):
/************************************************
 * NAME	    : DEVICE.C							*
 * BY       : HappyHd
 * Version  : 1.Sep.2006						*
 ***********************************************/


#include "..\inc\Device.h"
#include "..\ucos_ii\ucos_ii.h"             
/************************************************************************************************
*                              s3c44bo設(shè)備驅(qū)動(dòng) 
                                      RTC     
************************************************************************************************/

char *date[7] = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
char *month[12]={ "January ","February ","March ","April ", "May ","June ", "July ", "August ",  "September ","October ",   "November ",  "December "};

INT16U Get_Year;
INT8U Get_Month,Get_Day,Get_Date,Get_Hour,Get_Minutes,Get_Second;

OS_EVENT *Rtc_Alarm_Sem;
OS_EVENT *Rtc_Tick_Sem;
OS_EVENT *Rtc_Rw_Sem;

/*****************************************RTC INT***********************************************/
void Rtc_Init(void)
{
     Rtc_Alarm_Sem = OSSemCreate(0);
     Rtc_Tick_Sem = OSSemCreate(0);
     Rtc_Rw_Sem = OSSemCreate(1);  
} 
/*
*********************************************************************************************************
*                                            SET DATE ONLY
*
* Description : Set the date of the time-of-day clock
* Arguments   : Month     is the desired month (1..12)
*               Day       is the desired day   (1..31)
*               Year      is the desired year  (0..99)
*               Week      is the desired week  (0..7)
*********************************************************************************************************
*/

void Set_Rtc_Date(int Year,int Month,int Day,int Week)
{
    INT8U err;
    OSSemPend(Rtc_Rw_Sem,0,&err);	
    rRTCCON = 0x01;
    rBCDYEAR = Year-2000;
    rBCDMON  = Month;
    rBCDDAY  = Day;	
    rBCDDATE = Week;  // SUN:1 MON:2 TUE:3 WED:4 THU:5 FRI:6 SAT:7
    rRTCCON = 0x00;
    OSSemPost(Rtc_Rw_Sem);

}
/*
*********************************************************************************************************
*                                          SET TIME ONLY
*
* Description : Set the time-of-day clock
* Arguments   : Hour        is the desired hour    (0..23)
*               Minutes       is the desired minutes (0..59)
*               Second       is the desired seconds (0..59)
*********************************************************************************************************
*/

void Set_Rtc_Time(int Hour,int Minutes,int Second)
{
    INT8U err;
    OSSemPend(Rtc_Rw_Sem,0,&err);	
    rRTCCON = 0x01;
    rBCDHOUR = Hour;
    rBCDMIN  = Minutes;
    rBCDSEC  = Second;
    rRTCCON = 0x00;
    OSSemPost(Rtc_Rw_Sem);

}
/**************************************GET RTC TIME*********************************************/

void Get_Rtc_Time(void)
{   
    INT8U err;
    OSSemPend(Rtc_Rw_Sem,0,&err);
    rRTCCON = 0x01;
    Get_Year=2000+rBCDYEAR;
    Get_Month=rBCDMON;
    Get_Day=rBCDDAY;	
    Get_Date=rBCDDATE;
    Get_Hour=rBCDHOUR;
    Get_Minutes=rBCDMIN;
    Get_Second=rBCDSEC;
    rRTCCON = 0x00;
    OSSemPost(Rtc_Rw_Sem);
}

/***********************************SET  ALARM**************************************************/
void Set_Alarm_Date_Time(int Ayear,int Amonth,int Aday,int Ahour,int Aminute,int Asecond)
{
    INT8U err;
    OSSemPend(Rtc_Rw_Sem,0,&err);
    rRTCCON = 0x01;
    rALMYEAR=Ayear-2000;
    rALMMON =Amonth;
    rALMDAY =Aday  ;
    rALMHOUR=Ahour ;
    rALMMIN =Aminute;
    rALMSEC =Asecond;    
    rRTCCON = 0x00;    // R/W disable(for power consumption), 1/32768, Normal(merge), No reset
    OSSemPost(Rtc_Rw_Sem);
}

void Alarm_Start(void)
{
    rRTCALM =0x7f;
    rINTMSK=~(BIT_GLOBAL|BIT_RTC);
}

void Alarm_Stop(void)
{   rRTCALM =0x00;
   rINTMSK=BIT_GLOBAL|BIT_RTC; 
}

void Rtc_Alarm(void)
{
    rI_ISPC=BIT_RTC;   
    OSSemPost(Rtc_Alarm_Sem); 
}
/***********************************SET RTC TICK************************************************/
void Set_Rtc_Tick(void)
{   
    rINTMSK = BIT_GLOBAL | BIT_TICK;  
    rRTCCON = 0x01;	//R/W enable(for power consumption), 1/32768, Normal(merge), No reset
    rTICINT = ((1<<7)+127);	//START    
    rRTCCON = 0x00;	//END
    rINTMSK=~(BIT_GLOBAL|BIT_TICK);
}

void Rtc_Tick(void)
{
    rI_ISPC=BIT_TICK; 
    OSSemPost(Rtc_Tick_Sem);
}
/*****************************************DISPLAY RTC*******************************************/
void Display_Rtc(void)
{   
 	Get_Rtc_Time();
 	
    Uart_Printf("%4x,%s,%2x,%s,%2x:%2x:%2x\n",Get_Year,month[Get_Month],Get_Day,date[Get_Date],Get_Hour,Get_Minutes,Get_Second);
    
 }

/************************************************************************************************
*                              s3c44bo設(shè)備驅(qū)動(dòng) 
                                      IIC     
************************************************************************************************/

#define WRDATA	    (1)
#define POLLACK     (2)
#define RDDATA	    (3)
#define SETRDADDR   (4)
#define IICBUFSIZE  0x20

U8 _iicData[IICBUFSIZE];
volatile int _iicDataCount;
volatile int _iicStatus;
volatile int _iicMode;
int _iicPt;
unsigned int save_F,save_PF;

void Iic_Init(void)
{  
    
    save_F=rPCONF;
    save_PF=rPUPF;
    rPCONF |=0xa;	          //PF0:IICSCL, PF1:IICSDA
    rPUPF |=0x3;	          //pull-up disable  
    rIICCON=(1<<7)|(0<<6)|(1<<5)|(0xf);//IICCLK=MCLK/16, Enable ACK,40Mhz/16/(15+1) = 257Khz  
    rIICADD=0x10;                 // S3C44B0X slave address
    rIICSTAT=0x10;  
    rINTMSK=~(BIT_GLOBAL|BIT_IIC);//Enable interrupt
}

void Iic_Exit(void)
{     
    rINTMSK=BIT_GLOBAL|BIT_IIC;   //Disable interrupt
    rPCONF=save_F;
    rPUPF=save_PF;
}

void Wr24LCxx(U32 slvAddr,U32 addr,U8 data)
{
    _iicMode=WRDATA;
    _iicPt=0;
    _iicData[0]=(U8)addr;
    _iicData[1]=data;
    _iicDataCount=2;
    
    rIICDS=slvAddr;//0xa0
    rIICSTAT=0xf0; //MasTx,Start
    //Clearing the pending bit isn't needed because the pending bit has been cleared.
    while(_iicDataCount!=-1);

    _iicMode=POLLACK;

    while(1)
    {
	rIICDS=slvAddr;
	_iicStatus=0x100;
	rIICSTAT=0xf0; //MasTx,Start
	rIICCON=0xaf;  //resumes IIC operation. 
	while(_iicStatus==0x100);
	if(!(_iicStatus&0x1))
	    break; // when ACK is received
    }
    rIICSTAT=0xd0;  //stop MasTx condition 
    rIICCON=0xaf;   //resumes IIC operation. 
    Delay(1);	    //wait until stop condtion is in effect.

}
	
void Rd24LCxx(U32 slvAddr,U32 addr,U8 *data)
{
    _iicMode=SETRDADDR;
    _iicPt=0;
    _iicData[0]=(U8)addr;
    _iicDataCount=1;
    rIICDS=slvAddr;
    rIICSTAT=0xf0; //MasTx,Start  
    //Clearing the pending bit isn't needed because the pending bit has been cleared.
    while(_iicDataCount!=-1);
    _iicMode=RDDATA;
    _iicPt=0;
    _iicDataCount=1;    
    rIICDS=slvAddr;
    rIICSTAT=0xb0; //MasRx,Start
    rIICCON=0xaf;  //resumes IIC operation.   
    while(_iicDataCount!=-1);
    *data=_iicData[1];
}

void Iic_Int(void)
{
    U32 iicSt,i;
    rI_ISPC=BIT_IIC;
    iicSt=rIICSTAT; 
    if(iicSt&0x8){} // when bus arbitration is failed.
    if(iicSt&0x4){} // when a slave address is matched with IICADD
    if(iicSt&0x2){} // when a slave address is 0000000b
    if(iicSt&0x1){} // when ACK isn't received

    switch(_iicMode)
    {
	case POLLACK:
	    _iicStatus=iicSt;
	    break;

	case RDDATA:
	    if((_iicDataCount--)==0)
	    {
		_iicData[_iicPt++]=rIICDS;
	    
		rIICSTAT=0x90;  //stop MasRx condition 
		rIICCON=0xaf;   //resumes IIC operation.
		Delay(1);	//wait until stop condtion is in effect.
				//too long time... 
		//The pending bit will not be set after issuing stop condition.
		break;    
	    }	     
	    _iicData[_iicPt++]=rIICDS;
				//The last data has to be read with no ack.
	    if((_iicDataCount)==0)
		rIICCON=0x2f;	//resumes IIC operation with NOACK.  
	    else 
		rIICCON=0xaf;	//resumes IIC operation with ACK
	    break;

	case WRDATA:
	    if((_iicDataCount--)==0)
	    {
		rIICSTAT=0xd0;	//stop MasTx condition 
		rIICCON=0xaf;	//resumes IIC operation.
		Delay(1);	//wait until stop condtion is in effect.
		//The pending bit will not be set after issuing stop condition.
		break;    
	    }
	    rIICDS=_iicData[_iicPt++];  //_iicData[0] has dummy.
	    for(i=0;i<10;i++);	    //for setup time until rising edge of IICSCL
	    rIICCON=0xaf;	    //resumes IIC operation.
	    break;

	case SETRDADDR:
	    //Uart_Printf("[S%d]",_iicDataCount);
	    if((_iicDataCount--)==0)
	    {
		break;  //IIC operation is stopped because of IICCON[4]    
	    }
	    rIICDS=_iicData[_iicPt++];
	    for(i=0;i<10;i++);  //for setup time until rising edge of IICSCL
	    rIICCON=0xaf;	    //resumes IIC operation.
	    break;

	default:
	    break;	  
    }
}

/************************************************************************************************
*                              s3c44bo設(shè)備驅(qū)動(dòng) 
                                      ADC     
************************************************************************************************/

void Adc_Init(void)
{
	rCLKCON = rCLKCON | (1<<12);	//控制系統(tǒng)主時(shí)鐘進(jìn)入ADC單元模塊		
	rADCPSR = 10;		        //ADC轉(zhuǎn)換頻率為:(int)(MCLK/(2*(rADCPSR+1))/16)
    rADCCON = 0x20;                 //sleep
}

unsigned short Read_Adc(unsigned char ch)
{
	int i;
        static int prevCh=-1;

     if(prevCh!=ch)
        {
		rADCCON = 0x1|(ch<<2);		//設(shè)置AD轉(zhuǎn)換通道
   		for(i=0;i<150;i++);		//最小15uS
	}
	
     rADCCON=0x1|(ch<<2);	        //開(kāi)始AD轉(zhuǎn)換
	while(rADCCON & 0x1);	        //避免標(biāo)志FLAG錯(cuò)誤
     while(!(rADCCON & 0x40));		//等待AD轉(zhuǎn)換結(jié)束
	for(i = 0; i < rADCPSR; i++);	//避免第二次標(biāo)志FLAG錯(cuò)誤
     prevCh=ch;
	return rADCDAT;		        //返回AD轉(zhuǎn)換值
}

void Adc_Int(void)
{
rI_ISPC=BIT_ADC;

}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国av一区二区三区四区| 久久99最新地址| 欧美精品一区二区三区在线播放 | 国产精品乱人伦一区二区| 欧美日韩一区精品| 成人在线一区二区三区| 青青草一区二区三区| 国产一区二区三区美女| 亚洲国产精品人人做人人爽| 国产亚洲人成网站| 欧美精品久久99久久在免费线| 成人免费看视频| 国内成人自拍视频| 日韩av一级片| 亚洲成人综合视频| **性色生活片久久毛片| 久久精品人人做| 日韩亚洲欧美高清| 在线视频中文字幕一区二区| www.一区二区| 国产电影一区在线| 国产精品一区二区在线看| 日韩精品久久理论片| 一区二区三区波多野结衣在线观看| 中文字幕av资源一区| 国产亚洲欧美中文| 精品久久久久久亚洲综合网| 欧美一区二区三区小说| 91麻豆精品91久久久久同性| 欧美日韩一区二区三区视频| 日本丶国产丶欧美色综合| 成人动漫一区二区| www.成人在线| 99久久久免费精品国产一区二区 | 久久爱www久久做| 青青草国产精品亚洲专区无| 日本亚洲一区二区| 日本亚洲天堂网| 久久精品国产在热久久| 久久精品99国产国产精| 久久97超碰国产精品超碰| 美女视频一区二区| 麻豆91在线观看| 精品无人区卡一卡二卡三乱码免费卡| 免费在线看成人av| 久久99国产精品免费| 国产一区在线视频| 成人黄页在线观看| av电影天堂一区二区在线| 97成人超碰视| 欧美亚洲一区三区| 欧美日韩精品三区| 日韩欧美一区中文| 久久欧美中文字幕| 中文字幕亚洲区| 一区二区三区产品免费精品久久75| 亚洲午夜久久久久久久久久久| 日本中文在线一区| 国产一区二区精品久久| 大陆成人av片| 欧美综合亚洲图片综合区| 91麻豆精品国产91久久久| 日日摸夜夜添夜夜添亚洲女人| 青青草97国产精品免费观看 | 中文字幕乱码久久午夜不卡| 亚洲欧洲av色图| 香蕉乱码成人久久天堂爱免费| 亚瑟在线精品视频| 久久er99热精品一区二区| 成人白浆超碰人人人人| 在线视频国内自拍亚洲视频| 日韩一区二区免费在线电影| 欧美韩日一区二区三区| 夜夜嗨av一区二区三区网页| 久久精品国产亚洲a| 成人性生交大片免费看在线播放| 在线看不卡av| 久久综合色8888| 中文字幕亚洲区| 奇米888四色在线精品| 成人激情黄色小说| 欧美一区二区视频在线观看2020| 欧美国产日韩亚洲一区| 亚洲va国产天堂va久久en| 国产精品影视天天线| 欧美视频在线一区二区三区| 久久九九久久九九| 午夜精品在线视频一区| 国产91在线观看| 91精品国产综合久久精品| 国产喷白浆一区二区三区| 调教+趴+乳夹+国产+精品| 成人app软件下载大全免费| 91精品黄色片免费大全| 综合亚洲深深色噜噜狠狠网站| 蜜桃久久久久久| 在线观看日韩av先锋影音电影院| 久久久不卡影院| 麻豆精品国产91久久久久久| 91九色最新地址| 国产日韩成人精品| 日韩精品乱码av一区二区| 色综合久久久久久久久久久| 久久久亚洲高清| 日韩精品三区四区| 在线观看视频一区二区| 国产精品久久久久天堂| 韩国在线一区二区| 91精品国产品国语在线不卡| 一区二区不卡在线播放 | 91麻豆精品国产自产在线| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲成人资源在线| 99re热视频精品| 中文字幕不卡在线播放| 宅男在线国产精品| 亚洲成人激情综合网| 91丨九色porny丨蝌蚪| 久久精品人人做人人爽人人| 精品亚洲成a人在线观看| 欧美一区二区美女| 午夜国产精品一区| 欧美视频精品在线| 一区二区成人在线| 色偷偷一区二区三区| 亚洲欧美电影院| 色综合亚洲欧洲| 亚洲色图制服诱惑| 色综合久久综合网97色综合 | 亚洲黄色免费网站| 99精品视频在线免费观看| 国产精品久久久久久久浪潮网站| 国产成人在线看| 欧美国产1区2区| 国产91对白在线观看九色| 国产欧美一区二区三区沐欲| 国产精品一级片在线观看| 亚洲精品一区二区精华| 国产美女一区二区三区| 国产亚洲一本大道中文在线| 国产精品一区二区久久不卡 | 8v天堂国产在线一区二区| 日日夜夜一区二区| 日韩美一区二区三区| 国产一区二区三区美女| 欧美韩国一区二区| 91久久国产最好的精华液| 亚洲成av人综合在线观看| 日韩一级高清毛片| 国产一区二区三区久久悠悠色av| 国产精品天美传媒| 日本久久电影网| 偷窥少妇高潮呻吟av久久免费| 欧美一区二区三区性视频| 国产麻豆成人精品| 自拍偷拍欧美激情| 欧美日韩中文另类| 久久超碰97中文字幕| 国产精品免费aⅴ片在线观看| 在线免费不卡视频| 美女被吸乳得到大胸91| 日本一区二区三区国色天香| 色吧成人激情小说| 美脚の诱脚舐め脚责91| 久久精品人人做人人综合| 色一情一乱一乱一91av| 日韩经典中文字幕一区| 久久久亚洲精品石原莉奈| 91在线国产福利| 美女视频黄 久久| 国产精品欧美精品| 欧美欧美欧美欧美首页| 国产99精品国产| 亚洲国产精品影院| 久久精品视频在线看| 91女人视频在线观看| 蜜臀久久99精品久久久画质超高清 | 国产精品美女久久久久久久| 国产精品第五页| 国产99精品在线观看| 亚洲国产毛片aaaaa无费看| 91精品国产一区二区三区| 国产成人精品一区二区三区网站观看| 一区二区三区免费在线观看| 日韩精品一区二区三区视频播放| 91麻豆精东视频| 九色|91porny| 亚洲精品中文字幕乱码三区| 精品国产免费视频| 欧美在线一二三| 国产成人鲁色资源国产91色综| 午夜久久久久久电影| 国产精品美女久久久久久久| 日韩一卡二卡三卡四卡| 色老头久久综合| 成人黄色在线看| 久久99国产乱子伦精品免费| 亚洲国产va精品久久久不卡综合| 国产午夜精品理论片a级大结局| 欧美高清www午色夜在线视频|