您的位置:網站首頁 > 電器維修資料網 > 正文 >
六則單片機C語言基礎編程源碼
來源: 日期:2013-11-2 20:34:44 人氣:標簽:
{ 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;}
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: LC并聯諧振電路的頻率響應
- 下一篇: Verilog HDL語言基礎知識