串口 51 通信

来源:互联网 发布:双轨制直销系统源码asp 编辑:程序博客网 时间:2024/05/02 01:21

 

 

 

#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();     //,则处理
 }
}

 





 

 

原创粉丝点击