在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機—8255A詳細介紹(全?。?4

            51單片機—8255A詳細介紹(全?。?4

            作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏


















            9、就是應(yīng)用了唄



            最后來個程序就哦了,里面帶有注釋~~
            //------------------------------------------------------------------------------
            //實現(xiàn)由8255的PA、PB、PC作為輸出口的可控流水燈的設(shè)計,采用灌電流的方法
            //c語言部分
            #include"reg52.h"
            #include"delay.h"
            #include"macroandconst.h"
            #include"foot.h"
            //------------------------------------------------------------------------------
            uchar pdatain_reg; //定義片外存儲空間
            uchar temp,temp1; //用于寫數(shù)據(jù)的臨時數(shù)值
            bit flag=1; //定義標志位
            //------------------------------------------------------------------------------
            //定時器0初始化函數(shù)
            void timer0_init()
            {
            TMOD=0x02; //定時器0,8位自動裝初值
            TH0=(256-50)/256; //50us定時
            TL0=TH0;
            ET0=1;
            TR0=1;
            IT1=0; //外部中斷1控制為電平觸發(fā)方式
            EX1=1; //外部中斷1中斷允許位
            EA=1;
            }
            //------------------------------------------------------------------------------
            //main
            void main()
            {
            uchar i;
            timer0_init();
            reset=0;
            reset=1; //復(fù)位
            reset=0;
            a0=1;
            a1=1;//選擇8255控制寄存器
            in_reg=0x82;//寫入控制寄存器,PA、PC作為輸出口,PB口作為輸入口,并寫入控制寄存器
            //這里可能不是很明白吧,呵呵,其實很簡單,這個是51系列單片機的特有功能,反正我用AVR單片機沒用到過
            //,呵呵,相信都知道51系列單片機的PA口是個A/D口,那就對了,這里還省去了控制WR和RD了,而且還省去了
            //用上拉電阻,要是別的I/O口就得按照WR和RD的協(xié)議辦~~~ (從根本來說就是單片機自己控制WR和RD,其實
            //這個東西用的最多的就是擴展了~~~呵呵,不說了,因為我當時擴展也給失敗了~~哭
            while(1)
            {
            a0=0;
            a1=0;//選中PA口的寄存器
            if(flag==0)//標志位為0,流水燈從上向下循環(huán)
            {
            temp=0xfe;
            i=0;
            while(i<8)//循環(huán)移動8位
            {
            in_reg=temp;
            temp=~temp;
            temp=temp<<1;
            temp=~temp;
            delay(100);
            i++;
            //if(flag!=0) //可以加或者不加,加上后就是從當前亮的地方轉(zhuǎn)向開頭或者結(jié)尾
            //break;
            }
            }
            else //標志位為1,流水燈從上向下循環(huán)
            {
            temp=0x7f;
            i=0;
            while(i<8) //循環(huán)移動8位
            {
            in_reg=temp;
            temp=~temp;
            temp=temp>>1;
            temp=~temp;
            delay(100);
            i++;
            //if(flag!=1) //同理就哦了
            //break;
            }
            }
            }
            }
            //------------------------------------------------------------------------------
            //定時器0中斷函數(shù),由于用的Proteus仿真,我看著它進入中斷有時間長的,有時間短的,所以所以這個
            void timer0()interrupt 1
            {
            EA=0; //關(guān)閉總中斷
            a0=1;
            a1=0;//選中PB口寄存器
            temp1=in_reg;//讀取PB口的數(shù)據(jù)
            if(((~temp1)&0x01)==1)//按鍵檢測(由于這里的8255當設(shè)置為輸入的時候都是輸入高電平~~,所以還是取個反
            {
            //delay(5);//這里就是按鍵檢測的一個延時防抖動的,但是我加上跟不加,差別真的好大啊~~暈了~~
            if(((~temp1)&0x01)==1)
            {
            flag=~flag; //取反標志位,讓它的循環(huán)方向改變,下面就不加按鍵松手檢測了~~因為加不上~~呵呵
            }
            }
            a0=0;
            a1=0;
            EA=1;
            }
            //------------------------------------------------------------------------------
            //外部中斷1,這個是我另加上去的,真的要累死了,我用的外部中斷1,它和上面的按鍵檢測是一樣的,看來我是對的,Proteus仿真的時候,定時器還是有問題的,有時候根本不執(zhí)行中斷!?。?br />void int1() interrupt 2
            {
            flag=~flag;
            }


            上一頁 1 2 下一頁

            關(guān)鍵詞: 51單片機8255

            評論


            相關(guān)推薦

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

            關(guān)閉