新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機C語言基礎編程源碼八則

        單片機C語言基礎編程源碼八則

        作者: 時間:2013-03-19 來源:網絡 收藏

        1.某系統的P2口接一數模轉換器DAC0832輸出模擬量,現在要求從DAC0832輸出連續的三角波,實現的方法是從P2口連續輸出按照三角波變化的數值,從0開始逐漸增大,到某一最大值后逐漸減小,直到0,然后再從0逐漸增大,一直這樣輸出。試編寫一函數,使從P2口輸出的值產生三角波,并且使三角波的周期和最大值通過入口參數能夠改變。

        #includeabsacc.h>
        #define DAC0832 XBYTE[0x7FFF]
        void san(unsigned char max1,unsigned char zhou1)
        {
        unsigned char i,j,max,zhou;
        max=max1;
        zhou=zhou1;
        while(1)
        {
        for(i=0;i=max,i++)
        {
        DAC0832=i;
        for(j=0;jzhou/max;j++)
        delay();
        }
        for(i=max-1;i>0,i--)
        {
        DAC0832=i;
        for(j=0;jzhou/max;j++)
        delay();
        }
        }

        2.在數字濾波中有一種叫做“中值濾波”技術,就是對采集的數據按照從大到小或者從小到大進行排序,然后取其中在中間位置的數作為采樣值。試編寫一函數,對存放在片內數據存儲器中從0x50開始的20個單元的采樣數據用冒泡法排序進行中值濾波,把得到的采樣數據存放到0x4f單元中。
        void midf()
        {
        unsigned char data temp,i,j,*ptr,*ptr1;
        ptr=0x50;
        ptr1=0x4f;
        for(j=20;j>1,j--)
        {
        for(i=0;ij;i++)
        {
        if(*(ptr+i)>*(ptr+i+1))
        {
        temp=*(ptr+i+1);
        *(ptr+i+1)=*(ptr+i);
        *(ptr+i)=temp;
        }
        }
        }
        *ptr1=*(ptr+20/2);
        }

        3.在數字濾波中有一種叫做“去極值平均濾波”技術,就是對采集的數據按照從大到小或者從小到大進行排序,然后去掉相同數目的極大值和極小值,對中間部分數據求算術平均值作為采樣值。試編寫一函數,對存放在片外數據存儲器中從0x150開始的16個單元的采樣數據,用選擇法進行“去極值平均濾波”,把得到的采樣數據存放到0x14f單元中。
        void teaf()
        {
        unsigned char xdata *ptr;
        unsigned char data temp,i,j,*ptr1;
        ptr=0x150;
        ptr1=0x4f;
        for(j=16;j>1,j--)
        {
        for(i=0;ij;i++)
        {
        if(*(ptr+i)>*(ptr+i+1))
        {
        temp=*(ptr+i+1);
        *(ptr+i+1)=*(ptr+i);
        *(ptr+i)=temp;
        }
        }
        }
        temp=0;
        for(i=0;i16-2;i++)
        temp=temp+*(ptr+i+1);
        *ptr1=temp/(16-2);
        }


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 柯坪县| 沐川县| 望江县| 湛江市| 武平县| 天长市| 岑巩县| 渝中区| 大姚县| 吉安市| 黑龙江省| 甘孜| 紫阳县| 马关县| 开原市| 南涧| 武平县| 湾仔区| 益阳市| 顺平县| 阳山县| 交口县| 咸丰县| 观塘区| 穆棱市| 罗定市| 金阳县| 称多县| 栾城县| 军事| 蛟河市| 介休市| 翁牛特旗| 长海县| 大连市| 孟村| 绵阳市| 海盐县| 宣武区| 娄底市| 周宁县|