📄 串行通讯_查询方式_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 + -