📄 test.c
字号:
//#pragma src
#include "reg51.h"
#include "IO.H" // 自定义头文件, 宏定义及I/O函数外部声明
void enter(void), del(void), review(void), quit(void); // 函数声明
code void (*option[])(void) = { // 作为code数据, 类似汇编里的函数地址标号
enter,
del,
review,
quit
};
unsigned char str_chr(unsigned char code * str, unsigned char ch); // 检测字符串str中是否含有字符ch
unsigned char menu(void); // 示出一个菜单, 返回用户选择的菜单号
unsigned char main(void)
{
unsigned char i;
SCON = 0xc0; // 设置串口为方式3, 11位UART(Universal Asynchronous Receiver/Transmitter), 波特率可变
PCON = 0;
TMOD = 0x20; // 设置定时器T1为方式2(自动再装入8位计数器),做为波特率发生器
TH1 = 0xf0;
TL1 = 0xf0;
TR1 = 1;
//EA = 1; // 所有中断开
//ES = 1; // 允许串行中断
REN = 1; // 允许串行接收, 把此行关闭,串口1就收不到数据了
do {
i = menu(); /* get user's choice */
(*option[i])(); /* execute */
if(i==3)break;
putcstring(" continue!\n\n");
} while(1);
return 0;
}
unsigned char menu(void)
{
unsigned char ch;
do {
/*
putstring("1. Enter\n");
putstring("2. Delete\n");
putstring("3. Review\n");
putstring("4. Quit\n");
putstring("Select a number: ");
*/
putcstring("1. Enter\n");
putcstring("2. Delete\n");
putcstring("3. Review\n");
putcstring("4. Quit\n");
putcstring("Select a number: ");
ch = getche();
putcstring("\n");
} while(!str_chr("1234", ch));
return ch - 0x31; /* convert to an integer equivalent */
}
unsigned char str_chr(unsigned char code * str, unsigned char ch)
{
unsigned char i=0,j;
do {
j= str[i];
if(j==ch)break;
++i;
} while(j);
return j;
}
void enter(void)
{
//putstring("\nIn enter");
putcstring("\nIn enter");
}
void del(void)
{
//putstring("\nIn del");
putcstring("\nIn del");
}
void review(void)
{
//putstring("\nIn review");
putcstring("\nIn review");
}
void quit(void)
{
//putstring("\nIn quit");
putcstring("\nIn quit");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -