[活动专区] 158

[复制链接]
 楼主| qbwww 发表于 2020-4-10 22:32 | 显示全部楼层 |阅读模式
本帖最后由 qbwww 于 2020-4-17 23:35 编辑

  1. /***************************************************************/
  2. #define P00_PushPull_Mode            P0CON |= 0X01;
  3. #define P01_PushPull_Mode            P0CON |= 0X02;
  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. /********************************************************************
  7. * 名称 : Delay_1ms()
  8. * 功能 : 延时子程序,延时时间为 1ms
  9. * x * 输入 : x (延时一毫秒的个数)
  10. * 输出 : 无
  11. ***********************************************************************/
  12. void Delay_1ms(uint i)//1ms延时
  13. {
  14.     uchar x,j;
  15.     for(j=0; j<i; j++)
  16.         for(x=0; x<=148; x++);
  17. }
  18. /*****************************************************
  19. *函数名称:void Uart_Init()
  20. *函数功能:Uart中断初始化
  21. *****************************************************/
  22. void Uart_Init()    //选择Timer1作为波特率信号发生器
  23. {
  24.     P2CON &= 0xFC;   //TX/RX设置为输入带上拉
  25.     P2PH  |= 0x03;
  26.     SCON  |= 0X50;   //设置通信方式为模式一,允许接收
  27.     TMCON |= 0X02;
  28.     TH1 = (32*1000000/115200)>>8;          //波特率为T1的溢出时间;
  29.     TL1 = 32*1000000/115200;
  30.     TR1 = 0;                //定时器T1的运行控制位        0:Timer1禁止计数                1:Timer1开始计数
  31.     ET1 = 0;                //Timer1中断使能控制        0:关闭TIMER1中断        1:打开TIMER1中断
  32.     EUART = 1;     //开启Uart中断
  33.     EA = 1;
  34. }
  35. /********************************************************************
  36. * 名称 : Com_Int()
  37. * 功能 : 串口中断子函数
  38. * 输入 : 无 * 输出 : 无
  39. ***********************************************************************/
  40. void Com_Int(void) interrupt 4
  41. {
  42.     uchar receive_data;
  43.      EA = 0;//中断使能的总控制        0:关闭所有的中断        1:打开所有的中断
  44.      if(RI == 1) //当硬件接收到一个数据时,RI会置位,sbit  RI          = SCON^0;
  45.      {
  46.          RI = 0;
  47.          receive_data = SBUF;//接收到的数据
  48.          if(receive_data == '1')
  49.          {
  50.              P00 =1;
  51.                          P01 =0;
  52.          }
  53.          if(receive_data == '2')
  54.          {
  55.              P00 =0;
  56.                          P01 =1;
  57.          }
  58.                  if(receive_data == '3')
  59.          {
  60.              P00 =0;
  61.                          P01 =0;
  62.          }

  63.      }

  64.            for(i=0; i<36; i++)
  65.             {
  66.                     SBUF = PuZh[i];   //将要发送的数据放入到发送寄存器
  67.                     while(!TI);                    //等待发送数据完成
  68.                     TI=0;                                //清除发送完成标志位
  69.                    Delay_1ms(1);
  70.             }
  71.             EA = 1;
  72. }
  73. void main(void)
  74. {
  75.     P00_PushPull_Mode;        //LED1灯配置为强推挽
  76.     P01_PushPull_Mode;  //LED1灯配置为强推挽
  77.     Uart_Init();
  78.     while(1)
  79.     {
  80.     }
  81. }





jiekou001 发表于 2020-4-10 23:56 | 显示全部楼层
不错不错。
yygdzjs 发表于 2020-4-11 17:53 | 显示全部楼层
不错!这个题目我当时准备做的,时间问题。所有没有申请,让那些需要爱好者。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

733

主题

4517

帖子

14

粉丝
快速回复 在线客服 返回列表 返回顶部