導航:首頁 > 操作系統 > 單片機程序北航

單片機程序北航

發布時間:2025-06-11 04:50:09

『壹』 pic單片機串列通信收發字元串的問題!高分求助!

我把你的程序做了些修改,並在PROTEUS中模擬,是正確的,圖中的上面是模擬的發送,我輸入了「HowAreYou?"並按回車鍵,單片機收到回車後,先輸出"OK!!!"及回車,再把收到的數回送出去。

這里加了宏定義。有些內容請見北航的《PIC16系列單片機C程序設計與PROTEUS模擬》一書。

#include<pic.h>

__CONFIG(0x3F31);

#defineucharunsignedchar

#defineuintunsignedint

//宏定義,發送一個數,並等等發送完畢

#defineSEND_ONE(A)

TXREG=A;

while(!TRMT)

bitFLAG=0; //標志位,如收到回車字元,此位為1

ucharN=0; //接收數據累計

ucharDD[20]; //接收數據存放在此

constucharDD1[7]="OK!!!"; //雖然只有6個字元,但要用7個單元,最後一個為結束字元,const表示存放在程序存儲器中的常數

voidinit(void);

voidinterruptISR(void);

voidmain()

{ uchari;

init();

while(1)

{ if(FLAG)

{ for(i=0;i<6;i++) //先發送「OK!!!」

{ SEND_ONE(DD1[i]);

}

SEND_ONE(0x0D); //發送一個回車

for(i=0;i<N;i++)

{ SEND_ONE(DD[i]);

}

FLAG=N=0; //重新清0,為下次接收做准備

}

};

}

voidinit()

{

TRISC=0xff; //這里要把高二位設置這輸入,但在以下的串口使能後,系統自動將RC6變成通信輸出

TXSTA=0x24;

RCSTA=0x90;

SPBRG=25; //9600波特率

GIE=1;

PEIE=1;

RCIE=1; //打開中斷

}

voidinterruptISR(void)

{

if(RCIE&&RCIF) //不必清RCIF,因為接收數據後RCIF自動清0

{ DD[N]=RCREG;

if(DD[N]==0x0D)

FLAG=1; //如果收到回車,標志位置1

N++;

if(N>=20)

N=0; //如果接收數據數超出,從0存放

}

}

『貳』 pic單片機串列非同步通信的C程序,發送郵箱[email protected],謝謝了!

我這里把北航的<PIC16系列單片機C程序設計與PROTEUS模擬>一書的例4.15發在這里,這個例子是二個單片機之間的非同步通信,主機每按一下按鍵,就把數發出,人機接收到就把數在LED上顯示出來.因此這個例子有發送和接收二種.個人認為這本書值得你看的.給的圖和程序都是所附光碟中的.

主機的程序:

//非同步串列通信發送,按一下按鍵RB0,發送一個位元組,從20H開始發送

#include<pic.h>

//__CONFIG(0x3F71); //運行用

__CONFIG(0x3F39); //調試用

#defineLED RB1

voidDELAY(unsignedint); //延時(i)ms

voidCSH(void); //初始化程序

//宏定義,發送一個數,並等待其發送結束

#defineSEND_ONE(a)

TXREG=a;

while(TRMT==0)

charaaa;

main(void)

{

CSH();

aaa=0x20; //發送的第一個數

LED=0;

while(1);

}

//======延時(n)ms

voidDELAY(unsignedintn)

{ unsignedintj;

chark;

for(j=0;j<n;j++)

for(k=246;k>0;k--)NOP();

}

//======初始化程序

voidCSH(void)

{ TRISB=0B00000001; //RB0為按鍵輸入

TRISC=0B11100000;

TRISD=0; //D口全為輸出,接LED

PORTD=0;

INTCON=0B10010000; //RB0中斷使能

SPBRG=25; //波特率9600,高速,8位數據

RCSTA=(0b10010000);

TXSTA=(0b00100100);

}

//======//中斷服務程序

voidinterruptINT_ISR(void)

{ charx;

if(INTF) //按鍵RB0中斷,LED3閃一下,蜂鳴器響

{ LED=1;

SEND_ONE(aaa);

PORTD=aaa;

aaa++; //發送的數加1,為下次發送做准備

DELAY(100);

LED=0;

INTF=0;

}

}

從機的程序:

//非同步串列通信的接收

