串口4可以收发,用上位机发送一个字节,接收不对
本帖最后由 DebugLab 于 2024-11-25 13:47 编辑我用的单片机是8G2K64S4,使用串口4的例程,可以收发,用上位机给串口4发送一个字节,接收到数据不对,下面是我程序
#include "reg51.h"
#include "intrins.h"
unsigned char xdata RX4_buffer={0};//
unsigned char RX4_cnt;// 串口4接收计数
sfr T2L = 0xd7;
sfr T2H = 0xd6;
sfr AUXR = 0x8e;
sfr S4CON = 0x84;
sfr S4BUF = 0x85;
sfr IE2 = 0xaf;
#define ES4 0x10
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xc9;
sfr P5M0 = 0xca;
sbit P12 = P1^2;
sbit P13 = P1^3;
void UART4_Isr() interrupt 18
{
if (S4CON & 0x02)
{
S4CON &= ~0x02; //清中断标志
P12 = !P12; //测试端口
}
if (S4CON & 0x01)
{
S4CON &= ~0x01; //清中断标志
// P13 = !P13; //测试端口
RX4_buffer = S4BUF;
if(RX4_buffer == 0x01 )
{
P13 = !P13;
}
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
S4CON = 0x10;
T2L = 0xe8; //65536-11059200/115200/4=0FFE8H
T2H = 0xff;
AUXR = 0x14; //启动定时器
IE2 = ES4; //使能串口中断
EA = 1;
S4BUF = 0x5a; //发送测试数据
while (1);
}
把接收的数据发送出去看是什么 接收的数据是00 程序没有问题,通过串口助手发送0x01给MCU,P1.3口会产生翻转。
注意串口助手要使用HEX模式进行数据收发:
我这边就是 用串口助手发送0x01给MCU,P1.3口不会产生翻转,感觉很奇怪 你上位机用 AIapp-ISP-V6.94Y的串口助手测试下 下载时IRC频率设置的是11.0592MHz吗? 神农鼎 发表于 2024-11-25 16:57
你上位机用 AIapp-ISP-V6.94Y的串口助手测试下
我用的6.91 晓飛飛 发表于 2024-11-25 21:29
下载时IRC频率设置的是11.0592MHz吗?
是的 mingyuan 发表于 2024-11-26 12:14
我用的6.91
我的串口助手用的是SSCOM V5.12.1
页:
[1]
2