【正文】
? 3. 用 AD以 1HZ的頻率采集模擬信號,然后轉(zhuǎn)換成數(shù)字量,再將其以 1200bps發(fā)送到計(jì)算機(jī),在計(jì)算機(jī)上顯示。 ? 2400bps從計(jì)算機(jī)發(fā)送任一字節(jié)數(shù)據(jù),當(dāng)單片機(jī)收到該數(shù)據(jù)后,在此數(shù)據(jù)前加上一序號然后連同此數(shù)據(jù)一起發(fā)送至計(jì)算機(jī),當(dāng)序號超過 255時(shí)歸零。約定一次傳遞數(shù)據(jù)為 16個(gè)字節(jié),以 01H地址的從機(jī)為例 。 ERR=1: 表示從機(jī)接收的命令是非法的。 RRDY=1:表示從機(jī)準(zhǔn)備好接收。 ?主機(jī)命令編碼為: 01H,主機(jī)命令從機(jī)接收數(shù)據(jù); 02H,主機(jī)命令從機(jī)發(fā)送數(shù)據(jù)。否則開始接收數(shù)據(jù)和命令。 ?主機(jī)收到從機(jī)應(yīng)答地址后,確認(rèn)地址是否相符,如果地址不符,發(fā)復(fù)位信號(數(shù)據(jù)幀中 TB8=1);如果地址相符,則清 TB8,開始發(fā)送數(shù)據(jù)。 ?主機(jī)接收數(shù)據(jù)時(shí)先判斷數(shù)據(jù)接收標(biāo)志( RB8),若RB8=1,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗(yàn)和,若正確則回送正確信號 00H,此信號命令該從機(jī)復(fù)位(即重新等待地址幀);若校驗(yàn)和出錯(cuò),則發(fā)送0FFH,命令該從機(jī)重發(fā)數(shù)據(jù)。對于地址相符的從機(jī),使自己的 SM2位置0(以接收主機(jī)隨后發(fā)來的數(shù)據(jù)幀),并把本站地址發(fā)回主機(jī)作為應(yīng)答;對于地址不符的從機(jī),仍保持SM2=1,對主機(jī)隨后發(fā)來的數(shù)據(jù)幀不予理睬。 ?主機(jī)發(fā)送一地址幀,其中 8位是地址,第 9位為地址 /數(shù)據(jù)的區(qū)分標(biāo)志,該位置 1表示該幀為地址幀。在實(shí)際的多機(jī)應(yīng)用系統(tǒng)中,常采用 RS485串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)傳輸。 80C51單片機(jī)的串行口方式 2和方式 3適于這種主從式的通信結(jié)構(gòu)。 單片機(jī)與單片機(jī)的通信 一、點(diǎn)對點(diǎn)的通信 硬件連接 R 2 I NT 2 O U TT X DR X DM A X 2 3 2 AT 1 I NG N DR 2 O U TT 1 O U T8 0 C 5 1T X DR X D8 0 C 5 1G N DR 1 I NT 2 O U TM A X 2 3 2 AG N DR 2 I NR 1 O U T系 統(tǒng) 1 系 統(tǒng) 2T 2 I N二、多機(jī)通信 硬件連接 單片機(jī)構(gòu)成的多機(jī)系統(tǒng)常采用總線型主從式結(jié)構(gòu)。利用單片機(jī)的串行口還可以方便地?cái)U(kuò)展鍵盤和顯示器,對于簡單的應(yīng)用非常便利。 單片機(jī)串行口應(yīng)用舉例 在計(jì)算機(jī)組成的測控系統(tǒng)中,經(jīng)常要利用串行通信方式進(jìn)行數(shù)據(jù)傳輸。 串行口工作之前,應(yīng)對其進(jìn)行初始化,主要是設(shè)置產(chǎn)生波特率的定時(shí)器 串行口控制和中斷控制。所以,選用的波特率也相對固定。這時(shí)溢出率取決于 TH1中的計(jì)數(shù)值。( T1溢出率) 方式 3的波特率 =( 2SMOD/32) 方式 0的波特率 = fosc/12 方式 2的波特率 =( 2SMOD/64) 串行口的四種工作方式對應(yīng) 三種波特率 。 R I ( 中 斷 標(biāo) 志 )位 采 樣 脈 沖D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7停 止 位R X D起 始R B 8四、波特率的計(jì)算 在串行通信中,收發(fā)雙方對發(fā)送或接收數(shù)據(jù)的速率要有約定。當(dāng) RI=0,且 SM2=0(或接收到的第 9位數(shù)據(jù)為 1)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器 SBUF和 RB8(接收數(shù)據(jù)的第 9位),置 RI=1,向 CPU請求中斷。當(dāng)停止位移至輸出位時(shí),左邊其余位全為 0,檢測電路檢測到這一條件時(shí),使控制電路進(jìn)行最后一次移位,并置 TI=1,向 CPU請求中斷。每一個(gè)移位脈沖都使輸出移位寄存器的各位右移一位,并由 TXD引腳輸出。方式 2的波特率固定為晶振頻率的 1/64或 1/32,方式 3的波特率由定時(shí)器 T1的溢出率決定。 TXD為數(shù)據(jù)發(fā)送引腳, RXD為數(shù)據(jù)接收引腳 。當(dāng) RI=0,且 SM2=0(或接收到的停止位為 1)時(shí),將接收到的 9位數(shù)據(jù)的前 8位數(shù)據(jù)裝入接收 SBUF,第 9位(停止位)進(jìn)入 RB8,并置 RI=1,向 CPU請求中斷。 停止位數(shù) 據(jù) 位 8 位起始位L S B M S B空閑空閑D 0D 71 幀 共 1 0 位 方式 1輸出 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7寫 入 S B U F停 止 位T X DT I ( 中 斷 標(biāo) 志 )起 始 方式 1輸入 用軟件置 REN為 1時(shí),接收器以所選擇波特率的 16倍速率采樣 RXD引腳電平,檢測到 RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。 TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。波特率固定為 fosc/12。數(shù)據(jù)由 RXD( )引腳輸入或輸出,同步移位脈沖由 TXD( )引腳輸出。 80C51串行口的工作方式 一、方式 0 方式 0時(shí),串行口為同步移位寄存器的輸入輸出方式。在串行口方式 方式 方式 3時(shí),波特率與 SMOD有關(guān),當(dāng) SMOD=1時(shí),波特率提高一倍。也必須在中斷服務(wù)程序中,用軟件將其清 0,取消此中斷申請。