标题: 单片机模拟串口问题,STC89C52在处理速度上和STC11有什么差距吗? [打印本页]

作者: aYong0308    时间: 2020-7-24 14:12
标题: 单片机模拟串口问题,STC89C52在处理速度上和STC11有什么差距吗?
请问STC89C52在处理速度上和STC11有什么差距吗?我有一份模拟串口代码可以在STC11上运行,放在STC89C52上就不行了
void timer0(void) interrupt 1
{
//TR0 = 0;
//TL0=0x00;
TH0 = 0xd8; // 1/90秒
g_ReceDlyCnt ++;
g_MsgDlyCnt ++;
if((g_MsgDlyCnt%30)==0)
{if(LED)
LED= 0;
else
LED= 1;
}
}
uint8 receiveFromCoderTwo() //从模拟口接收数据
{
uint8 result;

//对于接收第一个字节的后续字节需要同步等待
g_ReceDlyCnt = 0;
ET0=1;
if(RXD2)//等待起始位
{
//接收第一个字节的后续字节
while(1)
{
if(RXD2==0)
{
ET0=0;
break ;
}
if(g_ReceDlyCnt>9)
{
return 0;//超时
}
}
}
ET0=0;
ACC=0;
CY=0;
#pragma  asm
MOV R3,#120 ;1
DJNZ R3,$ ;240


MOV R2,#8;
Rec_8Bits2:
MOV R3,#255;1
DJNZ R3,$;510
MOV R3,#28 ;1
DJNZ R3,$ ;62
NOP ;1
MOV C,RXD2;2
RRC A;1
DJNZ R2,Rec_8Bits2;2total 576



MOV R3,#255      ;1 //停止位
DJNZ R3,$       ;510
MOV R3,#27    ;1
DJNZ R3,$       ;54


#pragma  endasm


result=ACC;
ET0=1;
return result;


}

作者: 513224448    时间: 2020-7-24 14:12
使用示波器看TX口波形,看一下频率多少,确认输出是否符合你的设置的频率,一般是频率不对,极小可能是芯片不同,程序配置差异。频率不同,你就看看主频,然后计算一下就好了。
作者: hsl32    时间: 2020-7-24 15:52
速度不一样,STC11是1T的,STC89C52是6T/12T
作者: sheng7533967    时间: 2020-7-24 16:46
用逻辑分析仪抓一下时间,很好解决的。τ 宝上有USB式的,25-35RMB
作者: a18842566186    时间: 2020-7-24 16:48
当然有差距 最大支持的晶振不同啊  
作者: kuangleilei    时间: 2020-7-24 17:20
基本功能是一样的,只是指令执行速度 快一些 12 倍,增加了一些可选的 IO 口,P4 口
作者: aYong0308    时间: 2020-7-27 13:59
hsl32 发表于 2020-7-24 15:52
速度不一样,STC11是1T的,STC89C52是6T/12T

STC11默认是12T的,那我这个也是12T的
作者: aYong0308    时间: 2020-7-27 14:03
sheng7533967 发表于 2020-7-24 16:46
用逻辑分析仪抓一下时间,很好解决的。τ 宝上有USB式的,25-35RMB

你们说的抓是怎么个抓法了,我不懂额,可以讲详细点吗,
作者: 土豆西红柿    时间: 2020-7-27 15:09
跟速度其实关系不大,主要是同一个模拟端口在两个芯片引脚的处理上有什么不同,使用模拟端口的引脚的基础设置查看一下芯片手册
作者: aYong0308    时间: 2020-7-27 15:26
土豆西红柿 发表于 2020-7-27 15:09
跟速度其实关系不大,主要是同一个模拟端口在两个芯片引脚的处理上有什么不同,使用模拟端口的引脚的基础设 ...

你好,端口就都是普通IO口,我这接收用延时接收的,IO口没做什么设置
作者: 土豆西红柿    时间: 2020-7-27 15:36
aYong0308 发表于 2020-7-27 15:26
你好,端口就都是普通IO口,我这接收用延时接收的,IO口没做什么设置

编译通过之后进行单步调试,看一下是不是卡在哪个语句上了
作者: aYong0308    时间: 2020-7-27 15:40
土豆西红柿 发表于 2020-7-27 15:36
编译通过之后进行单步调试,看一下是不是卡在哪个语句上了

我这份代码在STC11上稳定运行的,没语句上的毛病,就是接收时序对不上,接收的是错误的
作者: 土豆西红柿    时间: 2020-7-27 15:54
aYong0308 发表于 2020-7-27 15:40
我这份代码在STC11上稳定运行的,没语句上的毛病,就是接收时序对不上,接收的是错误的

那你看一下接收发送脚有没有接错,交换一下试试
作者: aYong0308    时间: 2020-7-27 16:05
土豆西红柿 发表于 2020-7-27 15:54
那你看一下接收发送脚有没有接错,交换一下试试

no no no
作者: aYong0308    时间: 2020-7-28 10:24
感谢大家的回答,解决了,延时减小3倍(6T)或6倍(12T)
作者: 烈火    时间: 2020-7-28 10:27
延时减小3倍效果最好




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1