1樓:匿名使用者
#include
#define uint unsigned char#define uchar unsigned intsbit d=p3^2;
sbit p3_4=p3^4;
uchar ser_receive; //串列埠接收到的資料uchar ser_flag=0;
uchar receive_number[4];
uchar i=0;
uchar j;
uint a=0,b=0,c=0;
void function();
void init_pin(void);
void init_ser()
void delay(uint z)
void init_pin(void)
void ser() interrupt 4 //中斷函式不用宣告} }}
void function()
/*****************一號************************/
}void main()
es=1;
}}}你說的是不是這個意思?
2樓:匿名使用者
#include
#include
unsigned char a[16],b[16]="0123456789abcdef",i,pr;
void ser_isr(void) interrupt 3}main()}}
如何用c語言程式設計實現c51微控制器中從串列埠接收一個字串?
3樓:匿名使用者
可以的,定義一個緩衝區(陣列)接收,到時微控制器把字串順序處理一下就行了,一般/n來代表字串的結束標誌。
4樓:匿名使用者
我只能給你子程式,僅供參考
ie=0x90; //開啟中斷總開關及串列埠中斷scon=0x50; //設定序列口工作方式1,允許接收tmod=0x20; //設定時器1,自動裝載,產生破特率th1=0xfd; //破特率為9600
tr1=1; //啟動定時器1
pcon=0x80; //定義smod,
傳送while(ri==0) //ri==1;
ri=0; //手動清零
傳送void disf(unsigned int y)}接收while //無限迴圈
四位字元,傳送
while(key==0);
disp(1949);
for(i=0;i<4;i++)
四位字元,接收 用串列埠中斷
void ck_js() interrupt 4}多位字元 接收函式
void seri_int() interrupt 4count2--;
} dat1[count1]=sbuf;
count1++;
ri=0;}}}
5樓:朱曾巫馬雅霜
如果用中斷方式接收的話,只能接收單個字元。而如果用查詢方式的話,接收字串佔用的時間真太長了,整個cpu將陷入一個長期無法工作的狀態,按照波特率為19200來算,接收一個字元的時間是573微秒,十個字元的話就是5.73毫秒了,系統無法正常工作。
建議用中斷接收單個字元。
51微控制器串列埠接收多字元並存入陣列的程式
6樓:匿名使用者
你這串列埠bai接收子程式,只要接du收到第一個位元組的zhi資料就dao一直在中斷子程式中,然後專等待接收其它數屬據了,
while(!ri); 這就是在等待接收其它資料了,接收完了以後又在中斷子程式連續傳送了。這麼寫程式是有很大弊病的,一旦進入中斷程式,到最後傳送結束,都一直在中斷子程式中,那這個期間微控制器是不能再做其它工作的,也就是不能再執行主程式了。
while(!ri);這就是查詢方式等待接收資料,那又何必寫成中斷程式呢,不如直接寫成查詢程式了,同樣下面的, while(!ti);這也明明是在查詢方式傳送,就不必要寫在中斷程式中了。
既然採用中斷的方式,就是當接收到一個資料後才響應一次中斷,儲存這個資料,然後就立即從中斷返回,這樣,繼續執行主程式,這樣,接收資料和傳送資料才不影響主程式。
同理,在中斷程式傳送一個位元組的資料就立即從中斷返回執行主程式,也不影響主程式的執行。
另外,更重要的一點就是while(!ri);,等待接收資料,如果不能收到資料就永遠等待下去,假如通訊線有故障,或者傳送方有問題,不能傳送資料了,那麼將永遠等待下去,這就相當於宕機了,多可怕,寫程式就怕這個事情發生的。
7樓:匿名使用者
每接收到一個資料就判斷資料的合法性,功能,再存到陣列裡,沒收一個還要判斷是不是一幀資料什麼的、、、、、
8樓:微控制器的戰鬥機
有qq嗎?發過來,我為你解答
C51微控制器程式設計
include define uchar unsigned char define uint unsigned intsbit high key p1 0 sbit low key p1 1 sbit led p2 0 sbit speak p2 1 uint count void delay ui...
微控制器接收串列埠資料,怎麼用微控制器確定串列埠接收資料的時間間隔?
你通過串列埠助手要接受字串或一組資料需要在微控制器端開闢一個緩衝區,否則可能丟失資料。以下程式是較為通用的串列埠收發例程,開闢一個16位元組的緩衝區,兩個指標,一個存數指標,一個取數指標,兩指標相等,證明沒有新的接收資料。include define uchar unsigned charuchar...
c51微控制器中斷程式中的interrupt1,2,3是由什麼決定的
衛戍邊疆 中斷是由於某種事件的發生 硬體或者軟體的 計算機暫停執行當前的程式,轉而執行另一程式,以處理髮生的事件,處理完畢後又返回原程式繼續作業的過程。中斷是處理器一種工作狀態的描述。1 int0 外部中斷0,由p3.2埠引入,低電平或下降沿引起。預設優先順序最高。2 int1 外部中斷1,由p3....