沙龙365登入: [技术问答] 关于ML51串口接收问题

江山VR彩票百家乐计划群大全
141|6
楼主
本帖最后由 新塘初级用户 于 2020-7-31 10:21 编辑

我做了一个ML51串口接收数据,然后把数据存入数组,再把数组打印出来,但是不知道为什么,我把例程里面的if(receiveFLAG)那个判断条件删了,他反而要执行好几次接收才能返回
  1. #include "ML51.H"
  2. #include "BC26.H"
  3. unsigned char uart_receive_data;
  4. bit receiveFlag,bufOverFlag;


  5. void Serial_ISR (void) interrupt 4
  6. {
  7.     if (RI)
  8.     {   
  9.       receiveFlag = 1;
  10.       uart_receive_data = SBUF;
  11.        nbiot_receive_process_event(uart_receive_data);              //把SBUF数据依次存入数组
  12.                         clr_SCON_RI;                                         // Clear RI (Receive Interrupt).
  13.     }
  14.     if (TI)
  15.     {      
  16.         clr_SCON_TI;                                       // Clear TI (Transmit Interrupt).
  17.     }

  18. }







  19. void Uart0_SendChar(unsigned char Udat)
  20. {
  21.         SBUF=Udat;               
  22.         while(!TI);               
  23.   TI=0;                 
  24. }

  25. void Uart0_SendString(unsigned char *PBuf)
  26. {
  27.   while(*PBuf!='\0')            
  28.   {
  29.           Uart0_SendChar(*PBuf);
  30.           PBuf++;                                                         
  31.   }
  32. }











  33. void main(void)
  34. {
  35.   
  36. /* Initial UART0 */
  37.     MFP_P31_UART0_TXD;
  38.     P31_PUSHPULL_MODE;
  39.     MFP_P30_UART0_RXD;
  40.     P30_INPUT_MODE;
  41.     UART_Open(24000000,UART0_Timer3,115200);                 /*condition is: Fsys, UART0 or UART1 , Baudrate  */
  42.     ENABLE_UART0_PRINTF;

  43.     ENABLE_UART0_INTERRUPT;                                  /* Enable UART0 interrupt */
  44.     ENABLE_GLOBAL_INTERRUPT;                                 /* Global interrupt enable */
  45.   
  46. /* while receive data from RXD, send this data to TXD */
  47.   while(1)
  48.   {
  49.     //if (receiveFlag)
  50.    // {
  51.       receiveFlag = 0;
  52.    
  53.       BC26_Init();
  54.                         Delay_ms(1000);
  55.                         Clear_Buffer();     //清空数组
  56.                
  57.      
  58.    // }
  59.   }
  60. }

复制代码


ML51uart0BC26.zip

410.59 KB, 下载次数: 0

沙发
 楼主 | 2020-7-31 10:21 | 只看该作者
我试着注释了清空数组的函数,就发现了,我要PC发送好几次数据,他才会一起返回一次
板凳
| 2020-8-4 20:59 | 只看该作者
不知道是啥情况。
地板
| 2020-8-4 22:29 | 只看该作者
有一些特性真是无法理解。
5
| 2020-8-6 20:30 | 只看该作者
是的我也发现这个鬼问题了,沙龙365登入:无法理解
6
 楼主 | 2020-8-7 09:17 | 只看该作者

之前忘了说了,我没有解决这个问题,直接在加了一个中断接收标志,再在发指令的时候等待这个中断标志响应,才判断接收
while(1) { receiveFLAG=0; break; }
7
| 2020-8-7 09:55 | 只看该作者
闲逛到这里给个支持!加油国产芯片。


--------------------华大单片机批量找我,特价供应,点击头像看联系方式。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

江山VR彩票百家乐计划群大全 永利游戏开户直营 返回顶部 返回列表
澳门太阳城sunbet开户登入 www.sb87.com现金网网上娱乐场 英雄联盟外围网站 菲彩国际895959.com登入 亚洲星娱乐真人娱乐手机app
宝马会国际娱乐会所 申博太阳娱乐登入手机APP下载 太阳城菲律宾官网太阳城手机客户端下载登入 申博快速充值中心现金网 ag亚游接口接水登入
澳门哪里住宿登入 韩国济州岛赌场介绍朴静登入 网络代理赌博登入 皇冠点球计算方法登入 太阳城真网现金网
澳门博彩网站赌博游戏 注册送11元可提款登入 澳门金沙在线官网登入 新加坡名胜赌场登入 菲律宾申博电子游戏游戏