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

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

?? i2ctime.c

?? 《dsPIC通用數(shù)字信號控制器原理及應(yīng)用》源碼
?? C
字號:
#include "p30f6014.h"
#include "I2CTime.h"

void InitializeSys()
{
    SRbits.IPL = 6; // CPU中斷優(yōu)先級設(shè)為6
}

void InitializeKeyboard()
{
    TRISD = (TRISD | 0xff00); //將RD8-RD15配置為輸入,D0~D7		
    TRISD = (TRISD & 0xfff8); //RD0-RD2配置為輸出,作138譯碼
    PORTD = (PORTD & 0xfff8); //選中KEYA,針對S1~S8的按鍵
}

void ConfigI2CTime()
{
    I2CCONbits.I2CEN = 1; //啟動I2C模塊
    I2CBRG = 0x064;       //I2C波特率
}

void InitializeSPIOut()
{
    TRISF = TRISF&0xfebf; //RF6、RF8輸出
    TRISG = TRISG&0xfdff; //RG9輸出
    SPI1CON = 0x0379; // 字節(jié)通訊模式,CKP=1,CKE=1,FOSC/32,時鐘上升沿發(fā)送數(shù)據(jù)
    SPI1STATbits.SPIEN = 1; //SPI1EN=1
    IFS0bits.SPI1IF = 0; // 清除SPI1IF標(biāo)志 
}

void InitializeTMR1()
{
    TMR1 = 0; //定時器1計數(shù)寄存器TMR1=0
    T1CON = 0x0020;	//關(guān)閉定時器,使用內(nèi)部時鐘,預(yù)分頻比為1:64
    PR1 = 0x3D09; //定時器Timer1周期寄存器PR1=0xf424,0.5s初值
    IFS0bits.T1IF = 0; //清除TMR1的中斷標(biāo)志
    IPC0bits.T1IP = 7; //中斷優(yōu)先級為7
    IEC0bits.T1IE = 1; //使能中斷
}

void DealWithKeys()
{
    int i;
    if((PORTD&0xff00) == 0xfe00) //查詢是否S1鍵按下
    {
		for(i=0; i<100; i++); //延時消抖
     	if((PORTD&0xff00) == 0xfe00)
        {
            SetMode += 1; //改變當(dāng)前模式
            if(SetMode == 4)
                SetMode = 0;
        }
        while((PORTD&0xff00) == 0xfe00); //不對一次長按按鍵進(jìn)行多次計數(shù)		
	}
    if((PORTD&0xff00) == 0xfd00) //查詢是否S2鍵按下
    {
        for(i=0; i<100; i++); //延時消抖
        if((SetMode == 1)||(SetMode == 2)) //如果模式?jīng)]有改變,S2鍵按下無效
        {
            if((PORTD&0xfd00) == 0xfd00) 
            {
                SelfIncrFlag += 1;
            }
            while((PORTD&0xff00) == 0xfd00); //不對一次長按按鍵進(jìn)行多次計數(shù)
        }
    }
}

void ModifyMode()
{
    if(SetMode == 1)                   //修改小時數(shù)模式
    {
        T1CONbits.TON = 1;
        ModifyHour();
    }
    if(SetMode == 2)                   //修改分鐘數(shù)模式
    {
        T1CONbits.TON = 1;
        ModifyMinute();
    }
    if((SetMode == 0)||(SetMode == 3)) //其他模式
        T1CONbits.TON = 0;
}

void ModifyHour()
{
    if(SelfIncrFlag == 1)              //小時修改范圍0~23h
    {
        Time[1] += 1;
        if(Time[1] == 10)
        {
            Time[0] += 1;
            Time[1] = 0;
        }
        if((Time[0] == 2)&&(Time[1] == 4))            
            Time[0] = Time[1] = 0;    
        SelfIncrFlag = 0;
    }
}

void ModifyMinute()
{
    if(SelfIncrFlag == 1) //分鐘修改范圍0~59m
    {
        Time[4] += 1;
        if(Time[4] == 10)
        {
            Time[3] += 1;
            Time[4] = 0;
            if((Time[3] == 6)&&(Time[4] == 0))
                Time[3] = Time[4] = 0;
        }
        SelfIncrFlag = 0;
    }
}

