⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 C51中的指针应用之一.rar
💻 C
字号:
//#pragma src(test.a51)
#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 * 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;

      putstring("  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: ");
      ch = getche();
      putstring("\n");

   } while(!str_chr("1234", ch));

   return ch - 0x31; /* convert to an integer equivalent */

}

unsigned char str_chr(unsigned char * str, unsigned char ch)
{
	unsigned char i;
	for(i=0;str[i];++i){
		if(str[i]==ch)break;
	}
	return str[i];
}

void enter(void)
{
   putstring("\nIn enter");
}
void del(void)
{
   putstring("\nIn del");
}
void review(void)
{
   putstring("\nIn review");
}
void quit(void)
{
   putstring("\nIn quit");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -