ISP又发现个小问题
下面本来是想做成下载字库的功能,除了第一次启动外试验总是不成功,
经摸索发现似乎进入这个功能后没有清除接收缓存,导致不听指挥。
高手这都能发现原因 这个界面在STC-ISP中吗?还真没用过 21cnsound 发表于 2024-4-7 14:52
这个界面在STC-ISP中吗?还真没用过
在发送文件那个选项,我反正是从来没有用过 本帖最后由 zhp 于 2024-4-7 18:31 编辑
功能测试没问题
下面是我的测试代码
#include "stc8h.h"
#include "intrins.h"
#include "stdio.h"
#define FOSC 11059200UL
#define BAUD (65536 - FOSC/4/115200)
#define T1MS (65536 - FOSC/1000)
void send_request();
int recv_data(char *buf, int n);
void process_data(char *buf, int n);
char timeout; //接收超时计时器
char xdata buf; //数据接收缓冲区
void main()
{
long len;
int cnt;
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
SCON = 0x52;
TMOD = 0x00;
AUXR = 0xc0;
TL0 = T1MS; //定时器0为1ms中断
TH0 = T1MS >> 8;
TR0 = 1;
TL1 = BAUD; //定时器1为串口波特率发生器
TH1 = BAUD >> 8;
TR1 = 1;
ET0 = 1;
EA = 1;
printf("start ...\n");
send_request(); //发送数据请求命令
recv_data((char *)&len, 4); //获取数据长度
while (len > 0)
{
cnt = (len > 256 ? 256 : len);
send_request(); //发送数据请求命令
recv_data(buf, cnt); //获取数据包
process_data(buf, cnt); //处理接收的数据
len -= cnt;
}
printf("Completed !\n");
while (1);
}
void tm0_isr() interrupt 1
{
if (timeout)
timeout--;
}
void send_request()
{
putchar(0xff);
putchar(0x57);
putchar(0x41);
putchar(0x56);
}
int recv_data(char *buf, int n)
{
int i;
int err;
err = 0;
for (i = 0; i < n; i++)
{
timeout = 50; //超时处理
while (!RI)
{
if (!timeout)
{
P0++;
err++;
break;
}
}
RI = 0;
buf = SBUF;
}
return (n - err);
}
void process_data(char *buf, int n)
{
//处理接收的数据
while (n--)
ACC = *buf++;
}
注意:
应答式发送模式:一定是先点击界面上面的发送数据,然后才给目标单片机上电发送数据请求
自动连续发送模式:先给目标单片机上电,后点击界面上的发送数据
如果顺序弄反了,那一定是不听指挥的。这里面和串口清不清接缓存没关系
能不能集成多种文件传输协议?特别是Xmode和Ymode
抄的我这款软件 - 数据分发器
包括字库生成软件,我做啥STC就会抄啥
QQ624353765 发表于 2024-4-8 09:35
抄的我这款软件 - 数据分发器
包括字库生成软件,我做啥STC就会抄啥
你让stc给你入股{:4_245:} 虹涛犹珷 发表于 2024-4-8 08:45
能不能集成多种文件传输协议?特别是Xmode和Ymode
这个可以有,stm32可以ymoden协议iap QQ624353765 发表于 2024-4-8 09:35
抄的我这款软件 - 数据分发器
包括字库生成软件,我做啥STC就会抄啥
数据分包发送?这不是isp软件n多年前就有了吗,这玩意有啥抄不抄的,你只要提需求,stc啥都能做,字库也是有人提了需求他做的,什么串口绘图,lcd虚拟显示都是有人提了需求他们独立开发的
页:
[1]
2