#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar Choice;
uchar IntFlagRec;
void DelayMS(uint ms)
{
uchar i;
while(ms--)
for(i=0;i<10;i++);
}
void MyPutchar(uchar c)
{
TI = 0; //清发送中断标志位
SBUF = c; //发送字符
DelayMS(10); // 不延时将出错!!!!!!!!!!!!!!!
}
void MyPuts(uchar *s)
{
uchar temp;
temp = *s++;
while(temp != 0)
{
if (temp == '/n')
{
MyPutchar('/r'); //返回行首
}
MyPutchar(temp);
temp = *s++;
}
}
/*
*********************************************************************************************************
* SerialInit
* 函数标号 : 4
* 描述 : 初始化串口
*
* 参数(传入) : 无
* 参数(返回) : 无
*
*********************************************************************************************************
*/
void SerialInit(void)
{
SCON=0x50; //串口模式1,允许接收
TMOD=0x20; //T1工作模式2
TH1=0xfd; //波特率9600
TL1=0xfd;
PCON=0x00; //波特率不倍增
EA=1; //总中断开关打开
ES=1; //允许串口中断
TR1=1; //启动定时器1
}
void CmdRec(void) interrupt 4
{
if(RI)
{
RI=0; //清接收中断标志
IntFlagRec = 1;
Choice = SBUF; //得到用户选择
}
}
void MenuDisp(void)
{
MyPuts(" ******************* 欢迎来到MCU世界 ***********************/n");
MyPuts(" * 青岛理工大学 机械工程学院 测控技术与仪器 */n");
MyPuts(" * 车强 (cheqiang87@qq.com) */n");
MyPuts(" * 请输入您选择的服务 : [1-5] */n");
MyPuts(" * */n");
MyPuts(" * 1.休闲小游戏 */n");
MyPuts(" * 2.股市行情 */n");
MyPuts(" * 3.恋爱宝典 */n");
MyPuts(" * 4.我爱厨房 */n");
MyPuts(" * 5.作者简介 */n");
MyPuts(" **************************************************************/n/n");
}
void SvcFunc(void)
{
IntFlagRec = 0; //用户请求接受完毕,标志位清零。
switch (Choice)
{
case '1':
MyPuts("Service 1 loading.../n to be finished/n");
break;
case '2':
MyPuts("Service 2 loading.../n to be finished/n");
break;
case '3':
MyPuts("Service 3 loading.../n to be finished/n");
break;
case '4':
MyPuts("Service 4 loading.../n to be finished/n");
break;
case '5':
MyPuts("服务5 载入中..../n");
MyPuts("作者简介:/n");
MyPuts(" :爱好C/C++ TCP/IP GUI UCOS LINUX 单片机 DSP ARM。/n");
MyPuts(" 期望工作地点,无特殊要求。/n");
MyPuts(" 邮箱,cheqiang87@qq.com/n");
break;
default:
MyPuts(" 请选择服务 : [1-5]/n");
break;
}
}
void main()
{
SerialInit();
MenuDisp();
while(1)
{
if(IntFlagRec) //如果有用户向52发送命令
SvcFunc(); //,则处理
}
}