?? 串行通訊_查詢方式_switch處理.c
字號:
// 串行通訊_查詢方式_switch處理.c
#include <reg52.h>
#include <stdio.h> /* prototype declarations for I/O functions */
/* T1 定時 時間常數;波特率發生器 */
#define baud_rate_L 0xFD /* T1: 8位重裝入; 0xFD-->9600b/s (SMOD=1,n=1/32) f=11.0592M */
/* T1: 8位重裝入; 0xFD-->5208.333b/s (SMOD=1,n=1/32) f=6M */
unsigned char receive_char=0; /* 接收字符 */
unsigned int receive_conter=0; /* 接收字符計數器 */
unsigned long run_conter=0; /* 測試運行計數器 */
main()
{
// T1 作波特率發生器,初始化
TMOD |= 0x20; /* timer 1 mode 2: 8-Bit reload. T1=8位重裝波特率發生器. */
TH1 = baud_rate_L; /* T1 : 8位重裝入; 0xFD(SMOD=0) --> 9600 b/s (f=11.0592MHz)*/
TR1 = 1; /* timer 1 run */
// 串口初始化
SCON = 0x50; /* mode 1: 8-bit UART, enable receiver. (1啟、8數、1仃;可變波特率) */
TI = 1; /* TI: set TI to send first char of UART */
// ES = 1; /* enable serial port interrupt */
printf ("sio is ready\n"); /* 向PC機報告 */
while (1) // 主程序死循環
{
if (RI)
{
// receive_char=getchar(); // 等待接收一字符(回送),直到收到為止
receive_char=_getkey(); // 等待接收一字符(等RI=1),直到收到為止(收到后RI=0)
receive_conter++; /* 接收字符計數 */
switch (receive_char)
{
case 'A': printf ("\ndo A\n");
break;
case 'B': printf ("\ndo B\n");
break;
case 'C': printf ("\ndo C\n");
break;
case 'N': printf ("\nN=%d\n", receive_conter);
break;
case 'R': printf ("\nRUN=%ld\n", run_conter);
break;
default: printf ("%c", receive_char);
}
}
run_conter++; /* 測試運行計數器 */
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -