51微控制器的串列埠通訊
阿新 • • 發佈:2019-01-07
一、程式下載的不同方式
1、程式傳送和電平介面:
由於兩個電平無法通訊,所以需要轉換電平 1、轉換電平可以裝驅動(CH340)
2、可以使用轉電平晶片
一般採用第一種方式 二、通訊方式 (一)、並行通訊
(二)、序列通訊
三、序列通訊傳輸方向
四、序列通訊的分類 (一)、非同步通訊
非同步通訊的資料格式
(二)、同步通訊 同步通訊要建立傳送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步(時鐘線) 80C51為序列非同步通訊 C51的傳輸格式可概括為:“8N1”:8個數據位,N:NO沒有校驗位,1個停止位 三、80C52序列口結構:
四、80C52暫存器
SCON各位釋義: 五、波特率設定
其中X為初值,fosc為晶振頻率 六、常用波特率 以下晶振頻率均為1.0592M 1、X = 253(0xfd),波特率= 9600 2、X = 250(0xfa),波特率= 4800 3、X = 0xf4,波特率= 2400 #include <reg52.h> unsigned char ch; void uart_init() { SCON = 0x50; //設定串列埠工作方式 TMOD |= 0x20;//設定定時器工作方式 TH1 = 0xFD;//設定波特率為9600 TR1 = 1;//開啟定時器1 //中斷服務法 ES = 1;//開啟串列埠服務中斷 EA = 1; } void uart_send_char(unsigned char ch) { SBUF = ch; while(!TI);//等待TI為1 TI = 0;//TI置0 } void uart_send_str(unsigned char *str) { while(*str != '\0') { uart_send_char(*str++); } } void uart_isr() interrupt 4 { ES = 0; if(RI) { uart_send_str("I receieve is:"); uart_send_char(SBUF); uart_send_char('\n'); RI = 0; } } void main() { uart_init(); }
由於兩個電平無法通訊,所以需要轉換電平 1、轉換電平可以裝驅動(CH340)
2、可以使用轉電平晶片
一般採用第一種方式 二、通訊方式 (一)、並行通訊
(二)、序列通訊
三、序列通訊傳輸方向
四、序列通訊的分類 (一)、非同步通訊
非同步通訊的資料格式
(二)、同步通訊 同步通訊要建立傳送方時鐘對接收方時鐘的直接控制,使雙方達到完全同步(時鐘線) 80C51為序列非同步通訊 C51的傳輸格式可概括為:“8N1”:8個數據位,N:NO沒有校驗位,1個停止位 三、80C52序列口結構:
四、80C52暫存器
SCON各位釋義: 五、波特率設定
其中X為初值,fosc為晶振頻率 六、常用波特率 以下晶振頻率均為1.0592M 1、X = 253(0xfd),波特率= 9600 2、X = 250(0xfa),波特率= 4800 3、X = 0xf4,波特率= 2400 #include <reg52.h> unsigned char ch; void uart_init() { SCON = 0x50; //設定串列埠工作方式 TMOD |= 0x20;//設定定時器工作方式 TH1 = 0xFD;//設定波特率為9600 TR1 = 1;//開啟定時器1 //中斷服務法 ES = 1;//開啟串列埠服務中斷 EA = 1; } void uart_send_char(unsigned char ch) { SBUF = ch; while(!TI);//等待TI為1 TI = 0;//TI置0 } void uart_send_str(unsigned char *str) { while(*str != '\0') { uart_send_char(*str++); } } void uart_isr() interrupt 4 { ES = 0; if(RI) { uart_send_str("I receieve is:"); uart_send_char(SBUF); uart_send_char('\n'); RI = 0; } } void main() { uart_init(); }