以前以為串行通信只能是單片機和PC機之間進行通信,昨天無意之中看到一個程序,是單片機和單片機之間進行通信。。這小東西真是神奇啊!昨天弄了很長時間沒弄出來,今天在大神的幫助下終于撥開云霧見天日了。
案例介紹:
利用單片機a將一段流水燈控制程序發送到單片機b,來控制單片機b的P1口,點亮8位LED燈。
案例分析:
a完成發送,b完成接收。編寫程序設置a,令SM0=0,SM1=1(串行口工作方式1)。設置b,令SM0=0,SM1=1,REN=1,使接收允許。
源程序
1)數據發送程序
#includeunsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //流水燈控制碼
void send(unsigned char dat) //數據發送程序
{
SBUF=dat; //將要發送的數據存入發送緩沖器中
while(TI==0); //若發送中斷標志位沒有置1(正在發送數據),就等待
TI=0; //若發送完成,TI自動置1,這里把它清零
}
void delay(void) //延時函數
{
unsigned char m,n;
for(m=0;m<200;m++) //延時約50ms
for(n=0;n<250;n++);
}
void main(void)
{
unsigned char i;
TMOD=0x20; //定時器T1工作于方式2(可自動重裝的8位定時器)
SCON=0x40; //串口工作方式1,不允許接收
PCON=0x00; //波特率不倍增
TH1=0xf4; //波特率為2400b/s
TL1=0xf4;
TR1=1; //啟動定時器T1(T1作波特率的發生器)
while(1)
{
for(i=0;i<8;i++) //一共8位的流水燈控制碼
{
send(tab[i]); //發送數據
delay(); //每50ms發送一次數據
}
}
}
2)數據接收程序
#includeunsigned char receive(void) //數據接收函數
{
unsigned char dat;
while(RI==0); //數據沒有接收完畢時等待接收
RI=0; //接收完畢時清零
dat=SBUF; //將接收緩沖器中的數據存入dat
return dat; //將接收到的數據返回
}
void main(void)
{
TMOD=0x20; //設置定時器T1工作于方式2
SCON=0x50; //串口工作方式1,允許接收數據
PCON=0x00; //波特率不倍增
TH1=0xf4; //波特率為2400b/s
TL1=0xf4;
TR1=1; //啟動定時器T1
REN=1; //允許接收數據
while(1)
{
P1=receive(); //將接收到的數據送到P1口顯示
}
}
把這兩個程序分別燒寫到兩塊板子上,然后用連接線分別連接兩個板子的發送引腳和接收引腳,然后效果就出來了。這只是一個發送一個接受的情況。
關鍵字:80c51 單片機 串行通信
引用地址:
兩個80c51單片機之間怎樣進行串行通信
推薦閱讀最新更新時間:2025-06-07 23:41
80C51單片機-LED流水燈效果(匯編版)
本文將介紹一個基于8051單片機的跑馬燈實驗,通過編寫匯編代碼實現LED流水燈效果。這個實驗將使用8051單片機的P2口來控制8個LED燈,實現流水燈效果。 實驗準備 8051單片機 8個LED燈 8PIN排線 JP11(P2)和J12(LED燈)連接 將JP11(P2)和J12(LED燈)使用8PIN排線連接起來。 代碼解析 ORG 0000h ; 程序起始地址 AJMP start ; 跳轉到start標簽 ORG 0030h ; 設置程序的起始地址 start: MOV A,#0ffh ; 將累加器A的值設置為0ffh(1111 1111) CLR C ; 清除進位標志位C M
[單片機]
基于μC/OS和80C51單片機的固話來電防火墻設計
本文介紹了基于μC/OS—II嵌入式實時操作系統和來電顯示技術設計,由鈴流檢測電路、來電解碼電路、DTMF解碼電路、模擬掛機電路、號碼存儲電路等組成。系統利用得到的來電號碼,同存儲黑名單中的號碼進行比較,判斷是接通話機振鈴線路,還是控制模擬掛機電路掛機。本系統復用電話機鍵盤控制,并以LCD中文顯示,可方便地對黑名單中的號碼進行管理。 隨著電信業務的發展,騷擾電話問題日益突出,大量用戶被騷擾電話所煩擾。為躲避騷擾,多數人采取拔電話線的方法,卻因此錯過不少重要來電。此外,每個人在生活中都可能遇到一些出于顧慮而不想接聽的電話。針對此種現象,本次設計的來電防火墻可屏蔽騷擾電話。來電防火墻通俗地講就是“不想聽”的電話打不進來,它
[單片機]
C8051F與80C51系列單片機的初始化比較
C8051F與80C51系列單片機的不同初始化 近30年來,世界各主要電子元器件生產廠商紛紛推出自己各具特色的單片機產品。而在百花齊放的單片機家族中,80C5l系列一直扮演著重要的角色。該單片機在教學、科研等領域已經成為入門單片機并成為單片機應用的首選,該產品以其易讀性好、擴展能力強而著稱,從而成為廣大從事單片機開發者最熟悉、最具代表的機型。但人們往往在熟悉80C51單片機之后又選擇別的系列單片機開發產品,這是因為80C51具有運算速度慢、功耗大、內部資源少等不足,所以限制了其使用范圍。Cygnal公司推出的C805lF系列單片機既彌補了80C51系列的不足,又與MCS—5l指令集兼容。C805lFxxx系列單片機是完全集成的混
[單片機]
51單片機匯編語言實驗(四)----串行通信實驗
一、實驗目的: ?? 學習串行口的工作方式,掌握單片機通信程序編制方法。 二、實驗設備: ?? PC計算機一臺,Dais-52PRO+實驗系統一套。 三、實驗內容: ?? 與PC進行串行通信 四、與PC進行串行通信 ?? 1、實驗原理: ?? 8051單片機通過MAX232芯片與PC機進行通信,在PC機上運行串口助手軟件。PC機通過軟件助手發數據給單片機,單片機收到數據后取反發給PC機,可以在PC上觀察數據。 ?? 2、實驗步驟: ??① 將IO口區的P3.0與PACK區擴展板的RXD(P3.0)連接; ??② 將IO口區的P3.1與PACK區擴展板的TXD(P3.1)連接; ??③ 將PACK區模塊的DB9通過串
[單片機]
proteus與keil Cx51的單片機仿真(串行通信口)
單片機串行口工作于方式0,通過74LS164實現串并轉換,來控制共陽極數碼管的顯示,當按下K01按鈕顯示2010,按下K02鍵顯示1987,按下K03鍵顯示0606,按下K04鍵顯示1988,按下K05鍵顯示1224。其中數字顯示可由自己設定. 電路圖: C程序: #include reg51.h #include stdio.h #include intrins.h #define uchar unsigned char//宏定義 sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P2_0=P2^
[單片機]
單片機串行通信波特率的自適應方法
在串行異步通信中,目前實現波特率自動檢測并適應的設計思想有多種,可是他們或者需要額外的硬件支持,或者實現時方法繁雜且軟件開銷大。文章介紹了一種簡單可靠的用軟件實現波特率自動適應的方法,并給出了仿真調試電路原理圖,給出了同步程序的詳細框圖。該方法提高了波特率解調的便捷性和兼容性。 1 仿真電路 SST89C54/58單片機是MCS-51系列單片機的派生產品,他們在指令系統、硬件結構和片內資源上與標準8052單片機完全兼容。實際上 SST公司的SST89C54/58是一款使用非常方便51系列單片機,如不考慮其看門狗定時器和內部Flash程序存儲器,可以將其看成是一個可在線編程的標準8052單片機。圖1為實現串行通信仿真調試硬件原理
[單片機]
PIC16F877A單片機控制Modem的串行通信設計
在工程中,常采用Modem通過模擬線路進行數據的遠程傳輸。我們用工業級PIC16F87系列單片機控制Modem完成串行異步/同步通信,在較低速率的線路上實現了數據的實時傳輸,收到了很好的效果。 本文就系統中PIC單片機控制Modem的串行通信技術,在硬件、軟件兩方面進行了分析。 1 PIC單片機及其同步/異步串行接口USART模塊功能簡介 PIC16F877A單片機內部有8K*14的FLASH程序存儲器和512字的RAM數據存儲器:不僅采用哈佛體系結構,而且還采用哈佛總線結構,流水線操作,PIC16F877A大大提高了指令執行速度,PIC單片機的系統時鐘可以工作在DC- 20MHz的頻率范圍之內。優化的CPU結
[單片機]
單片微機原理P0:80C51結構原理
51這種貨色,學了最多就所謂的垃圾科創利用一下,但是想一下這門課我也要考試,還是寫一點東西順便放博客上吧。 這一系列主要參考《單片微機原理與接口技術》這本書的內容(這本書的特點就是廢話特別多,中國式特色教科書)+ 一點CSAPP,還有老師的課件。 0. 機器碼的表示 簡單的原碼,反碼和補碼的表示相信大家一定很熟了,下面我們來聊下BCD碼的計算和IEEE標準的浮點數 BCD碼的表示與計算: BCD碼是用4位二進制碼來表示十進制數中的0-9這10個數碼,BCD碼有很多種形式,如8421碼、余3碼、5421碼和2421碼等,其中8421碼應用最為廣泛。 對于8421 BCD碼計算我們要注意一個tri
[單片機]