void WriteData()
{ 
    int i;
    I2CCONbits.SEN = 1;           //發(fā)送啟動位
    while(I2CCONbits.SEN==1){}    //等待啟動操作完成
    I2CTRN = ControlByteW;           //發(fā)送控制字:寫準(zhǔn)備
    while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
    I2CTRN = AddressH;  
    while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
	I2CTRN = AddressL;   
    while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
    for (i=0;i<16;i++)
	{
		I2CTRN = DataReceived[i];
        while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
    }
    I2CCONbits.PEN = 1;          //發(fā)送停止位
    while(I2CCONbits.PEN==1){}   //等待停止操作完成    
}

void ReadData()
{      
    int i;
    I2CCONbits.SEN = 1;            //發(fā)送啟動位                  
    while(I2CCONbits.SEN == 1){}   //等待啟動操作完成  
    I2CTRN = ControlByteW;           //發(fā)送控制字:寫準(zhǔn)備
    while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
    I2CTRN = AddressH;  
    while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
	I2CTRN = AddressL;   
    while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
    I2CCONbits.RSEN = 1;             //發(fā)送重啟動位
    while(I2CCONbits.RSEN==1){}      //等待重啟動操作完成
    I2CTRN = ControlByteR;           //發(fā)送控制字:讀準(zhǔn)備
    while(I2CSTATbits.TRSTAT==1){}   //等待發(fā)送完成
    for (i=0;i<16;i++)
	{ 
        I2CCONbits.RCEN = 1;         //接收數(shù)據(jù)使能   
        while(I2CSTATbits.RBF==0){}
        DataReceived[i] = I2CRCV;
        I2CCONbits.ACKDT = 0;
        if (i==15)
        	I2CCONbits.ACKDT = 1;	 //最后一字節(jié)則不發(fā)ACK 
        I2CCONbits.ACKEN = 1;   
        while(I2CCONbits.ACKEN==1){}
    }   
    I2CCONbits.PEN = 1;          //發(fā)送停止位
    while(I2CCONbits.PEN==1){}   //等待停止操作完成  
}

void FormatDataReceived()
{
    Time[0] = (DataReceived[3]>>4)&0x03;
    Time[1] = DataReceived[3]&0x0f; 
    Time[2] = 10;
    Time[3] = (DataReceived[2]>>4)&0x07;
    Time[4] = DataReceived[2]&0x0f;
    Time[5] = 10;
    Time[6] = (DataReceived[1]>>4)&0x07;
    Time[7] = DataReceived[1]&0x0f;
}

void FormatTime()
{
    //DataReceived[1] = (Time[6]<<4)|Time[7];
    DataReceived[2] = (Time[3]<<4)|Time[4];
    DataReceived[3] = ((Time[0]<<4)|Time[1])&0x7f;
}

void DisplayOnLED(unsigned int* TimeTemp)
{
    int i;
    PORTGbits.RG9 = 0; //為鎖存作準(zhǔn)備
    for(i=0; i<2; i++) // 顯示小時
    {
        SPI1BUF = Table1[TimeTemp[i]];
        while(SPI1STATbits.SPITBF == 1);
    }
    SPI1BUF = 0xbf; //顯示“-”
    while(SPI1STATbits.SPITBF == 1);
    for(i=3; i<5; i++) //顯示分鐘
    {
        SPI1BUF = Table1[TimeTemp[i]];
        while(SPI1STATbits.SPITBF == 1);
    }
    SPI1BUF = 0xbf; //顯示"-"
    while(SPI1STATbits.SPITBF == 1); 
    for(i=6; i<8; i++) //顯示秒
    {
        SPI1BUF = Table1[TimeTemp[i]];
        while(SPI1STATbits.SPITBF == 1);
    }
    SPI1BUF = 0xff;
    while(SPI1STATbits.SPITBF == 1); 
    PORTGbits.RG9 = 1; //給鎖存信號
}

