實驗?zāi)康呐c要求 1、掌握串行口中斷的原理; 2、掌握串口編程與調(diào)試方法; 3、掌握8051單片機的Modbus編程; |
實驗原理與內(nèi)容 1. 原理 8051單片機內(nèi)部有一個全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個在物理上獨立的接收發(fā)送器,既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出。這個通信口既可以用于網(wǎng)絡(luò)通信,亦可實現(xiàn)串行異步通信,還可以構(gòu)成同步移位寄存器使用。如果在串行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)成標(biāo)準(zhǔn)的RS-232接口。 2. 內(nèi)容 單片機與微機相連,使用中斷方法實現(xiàn)8051單片機與微機的串口通信。微機鍵入一個字符后發(fā)送至單片機,單片機收到后又將此字符發(fā)送回微機,在微機屏幕上回顯。要求在11.0592MHZ下,串行口的波特率為9600,方式1。 |
實驗設(shè)備與軟件環(huán)境 1.STC89C52RC單片機開發(fā)板: 2.KEIL軟件開發(fā): 3.stc-isp-v4.80-not-setup 4.Proteus7.7_SP2仿真軟件 |
實驗過與結(jié)果(可貼圖) 1.代碼 #include <reg51.h> #include <intrins.h> void INIT_SCI() { SCON=0X50; //串口初始化 ES=1; //允許串口中斷 EA=1; //開中斷 } void INIT_TMR() { TMOD=0X20; //定時器初始化 TH1=0xfd; TL1=0xfd; TR1=1; } void serial_int(void) interrupt 4 { unsigned char data c; if (_testbit_(RI)) //接收中斷服務(wù) { c=SBUF; SBUF=c; } } void main(void) { INIT_TMR(); INIT_SCI(); while(1); } |
操作異常問題與解決方案 1.代碼錯誤:檢查代碼,改正 |
實驗總結(jié) 通過本次的實驗,在前兩個實驗的基礎(chǔ)上讓我復(fù)習(xí)了知識點,也讓我在次掌握了新的知識。在完成這次實驗后,懂得了這個通信口既可以用于網(wǎng)絡(luò)通信,亦可實現(xiàn)串行異步通信,還可以構(gòu)成同步移位寄存器使用。如果在串行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)成標(biāo)準(zhǔn)的RS-232接口。 |
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |