在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > 單片機(jī)控制18路舵機(jī)的C程序

            單片機(jī)控制18路舵機(jī)的C程序

            作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
            關(guān)于本程序:

            問(wèn):定時(shí)器1控制著9路pwm 以前聽(tīng)高手幫我講解 一般8路之內(nèi)是合適的 因?yàn)楹孟袷前讯鏅C(jī)的一個(gè)周期分成8分來(lái)分別控制 超出8路的話 好像周期就有可能改變

            本文引用地址:http://www.biyoush.com/article/201612/324215.htm

            答:是的,每路PWM有大約2.5ms是要獨(dú)立侵占timer時(shí)間的,8*2.5剛好20ms,每路舵機(jī)范圍我只用到0.7~2.0左右,所以9路之間沒(méi)有干擾。但是個(gè)timer之間有干擾。

            問(wèn):看到個(gè)小bug pwm0到pwm8再到pwm0可能不是20ms的一個(gè)周期

            答:嘿嘿,我把每路的低電平時(shí)間合在一起了,然后看它的匯編代碼,修正中斷中語(yǔ)句用去的時(shí)間,上位機(jī)算好,用keil的仿真出來(lái)是很準(zhǔn)的。 在兩個(gè)timer沒(méi)有同時(shí)中斷的情況下精度為0.5us,一旦同時(shí)中斷,有一路PWM的誤差將達(dá)到7、8us。

            恩 這個(gè)中斷程序沒(méi)有結(jié)束另外的中斷有發(fā)生 就會(huì)造成后面的中斷打失 所以得用性能好的單片機(jī)哈哈

            注意本程序在編譯的時(shí)候要選擇pdata模式不然會(huì)失敗這是工程文件下載已經(jīng)設(shè)置好了模式的:http://www.51hei.com/f/duoji_c.rar

            程序源碼:

            /**************************************************************************
            文 件 名:pwm_18out.c
            功能描述:利用STC89C52RC做下位機(jī),控制18路舵機(jī)PWM
            雙倍速,機(jī)器周期0.5us
            日 期:2012-3-19
            作 者:cazy peach-ATP
            備 注: 18路舵機(jī)控制下位機(jī)
            **************************************************************************/
            #define uint unsigned int
            #define uchar unsigned char
            #include
            sbit pwm9=P1^0;
            sbit pwm10=P1^1;
            sbit pwm11=P1^2;
            sbit pwm12=P1^3;
            sbit pwm13=P1^4;
            sbit pwm14=P1^5;
            sbit pwm15=P1^6;
            sbit pwm16=P1^7;
            sbit pwm17=P0^7;
            sbit pwm0=P2^7;
            sbit pwm1=P2^6;
            sbit pwm2=P2^5;
            sbit pwm3=P2^4;
            sbit pwm4=P2^3;
            sbit pwm5=P2^2;
            sbit pwm6=P2^1;
            sbit pwm7=P2^0;
            sbit pwm8=P0^6;
            //***************************參數(shù)申明******************************
            //指令格式:兩byte為一路PWM,前一個(gè)為PWM高電平定時(shí)器TH值、后一個(gè)為TL的值,由上位機(jī)計(jì)算所得,共20組。最后兩組分別為每9路PWM低電平和。
            uintdatapwm_val[40]={
            0XF4, 0XF0, 0XF7, 0X9B, 0XF6, 0XAE,
            0XF4, 0XF9, 0XF8, 0X01, 0XF6, 0X8F,
            0XF5, 0X02, 0XF7, 0X2B, 0XF6, 0X9D,
            0XF4, 0XF0, 0XF3, 0X1D, 0XF3, 0X16,
            0XF4, 0XF9, 0XF2, 0X8B, 0XF3, 0XB0,
            0XF5, 0X02, 0XF2, 0XE9, 0XF3, 0X9B,
            0XBB, 0X55, 0XD3, 0X04};
            uchar zhilin[61];
            uchar *point;
            uchar data pwm_select=0;
            uchar data pwm_scan=0; //timer1使用
            uchar data pwm_scan1=0; //timer2使用
            uchardataSCI_get=0;
            //**************************函數(shù)聲明****************************
            void SCI_INT(void) ;
            void timer_INT(void) ;
            //***************************主函數(shù)*****************************
            void main()
            {
            uchar j;
            P0=0X00;
            P1=0x00;
            P2=0X00;
            point=zhilin;
            SCI_INT();
            timer_INT();
            for(j=0;j<61;j++){zhilin[j]=0;}
            while(1)
            {
            for(;;) //指令接收
            {
            if(RI){RI=0;SCI_get=SBUF;*point++=SCI_get;j++;}else{continue;}
            if(SCI_get==0xff){point=zhilin;break;} //0xff指令結(jié)束符
            }

            for(j=0;j<21;j++) //指令處理
            {
            if(zhilin[j*3]==255){break;} //判斷是否為指令結(jié)束符
            pwm_select=zhilin[j*3];
            pwm_val[pwm_select]=zhilin[j*3+1];
            pwm_val[pwm_select+1]=zhilin[j*3+2];
            }
            }
            }


            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


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

            關(guān)閉