国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2024年11月08日(星期五)

正在發(fā)生

2019年11月08日 | PIC16F877的外圍功能模塊例程

發(fā)布者:數(shù)字夢行 來源: 51hei關(guān)鍵字:PIC16F877  外圍功能模塊  PORTD口 手機看文章 掃描二維碼
隨時隨地手機看文章

第5章 PIC16F877的外圍功能模塊


5.1.2 簡單應(yīng)用實例
該例用于令與PORTD口相連的8個發(fā)光二極管前4個點亮,后4個熄滅。在調(diào)試程序前,應(yīng)使與PORTD口相連的8位拔碼開關(guān)拔向相應(yīng)的位置。
例5.1 PORTD輸出

#include        

main()

{

        TRISD=0X00;                        /*TRISD寄存器被賦值,PORTD每一位都為輸出*/

while(1);                                /*循環(huán)執(zhí)行點亮發(fā)光二極管的語句*/

        {

                PORTD=0XF0;                /*向PORTD送數(shù)據(jù),點亮LED(由實驗?zāi)0?/

/*的設(shè)計決定相應(yīng)位置低時LED點亮)。*/

}

}


5.2.1  MSSP模塊SPI方式功能簡介

        下面是一段簡單的SPI初始化例程,用于利用SPI工作方式輸出數(shù)據(jù)的場合。

例5.2  SPI初始化程序

/*spi初始化子程序*/

void         SPIINIT()

{

        PIR1=0;                                        /*清除SPI中斷標(biāo)志*/                

        SSPCON=0x30;                        /* SSPEN=1;CKP=0 , FOSC/4 */

        SSPSTAT=0xC0;

        TRISC=0x00;                        /*SDO引腳為輸出,SCK引腳為輸出*/

}

5.2.3  程序清單

下面給出已經(jīng)在實驗板上調(diào)試通過的一個程序,可作為用戶編制其它程序的參考。

#include                

/*該程序用于在8個LED上依次顯示1~8等8個字符*/

static volatile int table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};

volatile         unsigned         char         data; 

#define         PORTAIT(adr,bit)  ((unsigned)(&adr)*8+(bit))        /*絕對尋址位操作指令*/

static        bit PORTA_5 @ PORTAIT(PORTA,5); 

/*spi初始化子程序*/

void                SPIINIT()

{

        PIR1=0;                

        SSPCON=0x30;                        /* SSPEN=1;CKP=0 , FOSC/4 */

        SSPSTAT=0xC0;

        TRISC=0x00;                        /*SDO引腳為輸出,SCK引腳為輸出*/

}

/*系統(tǒng)各輸入輸出口初始化子程序*/

void                initial()

{

TRISA=0x00;                        /*A口設(shè)置為輸出*/

        INTCON=0x00;                        /*關(guān)閉所有中斷*/

        PORTA_5=0;                                /*LACK送低電平,為鎖存做準(zhǔn)備*/

}

/*SPI發(fā)送子程序*/

void                 SPILED(int data)

{

        SSPBUF=data;                        /*啟動發(fā)送*/

        do

        {

;

        }while(SSPIF==0);                /*等待發(fā)送完畢*/

SSPIF=0;                                /*清除SSPIF標(biāo)志*/

}

/*主程序*/

main()

{

        unsigned        I;

        initial();                                        /*系統(tǒng)初始化*/

        SPIINIT()        ;                                /*SPI初始化*/        

         for(i=8;i>0;i--)                        /*連續(xù)發(fā)送8個數(shù)據(jù)*/

          {

                data=table[i];                        /*通過數(shù)組的轉(zhuǎn)換獲得待顯示的段碼*/        

                SPILED(data);                /*發(fā)送顯示段碼顯示*/                

          }

        PORTA_5=1;                                /*最后給鎖存信號,代表顯示任務(wù)完成*/

}

5.3.3  程序清單

        下面給出已經(jīng)在實驗板上調(diào)試通過的程序,可作為用戶編制其它程序的參考。有關(guān)顯示部分的SPI初始化,請讀者參考5.2節(jié)。

#include                

/*該程序用于按下相應(yīng)的鍵時,在第一個8段LED上顯示相應(yīng)的1~4的字符*/

#define         PORTAIT(adr,bit)  ((unsigned)(&adr)*8+(bit))        /*絕對尋址位操作指令*/

static         bit  PORTA_5  @  PORTAIT(PORTA,5);        

#define        PORTBIT(adr, bit)        ((unsigned)(&adr)*8+(bit))         /*絕對尋址位操作指令*/

static         bit  PORTB_5  @  PORTBIT(PORTB,5);

static         bit  PORTB_4  @  PORTBIT(PORTB,4);

static         bit  PORTB_1  @  PORTBIT(PORTB,1)        ;

static         bit  PORTB_2  @  PORTBIT(PORTB,2)        ;

unsigned         int        I;

unsigned         char        j;

int  data;

/*spi初始化子程序*/

void                 SPIINIT()

{

        PIR1=0;

        SSPCON=0x30;        

        SSPSTAT=0xC0;

        TRISC=0xD7;                        /*SDO引腳為輸出,SCK引腳為輸出*/

}

