在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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è)計(jì)應(yīng)用 > AT89C2051利用中斷產(chǎn)生PWM

            AT89C2051利用中斷產(chǎn)生PWM

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


            本文引用地址:http://www.biyoush.com/article/201611/321335.htm

            #include "REG2051.H"
            #include "intrins.h"
            #define uint unsigned int
            #define uchar unsigned char


            const TH_600=0xfd;
            const TL_600=0xd4;
            const TH_1200=0xfb;
            const TL_1200=0x7c;
            const TH_2400=0xf6;
            const TL_2400=0xa0;

            sbit PWM=P3^7;
            bit ld=0; //上一次發(fā)送的數(shù)據(jù)
            uchar _pool[10]; //數(shù)據(jù)頭
            uchar _length; //當(dāng)前數(shù)組長度
            uchar _index; //當(dāng)前索引
            uchar _bit_index; //位索引


            void onKeyDown(uchar,uchar);
            void push(uchar);
            void init();

            void main(){
            unsigned int r,c,prsd;
            init();
            while(1){
            P1=0x0f;
            if(P1!=0x0f){
            r=~P1-0xf0;
            P1=0xf0;
            c=~(P1>>4)-0xf0;
            if(!prsd){
            onKeyDown(r,c);
            prsd=1;
            }
            }else{
            prsd=0;
            }
            }
            }

            void init(){
            _length=0;

            PWM=0;//啟動(dòng)時(shí)低電平
            TMOD=0x01;
            TH0=0x9E;
            TL0=0x57;
            ET0=1;
            TF0=1;
            TR0=1; //打開計(jì)時(shí)器
            }

            void push(uchar xcode){
            _pool[_length]=xcode;
            _length++;
            }

            void reset(){
            _index=0;
            _length=0;
            _bit_index=0;
            }

            void onKeyDown(uchar row,uchar column){
            unsigned char xcode;
            reset();
            push(0xaa); //壓入地址碼
            xcode=row<<4+column;
            push(xcode); //壓入鍵盤數(shù)據(jù)
            EA=1;
            while(EA);
            }

            void timer_pwm() interrupt 1{
            uchar current,tmp;
            if(PWM){
            PWM=~PWM;
            TH0=TH_600;
            TL0=TL_600;
            }else{
            if(_index==_length){
            EA=0;
            }else{
            PWM=~PWM;
            _bit_index++;
            current=_pool[_index];
            tmp=current<<_bit_index;
            ld=CY;
            if(ld){
            TH0=TH_1200;
            TL0=TL_1200;
            }else{
            TH0=TH_600;
            TL0=TL_600;
            }
            }
            if(_bit_index==8){
            _bit_index=0;
            _index++;
            }
            }
            }


            上一頁 1 2 下一頁

            關(guān)鍵詞: AT89C2051中斷PW

            評(píng)論


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

            關(guān)閉