void __attribute__((__interrupt__))_T1Interrupt(void)
{    
    unsigned char i;
    for(i=0; i<8; i++)
    TimeFlicker[i] = Time[i];

    TMR1INTFlag = ~TMR1INTFlag; // 區(qū)別相鄰的兩次中斷,為了在修改時鐘時產(chǎn)生閃爍效果
    TMR1 = 0;							
	IFS0bits.T1IF = 0; // 清定時器中斷標(biāo)志 
    if(SetMode == 1) // 修改當(dāng)前小時數(shù)
    {
        TimeFlicker[0] = 10;
        TimeFlicker[1] = 10;
    }
    if(SetMode == 2) // 修改當(dāng)前分鐘數(shù)
    {
        TimeFlicker[3] = 10;
        TimeFlicker[4] = 10;
    }
}

int main()
{
    int i;
    InitializeSys();
    ConfigI2CTime();
    InitializeKeyboard();
    InitializeSPIOut();
    InitializeTMR1();
    while(1)
    {
        if(SetMode == 0) // 時鐘顯示模式
        {
            ReadData();
            FormatDataReceived();
        }
        DealWithKeys();
        ModifyMode();
        if(SetMode == 3) // 修改當(dāng)前時鐘
        {
            FormatTime();
            WriteData();  
        }      
        if(TMR1INTFlag == 0) // 更改時間時產(chǎn)生閃爍效果
            DisplayOnLED(&Time[0]);
        else
            DisplayOnLED(&TimeFlicker[0]);
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品三级在线观看| 99视频精品在线| 国产精品久久毛片av大全日韩| 91原创在线视频| 精品午夜久久福利影院| 伊人婷婷欧美激情| 国产欧美日韩另类一区| 欧美一区二区三区四区五区| 99国产欧美另类久久久精品| 国产综合色产在线精品| 午夜精品福利一区二区蜜股av| 国产精品久久久久久妇女6080| 精品三级av在线| 欧美日韩高清影院| bt7086福利一区国产| 国产在线播放一区二区三区| 午夜视黄欧洲亚洲| 一级特黄大欧美久久久| 亚洲欧洲色图综合| 国产清纯白嫩初高生在线观看91| 日韩视频永久免费| 精品污污网站免费看| 一本在线高清不卡dvd| 国产69精品久久久久毛片| 精品一区二区日韩| 奇米色777欧美一区二区| 中文字幕亚洲成人| 欧美精品一卡两卡| 欧美性三三影院| 在线免费观看不卡av| 99久久精品情趣| 欧美变态tickle挠乳网站| 欧美日韩免费一区二区三区视频 | 国产日韩欧美综合在线| 日韩三级免费观看| 日韩午夜三级在线| 日韩欧美第一区| 91精品国产一区二区| 欧美日韩免费高清一区色橹橹 | 成人小视频免费在线观看| 狠狠色2019综合网| 国产一区免费电影| 成人午夜在线视频| 91麻豆精品一区二区三区| 91麻豆成人久久精品二区三区| 91在线小视频| 欧美最新大片在线看| 欧美日韩综合不卡| 日韩一级大片在线观看| 日韩免费观看高清完整版在线观看| 欧美一区二区精品| 久久蜜臀精品av| 国产精品久久免费看| 亚洲欧美一区二区三区国产精品 | 久久久九九九九| 欧美激情在线观看视频免费| 国产精品久久久久久久久久免费看| 国产精品高潮呻吟久久| 亚洲一区二区三区中文字幕 | www.成人网.com| 在线观看三级视频欧美| 666欧美在线视频| 久久综合九色综合欧美就去吻 | 一色桃子久久精品亚洲| 亚洲精品少妇30p| 日产国产高清一区二区三区| 国产乱码精品一区二区三区五月婷| 国产成人免费视| 色婷婷综合久久| 日韩一区二区三区观看| 国产女同互慰高潮91漫画| 亚洲啪啪综合av一区二区三区| 亚洲成人av电影| 国产麻豆成人精品| 欧洲人成人精品| 精品久久国产老人久久综合| 国产精品久久毛片a| 丝袜亚洲另类欧美| 国产成人综合亚洲网站| 日本韩国一区二区| 亚洲精品在线三区| 亚洲自拍都市欧美小说| 狠狠狠色丁香婷婷综合久久五月| 99视频超级精品| 欧美一区二区福利视频| 一区二区中文字幕在线| 免费成人结看片| 91亚洲大成网污www| 精品美女一区二区| 亚洲一区二区三区四区在线观看| 国产精品夜夜嗨| 在线不卡免费欧美| 成人欧美一区二区三区| 看片的网站亚洲| 欧美影片第一页| 国产日韩欧美精品在线| 日韩精品亚洲一区| 99久久婷婷国产综合精品电影| 91精品视频网| 亚洲精品欧美综合四区| 国产丶欧美丶日本不卡视频| 777午夜精品视频在线播放| ...xxx性欧美| 国产成人免费视频网站| 日韩欧美一二三| 五月婷婷色综合| 日本韩国一区二区| 中文字幕一区二区视频| 国产一区二区看久久| 日韩午夜激情电影| 五月天国产精品| 欧美这里有精品| 一区二区三区在线看| fc2成人免费人成在线观看播放| 久久综合久色欧美综合狠狠| 日韩国产精品大片| 欧美日韩中字一区| 一区二区不卡在线播放 | av爱爱亚洲一区| 久久精品亚洲一区二区三区浴池 | 久久国产精品色| 欧美一级二级三级蜜桃| 香蕉加勒比综合久久| 色婷婷综合久久久| 亚洲欧美一区二区三区国产精品 | 性欧美疯狂xxxxbbbb| 91色婷婷久久久久合中文| 国产精品私房写真福利视频| 国产伦精品一区二区三区在线观看| 欧美一级欧美三级在线观看 | 成人91在线观看| 国产精品视频观看| 成人av在线播放网址| 国产欧美日本一区二区三区| 国产成人亚洲综合a∨婷婷 | 欧美日韩在线三级| 亚洲v中文字幕| 91麻豆精品国产91久久久使用方法 | 欧美日韩不卡一区| 亚洲国产精品影院| 在线播放欧美女士性生活| 午夜视频在线观看一区| 欧美日韩免费视频| 蜜臀久久99精品久久久画质超高清 | 国产欧美精品国产国产专区 | 亚洲国产成人va在线观看天堂| 欧美日韩一区二区三区在线| 午夜一区二区三区在线观看| 555www色欧美视频| 美女国产一区二区三区| 精品久久久久久久久久久院品网 | av在线不卡免费看| 自拍偷拍亚洲欧美日韩| 欧美综合一区二区| 日本不卡不码高清免费观看| 精品国产不卡一区二区三区| 丁香网亚洲国际| 亚洲精品第一国产综合野| 在线观看精品一区| 免费精品99久久国产综合精品| 精品国产3级a| 97久久精品人人澡人人爽| 亚洲国产一区二区三区| 欧美电视剧在线看免费| 成人av综合在线| 视频一区欧美精品| 国产欧美日韩麻豆91| 欧美无人高清视频在线观看| 久久精品国产精品青草| 中文字幕一区三区| 91精品国产手机| 成人av资源在线观看| 天堂久久久久va久久久久| 国产日产精品一区| 欧美在线视频全部完| 国产精品主播直播| 亚洲一区二区三区美女| 久久久精品欧美丰满| 欧美性一二三区| 国产精品1区2区3区| 亚洲一区二区三区四区的| 久久久一区二区三区捆绑**| 91成人在线观看喷潮| 激情文学综合插| 亚洲成人动漫一区| 国产欧美日韩在线| 欧美精品久久99| 99精品视频在线免费观看| 美女网站色91| 亚洲乱码中文字幕| 久久婷婷国产综合精品青草| 在线看日本不卡| 国产.欧美.日韩| 美女一区二区三区在线观看| 樱花影视一区二区| 中文字幕免费不卡在线| 欧美一区二区网站| 色老综合老女人久久久| 国产成a人亚洲精| 久久精品999|