/*系統(tǒng)各輸入輸出口初始化子程序*/

void                 initial()

{

        TRISA=0xDF;

        TRISB=0XF0;                        /*設(shè)置與鍵盤有關(guān)的各口的數(shù)據(jù)方向*/

        INTCON=0x00;                        /*關(guān)閉所有中斷*/

        data=0X00;                                /*待顯示的寄存器賦初值*/

        PORTB=0X00;                        /*RB1 RB2 先送低電平*/

        j=0;

}

/*軟件延時子程序*/

void                DELAY()

{

        for(i = 6553; --i ;)

        continue;

}

/*鍵掃描子程序*/

int                KEYSCAN()

{        

while(1)

{

        if ((PORTB_5==0)||(PORTB_4==0))

        break;

}                                                        /*等待有鍵按下*/

        DELAY();                                /*軟件延時*/

        if ((PORTB_5==0)||(PORTB_4==0))

                KEYSERVE();                /*如果仍有鍵按下,則調(diào)用鍵服務(wù)子程序*/

        else        j=0x00;                                /*如果為干擾,則令返回值為0*/

        return(j);

}        

/*鍵服務(wù)子程序*/

int                KEYSERVE()

{

        PORTB=0XFD        ;

        if(PORTB_5==0)        j=0X01;

        if(PORTB_4==0)        j=0X03;

        PORTB=0XFB;

        if(PORTB_5==0)        j=0X02;

        if(PORTB_4==0)        j=0X04;/*以上根據(jù)按下的鍵確定相應(yīng)的鍵值*/

        PORTB=0X00;                        /*恢復(fù)PORTB的值*/

while(1)

{

                if((PORTB_5==1)&&(PORTB_4==1)) break;/*等待鍵盤松開*/

        }

        return(j);

}

/*SPI發(fā)送子程序*/

void                  SPILED(int data)

{

        SSPBUF=data;                        /*啟動發(fā)送*/

        do

        {

           ;

        }while(SSPIF==0);                /*等待發(fā)送完畢

        SSPIF=0;

}

/*主程序*/

main()

{

static  int table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};

        initial();/*系統(tǒng)初始化*/                

        SPIINIT()        ;/*SPI初始化*/                

while(1)

{

[1] [2] [3]
關(guān)鍵字:PIC16F877  外圍功能模塊  PORTD口 引用地址:PIC16F877的外圍功能模塊例程

上一篇:PIC單片機車載儀表帶CAN總線通訊源代碼
下一篇:學(xué)習(xí)pic單片機經(jīng)驗

推薦閱讀

你有沒有注意到機器人的發(fā)展前景幾乎總是伴隨著人工智能內(nèi)容的宣傳?這當(dāng)然是一種有效的策略。機器人讓人聯(lián)想到高度智能化的解決方案,這些解決方案都在指向創(chuàng)造一個更高效的,更有利可圖的業(yè)務(wù)未來。然而,很少有關(guān)于這些AI技術(shù)如何工作的細節(jié)對外披露。因此,許多人工智能解決方案,對于用戶來說,就成了一個“黑匣子”一樣的存在。“黑匣子”里面到底是...
2019年,由于全球經(jīng)濟局勢持續(xù)不穩(wěn)定,機器人市場的發(fā)展受到了一定的制約和影響。對不少企業(yè)來說,可謂是進入了一場“寒冬”。但另一方面,依然有不少優(yōu)秀頭部企業(yè)在堅持前行,為行業(yè)的前景帶來了曙光。比如依然堅挺的國外機器人“四大家族”。接下來將對“四大家族”在2019年前10個月里發(fā)生的大事件進行回顧。庫卡機器人(KUKA)今年初,庫卡機器人凈利潤...
本文編譯自substainable-bus碳化硅技術(shù)(SiC)正在進入電動客車市場。電子動力傳動系統(tǒng)效率的提高是采用這種技術(shù)帶來的主要優(yōu)勢。最近,宇通和Solaris已經(jīng)宣布他們選擇使用碳化硅技術(shù)的逆變器。我們與Cree | Wolfspeed電力產(chǎn)品營銷與應(yīng)用高級主管Guy Moxey討論了碳化硅技術(shù)在電動客車領(lǐng)域的應(yīng)用。Guy Moxey碳化硅技術(shù)應(yīng)用于電動公共汽車(和一般的公共...
對中國央行數(shù)字貨幣的創(chuàng)新見解圍繞中國央行數(shù)字貨幣(數(shù)字人民幣)的討論已經(jīng)持續(xù)了多年,而全球金融機構(gòu)一直在關(guān)心這一創(chuàng)新是否會對它們的業(yè)務(wù)產(chǎn)生不容忽視的潛在影響。當(dāng)美國和歐洲仍處于規(guī)劃階段時,中國已于2019年開始在四個城市(深圳、蘇州、雄安和成都)試點其法定數(shù)字貨幣。2020年10月,又有六個城市被納入該試點。中國國內(nèi)的一些零售場景中已經(jīng)開...

史海拾趣

小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved