<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

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

    發布時間:2014-12-16 11:30    發布者:designapp
    關鍵詞: 單片機

            1.某單片機系統的P2口接一數模轉換器DAC0832輸出模擬量,現在要求從DAC0832輸出連續的三角波,實現的方法是從P2口連續輸出按照三角波變化的數值,從0開始逐漸增大,到某一最大值后逐漸減小,直到0,然后再從0逐漸增大,一直這樣輸出。試編寫一函數,使從P2口輸出的值產生三角波,并且使三角波的周期和最大值通過入口參數能夠改變。
    #include #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;i0,i——)
    { DAC0832=i;for(j=0;j1,j——)
    { for(i=0;i*(ptr+i+1))
    { temp=*(ptr+i+1);*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;} *ptr1=*(ptr+20/2);}
    2.在數字濾波中有一種叫做“去極值平均濾波”技術,就是對采集的數據按照從大到小或者從小到大進行排序,然后去掉相同數目的極大值和極小值,對中間部分數據求算術平均值作為采樣值。試編寫一函數,對存放在片外數據存儲器中從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;i*(ptr+i+1))
    { temp=*(ptr+i+1);*(ptr+i+1)=*(ptr+i);*(ptr+i)=temp;} temp=0;for(i=0;i void main()
    { unsigned char data *dpt;unsigned char i=0,temp;dpt=0x40;while(1)
    { temp=_getchar();if(temp==0x0d)
    break;*(dpt+i)=temp;i++;}
    3.利用庫函數scanf編寫一函數,實現從單片機串行口接收數據的C51程序,把接收的數據存放在片外數據存儲器從0x240開始的區域,遇到回車符CR(ASCII碼是0x0d)結束。
    include void main()
    { unsigned char xdata *xdpt;unsigned char i=0,temp;xdpt=0x240;while(1)
    { scanf(“%c”,if(temp==0x0d)
    break;*(xdpt+i)=temp;i++;}




           
    4.利用庫函數putchar編寫一函數,實現從單片機串行口發送數據的C51程序,發送的數據存放在片內數據存儲器從0x50開始的區域,遇到回車符CR(ASCII碼是0x0d)結束。
    include void main()
    { unsigned char data *dpt;unsigned char i=0;dpt=0x50;while(*(dpt+i)!=0x0d)
    { putchar(*(dpt+i));i++;}
    5.利用庫函數printf編寫一函數,實現從單片機串行口發送數據的C51程序,發送的數據存放在片外數據存儲器從0x100開始的區域,遇到回車符CR(ASCII碼是0x0d)結束。
    include void main()
    { unsigned char xdata *xdpt;unsigned char i=0;xdpt=0x100;while(*(xdpt+i)!=0x0d)
    { printf(“%c”,*(xdpt+i));i++;}
    6.編寫一定時器/計數器0定時100ms中斷處理函數,使函數實現時鐘的功能,即產生時鐘的秒、分鐘和小時。設定時初值的高、低字節分別為TIMER_H和TIMER_L.設fosc=6mhz #include sfr TIMER_H=0x8b;sfr TIMER_L=0x8a;unsigned char data shi,fen,miao,bfm;
    void main()
    { TMOD=0x01;TIMER_H=15536/16;TIMER_L=15536%16;ET0=1;EA=1;TR0=1;while(1);}
    void time0_int() interrupt 1 { TIMER_H=15536/16;TIMER_L=15536%16;bfm++;if(bfm==10)
    { bfm=0;miao++;} if(miao==60)
    { miao=0;fen++;} if(fen==60)
    { fen=0;shi++;} if(shi==24)
    { shi=0;}


    本文地址:http://www.portaltwn.com/thread-135431-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關在線工具

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