在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C8051F330 16*16點(diǎn)陣(SPI 、SMBus、I2C)PCF8563

            C8051F330 16*16點(diǎn)陣(SPI 、SMBus、I2C)PCF8563

            作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏

            void SPI_INT(void) //SPI初始化
            {
            SPI0CFG=0x40;
            SPI0CN=0x01; //0000 0001最后一位是SPI使能位 SPI工作在三線主方式
            SPI0CKR=0x0f; //SPI 時(shí)鐘頻率設(shè)置為100kHz 0x63

            IE &= 0xbf; //關(guān)閉SPI中斷
            }

            void SMB_INT(void) //SMB初始化
            {
            SMB0CF=0x5f; //使能SMB 允許時(shí)間擴(kuò)充 定時(shí)器2低字節(jié)溢出時(shí)鐘源

            SMB0CF|=0x80;
            }


            void TIME01_INT(void) //定時(shí)器初始化
            {
            TCON=0x10; //定時(shí)器0允許
            TMOD=0x01; //定時(shí)器0在16位工作方式
            CKCON &= 0xf8;
            CKCON |= 0x01; //定時(shí)器0使用系統(tǒng)4分頻

            TL0=0x03;
            TH0=0x03;

            IE|=0x02;
            }


            void TIME2_INT(void) //定時(shí)器2用于配置SMB的時(shí)鐘頻率
            {
            TMR2CN=0x00;
            CKCON |= 0x00;

            TMR2RLL = 0xef;
            TMR2RLH = 0xff;
            TMR2L = 0xef;
            TMR2H = 0xff;

            TMR2CN |= 0x0c;
            }

            void TIME3_INT(void)//用于I2C的超時(shí)檢測(cè)
            {
            TMR3CN = 0x00; //定時(shí)器3為16位自動(dòng)重載
            CKCON &= ~0x40;

            TMR3RLL = 0xaf;
            TMR3RLH = 0x57;
            TMR3L = 0xaf;
            TMR3H = 0x57;

            EIE1|=0x00;
            TMR3CN |= 0x04;
            }

            void pio_int(void) // 端口配置
            {
            XBR0=0x06;
            XBR1=0x40;

            P0MDIN=0xff; //禁止模擬輸入,0為模擬,1為數(shù)字
            P0MDOUT=0x0d; //0為開漏,1為推挽(ff)
            P0SKIP=0x08;

            P1MDIN=0xff;
            P1MDOUT=0xff; //低四位用于138
            P1SKIP=0x00;

            P0=0xff;
            P1=0xff;

            }


            /*************呈現(xiàn)各種顯示效果的函數(shù)集****************/
            //void Jump_Word(uchar a) 立即跳顯示一個(gè)字或一張圖案
            //void M_Word(uchar a)卷簾出顯示一個(gè)字或一張圖案
            //void M_Words(number) 顯示幾個(gè)交換的字
            //void UP_Run(number) 向上滾屏n個(gè)字
            //void L_Removeout(number) 右入左出n個(gè)字
            //void M_Black(void) 黑屏
            //void R_Removeout(number) 左入右出n個(gè)字
            /*****************************************************/

            /****************立即跳顯示一個(gè)字或一張圖案***************/
            void Jump_Word(uchar a)
            {register uchar i,q;
            for(i=0;i<32;i++)
            {
            for(q=0;q {dispram[i+q*32]=Bmp[a][i];}
            //if(i%2)delay(SPEED);
            }
            }
            /****************卷簾出顯示一個(gè)字或一張圖案***************/
            void M_Word(uchar a)
            {register uchar i,q;
            for(i=0;i<32;i++)
            {
            for(q=0;q {dispram[i+q*32]=Bmp1[a][i];}
            if(i%2)delay(SPEED);
            }
            }

            /****************卷簾出顯示number個(gè)字***************/
            void M_Words(number)
            {register uchar i,q,w;
            for(w=0;w{
            for(i=0;i<32;i++)
            {
            for(q=0;q if(i%2)delay(SPEED);
            }
            delay(TIME);
            }
            }

            /****************向上滾屏number個(gè)字***************/
            void UP_Run(number)
            {register uchar i,j,k,q;
            for(i=0;i{
            for(j=0;j<16;j++)
            {
            for(k=0;k<15;k++)
            {
            for(q=0;q {
            dispram[k*2+q*32]=dispram[(k+1)*2+q*32];
            dispram[k*2+1+q*32]=dispram[(k+1)*2+1+q*32];
            }
            }
            for(q=0;q {
            dispram[30+q*32]=Bmp[q+i*BLKN/2][j*2];
            dispram[31+q*32]=Bmp[q+i*BLKN/2][j*2+1];
            }
            delay(2*SPEED);
            }
            delay(2*TIME);
            }
            }

            /****************左移出顯示number個(gè)字*******************/
            void L_Removeout(number)
            {register uchar i,j,k,l,q;
            for(i=0;i{
            for(j=0;j<2;j++)
            for(k=0;k<8;k++)
            {
            for(l=0;l<16;l++)
            {
            for(q=0;q {
            dispram[l*2+q*32]=dispram[l*2+q*32]<<1|dispram[l*2+1+q*32]>>7;
            if(q==BLKN/2-1)
            dispram[l*2+1+q*32]=dispram[l*2+1+q*32]<<1|Bmp[i][l*2+j]>>(7-k);
            else
            dispram[l*2+1+q*32]=dispram[l*2+1+q*32]<<1|dispram[l*2+(q+1)*32]>>7;
            }
            }
            delay(2*SPEED);
            }
            }
            }

            /****************卷簾出黑屏***************/
            void M_Black(void)
            {register uchar i,q;
            for(i=0;i<32;i++)
            {
            for(q=0;q {dispram[i+q*32]=0x00;}
            if(i%2)delay(SPEED);
            }
            }
            /****************右移出顯示number個(gè)字*******************/
            void R_Removeout(number)
            {register uchar i,j,k,l,q;
            for(i=0;i{
            for(j=2;j>0;j--)
            for(k=0;k<8;k++)
            {
            for(l=0;l<16;l++)
            {
            for(q=0;q {
            dispram[l*2+1+q*32]=dispram[l*2+1+q*32]>>1|dispram[l*2+q*32]<<7;
            if(q==0)
            dispram[l*2+q*32]=dispram[l*2+q*32]>>1|Bmp[i][l*2+j-1]<<(7-k);
            else
            dispram[l*2+q*32]=dispram[l*2+q*32]>>1|dispram[l*2+1+(q-1)*32]<<7;
            }
            }
            delay(2*SPEED);
            }
            }
            }


            /*************用于時(shí)鐘芯片操作的函數(shù)集****************/
            //void write_pcf8563(void)寫時(shí)鐘芯片
            //void read_pcf8563(void)讀時(shí)鐘芯片
            /*****************************************************/
            void write_pcf8563(void)
            {
            SPI0CN &=~0x01; //暫時(shí)關(guān)掉SPI通訊

            send =0xa2; //送子器件地址
            while(BUSY);
            BUSY=1;
            SMB_RW=0;control=5;
            STA=1; //開始傳送

            while(BUSY);
            SPI0CN |=0x01; //重新開啟SPI
            }

            void read_pcf8563(void) //讀當(dāng)時(shí)的時(shí),分,鈔
            {

            SPI0CN &=~0x01;
            send =0xa2; //送子器件地址
            while(BUSY);
            BUSY=1;
            SMB_RW=0;
            STA=1;

            send=0x02;
            while(!SI);
            BUSY=1;

            send=0xa2;
            while(BUSY);
            BUSY=1;
            SMB_RW=1;
            STA=1;


            while(BUSY);
            BUSY=1;
            sec=receive1[2]&0x7f;//讀秒
            min=receive1[1]&0x7f;//讀分
            hou=receive1[0]&0x3f;//讀時(shí)

            SPI0CN |=0x01;
            }

            void spit_time(void)//分別計(jì)算時(shí)、分、秒的各位數(shù)字
            {
            sg=(int)hou/16;
            sd=(int)hou%16;

            fg=(int)min/16;
            fd=(int)min%16;

            mg=(int)sec/16;
            md=(int)sec%16;
            }

            void dat_int(void) //數(shù)據(jù)初始化
            {
            scyx=1;
            CLK=0;
            }

            void sysclk_int(void);
            void delay(unsigned n);
            void pio_int(void);
            void SPI_INT(void);
            void SMB_INT(void);
            void dat_int(void);
            void TIME01_INT(void);
            void TIME2_INT(void);
            void TIME3_INT(void);
            void write_pcf8563(void);
            void read_pcf8563(void);
            void spit_time(void);

            /**************主函數(shù)**************/
            void main(void) //主程序
            {
            register uchar i;
            PCA0MD &= ~0x40;// 關(guān)閉看門狗
            sysclk_int();
            OSCICN |= 0x02;

            /****************初始化檢測(cè)pcf8563****************/
            while(!pcf8563_sda)
            {
            XBR1 = 0x40;
            pcf8563_scl = 0;
            for(i = 0; i < 255; i++);
            pcf8563_scl = 1;
            while(!pcf8563_scl);

            for(i = 0; i < 10; i++);
            XBR1 = 0x00;
            }



            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