找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1206|回复: 5
打印 上一主题 下一主题
收起左侧

51单片机sct89c52RC最小系统版 中断程序接收不到数据

[复制链接]
跳转到指定楼层
楼主
4G模块连接sct89c52RC(最小系统版)中断程序没有反应,但是发送数据是正常的
1.4G模块直连usb-ttl模块是正常的
2.usb-ttl连接单片机也是正常的
3.4G模块txd插到usb-ttl,rxd查到单片机也是正常的
就只是单片机直连4G模块有问题

  1. #include <REGX52.H>
  2. #include <stdio.h>

  3. //定义类型
  4. typedef unsigned int u16;
  5. typedef unsigned char u8;

  6. //宏定义波特率发生器的载入值 9600
  7. #define RELOAD_COUNT 0xFA
  8. //#define RELOAD_COUNT 0xF3

  9. sbit LED6 = P2^6; //led7位置灯

  10. static u8 i=0;
  11. u8 Buffer[10];
  12. u8 isserver = 1;
  13. u8 ISSUCCESS = 0; //是否连接成功


  14. //睡眠
  15. void delay_10us(u16 ten_us)
  16. {
  17.         while(ten_us--);        
  18. }

  19. void delay(u16 len,u16 s){
  20.         while(len--){
  21.                 delay_10us(s);
  22.         }
  23. }

  24. //串口发送数据
  25. void UART_SendData(u8 dat)
  26. {
  27.         ES=0; //关闭串口中断
  28.         TI=0; //清发送完毕中断请求标志位
  29.         SBUF=dat; //发送
  30.         while(TI==0); //等待发送完毕
  31.         TI=0; //清发送完毕中断请求标志位
  32.         ES=1; //允许串口中断
  33. }

  34. //发送指令
  35. void SendCmd(u8 *pbuf)
  36. {
  37.         while(*pbuf!='\0') //遇到空格跳出循环        
  38.         {
  39.                 UART_SendData(*pbuf);
  40.                 delay_10us(5);
  41.                 pbuf++;        
  42.         }
  43.         delay_10us(5);
  44.         UART_SendData('\r');//回车
  45.         delay_10us(5);
  46.         UART_SendData('\n');//换行
  47.         delay_10us(2000);
  48. }

  49. //发送消息到服务端,只是多加了发送数据的指令
  50. void SendData(u8 *pbuf)
  51. {
  52.         SendCmd("AT+MIPSEND=1,10");
  53.         while(*pbuf!='\0') //遇到空格跳出循环        
  54.         {
  55.                 UART_SendData(*pbuf);
  56.                 delay_10us(5);
  57.                 pbuf++;        
  58.         }
  59.         delay_10us(5);
  60.         UART_SendData('\r');//回车
  61.         delay_10us(5);
  62.         UART_SendData('\n');//换行
  63. //        delay_ms(10);
  64. }
  65. //串口设置
  66. void UART_Init(void)
  67. {
  68.         SCON|=0X50;                        //设置为工作方式1
  69.         TMOD|=0X20;                        //设置计数器工作方式2
  70.         PCON=0X80;                        //波特率加倍
  71.         TH1=RELOAD_COUNT;        //计数器初始值设置
  72.         TL1=TH1;
  73.         ES=0;                                //关闭接收中断
  74.         EA=1;                                //打开总中断
  75.         TR1=1;                                //打开计数器
  76.         ET1=0;
  77. //        TI=1;          //发送中断标记位,如果使用printf函数的必须设置        
  78. }


  79. void main(){
  80.         LED6=0;
  81.         UART_Init();
  82.         
  83.         while(1){
  84.                         if(isserver){
  85.                                 delay(5,50000);
  86.                                 SendCmd("AT+CGDCONT=1,\"IP\",\"CMIOT\"");
  87.                                 delay(5,50000);
  88.                                 SendCmd("AT+CGACT=1,1");
  89.                                 delay(5,50000);
  90.                                 SendCmd("AT+MIPOPEN=1,\"TCP\",\"106.13.207.79\",11112");
  91.                                 delay(5,50000);
  92.                           SendCmd("{id:A0002}");
  93.                         }
  94.                         
  95.         }
  96.         
  97. }

  98. //中断程序
  99. void UartIsr(void) interrupt 4
  100. {
  101.         if (RI == 1)                           //当硬件接收到一个数据时,RI会置位
  102.         {
  103.                 SendCmd("接收消息\n");
  104.                 LED6 = 1;
  105.                 RI = 0;
  106.         }
  107. }
复制代码






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:404160 发表于 2023-4-26 10:04 | 只看该作者
83行关闭了串口中断。所以无反应
回复

使用道具 举报

板凳
ID:1074168 发表于 2023-4-26 10:12 | 只看该作者
83行关闭了串口中断。所以无反应
回复

使用道具 举报

地板
ID:1034262 发表于 2023-4-26 15:18 | 只看该作者
先跟电脑的串口助手通信,成功了再接到别的模块。
回复

使用道具 举报

5#
ID:1074117 发表于 2023-4-27 13:33 | 只看该作者
飞云居士 发表于 2023-4-26 10:04
83行关闭了串口中断。所以无反应

只是初始化的时候关闭了,在发送串口数据的时候开启了
回复

使用道具 举报

6#
ID:1074117 发表于 2023-4-27 13:34 | 只看该作者
coody_sz 发表于 2023-4-26 15:18
先跟电脑的串口助手通信,成功了再接到别的模块。

电脑的串口助手是可以的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表