#include<pic.h>

__CONFIG(0x3F39); //調試用

#defineLED RB1

voidDELAY_I(unsignedint); //延時(i)ms,中斷用

voidCSH(void); //初始化程序

voidinterruptINT_ISR(void); //中斷服務程序

main(void)

{ CSH();

LED=0;

while(1);

}

//======初始化程序

voidCSH(void)

{ TRISB=0B11110000;

TRISC=0B11100011; //RC2為蜂鳴器輸出

TRISD=0;

PORTD=0;

INTCON=0B11000000; //

RCIE=1; //接收中斷

SPBRG=25; //波特率9600,高速,8位數據

RCSTA=(0b10010000);

TXSTA=(0b00100100);

PORTB=0b00000000;

}

//======//中斷服務程序

voidinterruptINT_ISR(void)

{ charx;

if(RCIE&RCIF) //接收中斷,LED閃一下

{ LED=1;

x=RCREG; //讀接收數據,實際上會自動將RCIF清0

PORTD=x;

DELAY_I(100); //延時為了能看清LED閃亮

LED=0;

}

}

//======延時(n)ms

voidDELAY_I(unsignedintn)

{ unsignedintj;

chark;

for(j=0;j<n;j++)

for(k=246;k>0;k--)NOP();

}

『叄』 求用PIC單片機語言編寫一段crc8校驗碼的程序 (求大神指點,要是有注釋就更好了)

可以參考北航的《PIC16系列單片機C程序設計與PROTEUS模擬》一書,裡面有8位的和16位的CRC程序,是用PICC編的,8位的好象在第6章的一線式溫度感測器那一節。

『肆』 pic系列單片機用c語言編程時,讓他執行A/D轉換的指令是什麼

AD轉換不是一條指令就可以完成的,它要先經過埠設置,AD設置等過程後才能准備進入AD轉換,下例是從北航的<PIC16單片機C程序設計與PROTEUS模擬>一書中得到的啟發編制的程序,希望對你能有幫助.建議你看一下這本書,對初學和想進一步提高在PIC單片機應用編程等會有用的.

附圖是對應程序的,在模擬時調整電位器可以看到AD結果的變化,並通過計算器可以驗證程序的正確性.

//ADl轉換示例,可以改變輸入電壓、AD通道、結果對齊方式等,看其變化

#include<pic.h>

__CONFIG(0x3F39);//配置位設置

voidmain(void)

{ chari,X,Y;

TRISA=0xFF; //將所有的A口設置為輸入

TRISE=0x03; //將所有的E口設置為輸入

TRISD=0; //C口與D口全為輸出

TRISC=0;

ADCON1=0b10000000; //設置AD結果對齊方式、AD時鍾選擇(與ADCON0的位7,6一起),AD埠設置等

ADCON0=0b01011001; //AD時鍾選擇(與ADCON1的位6一起),通道選擇,AD模塊使能

while(1)

{ NOP();

for(i=0;i<3;i++) //延時時間大約20us

NOP();

ADGO=1; //開始AD

while(ADGO==1); //等待AD轉換完成

ADIF=0;

X=ADRESH; //讀取AD結果高位元組至C口

PORTC=X;

Y=ADRESL; //讀取AD結果低位元組至D口

PORTD=Y;

};

}

閱讀全文

與單片機程序北航相關的資料

熱點內容
查魔獸伺服器ip地址 瀏覽:120
安卓4為什麼被淘汰 瀏覽:861
想買一個阿里雲的伺服器要多少錢 瀏覽:411
從程序員到架構師之路 瀏覽:550
androidui架構 瀏覽:474
元通炒股公式源碼 瀏覽:960
酯化循環氣壓縮機用什麼驅動 瀏覽:58
java搜索圖片 瀏覽:571
dns伺服器地址總是自動變換 瀏覽:970
android數據包開發 瀏覽:213
k鄰近搜索演算法brute 瀏覽:294
微軟雲如何開伺服器 瀏覽:29
心體與性體pdf 瀏覽:196
phpnullisset 瀏覽:793
加密相冊解密到照片庫在哪 瀏覽:375
php變數前加 瀏覽:813
緩解壓力最好的坐墊 瀏覽:138
51單片機ret 瀏覽:777
python廣度優先有向權值圖 瀏覽:874
程序員是技術 瀏覽:252