大虾们,帮帮忙吧!

ljp410180223 2011-08-03 03:25:09
使用STC89C52外部中断的下降沿触发方式来计数(测齿轮的转动的圈数),外部脉冲快慢不一样时,计数结果偏差比较大,请问有什么好的解决方式吗?大虾们,帮帮忙吧!急啊!!!!源程序如下:
#include<reg52.h>
sbit fang_xing1=P2^1;
sbit fang_xing2=P2^3;
sbit fang_xing3=P2^5;
sbit sha_che1=P2^0;
sbit sha_che2=P2^2;
sbit sha_che3=P2^4;
sbit c1=P1^0;
sbit c2=P1^1;
sbit c3=P1^2;
int h1=0,h2=0,h3=0,z1=0,z2=0,z3=0,link=0,n1=0,n2=0,n3=0;
int a[20]={0,0,0,0,0,0,0,0,0,0,0,0};

/******************************************************************/
/* 主函数 */
/******************************************************************/
void main ()
{

for(n1=1;n1<1000;n1++){
for(link=1;link<500;link++){
sha_che1=0;fang_xing1=0;
sha_che2=0;fang_xing2=0;
sha_che3=0;fang_xing3=0;
}}
n1=0;
link=0;
TMOD=0x26;
TL1=0xfd;
TH1=0xfd;

TL0=0xff;
TH0=0xff;
TR0=1;
TR1=1;
IT0=1;
IT1=1;
SCON=0x50;
ES=1;
ET1=1;
ET0=1;
EX1=1;
EX0=1;
EA=1;
z1=a[0]*1000+a[1]*100+a[2]*10+a[3]*1;
z2=a[4]*1000+a[5]*100+a[6]*10+a[7]*1;
z3=a[8]*1000+a[9]*100+a[10]*10+a[11]*1;
while(1) {
if(n1<2) c1=1;
if(n1>2) c1=0;
if(n1>=10)n1=0;

if(n2<2) c2=1;
if(n2>2) c2=0;
if(n2>=10)n2=0;

if(n3<4) c3=1;
if(n3>4) c3=0;
if(n3>=11) n3=0;

if(link==12){
z1=a[0]*1000+a[1]*100+a[2]*10+a[3]*1;
z2=a[4]*1000+a[5]*100+a[6]*10+a[7]*1;
z3=a[8]*1000+a[9]*100+a[10]*10+a[11]*1;
link=0;}
if(link==0){
if(h1<z1){sha_che1=0;fang_xing1=1;}
if(h1>z1){sha_che1=0;fang_xing1=0;}
if(h2<z2){sha_che2=0;fang_xing2=1;}
if(h2>z2){sha_che2=0;fang_xing2=0;}
if(h3<z3){sha_che3=0;fang_xing3=1;}
if(h3>z3){sha_che3=0;fang_xing3=0;}
if(h1==z1){sha_che1=1;}
if(h2==z2){sha_che2=1;}
if(h3==z3){sha_che3=1;}
}
n1++;
n2++;
n3++;
}

}
/*********************************************************************/
IN0() interrupt 0 using 1
{EA=0;
if(fang_xing1==1){h1++;}
if(fang_xing1==0){h1--;}
if(h1==z1){sha_che1=1;}
IE0=0;
EA=1;
}
/******************************************************************************************/
IN1() interrupt 2 using 2
{
EA=0;
if(fang_xing2==1){h2++;}
if(fang_xing2==0){h2--;}
if(h2==z2){sha_che2=1;}
IE1=0;
EA=1;
}
/**********************************************************************************************************************/
Time() interrupt 1 using 1
{
EA=0;
if(fang_xing3==1){h3++;}
if(fang_xing3==0){h3--;}
if(h3==z3){sha_che3=1;}
TF0=0;
EA=1;
}

/******************************************************************/
/* 串口中断程序 */
/******************************************************************/
void UART_SER () interrupt 4 using 3//串行中断服务程序
{ unsigned char k;
EA=0;
if(RI)
{
RI=0;
k=SBUF;
SBUF=k;
while(TI==0);
TI=0;
a[link]=k-48;
++link;
}
EA=1;
}
...全文
38 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohei1757 2011-08-03
  • 打赏
  • 举报
回复
对外部脉冲进行光电耦合
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979
笔试(erp系统管理员)题目 求解 偶乃一应届毕业生,上星期在网上见到一不错的公司招oracle数据库管理,于是屁颠屁颠跑到那公司,骗过门卫和保安,咨询了搞卫生的阿姨后,见到了人力资源部主管,话都没说上两句,给偶一道题目(erp系统管理员),结果没几个会做的。其实我自己也挺想往erp方向发展,所以打算下个星期再去。 请各位大虾忙,提点提点。(我在论坛上查了些,资料,还是有好多不会的。) 1。列出 erp供应商及erp产品的名称,版本? (erp供应商是不是:racle erp在咱国内的用户比如,华菱、湘钢、衡钢、承 钢、济钢等等。名称和版本呢?) 2。名词解释 erp,crm,hr,oa,srm,pdm (我只查到了erp,crm,hr的解释,其他的查不到) 3。用一句话说明 bom,采购计划,生产订单,销售订单,物料清单 (查不到 ) 4。写sql语句。 ‘存货档案’(表一): 存货编码(c),存货名称(c),存货规格(c),存货类别(c) ‘发货单’(表二):存货编码(c),数量(n),单价(n) 用sql写出 A:存货类别为'办公用品',发货金额在1000元以下的所有发货单 B: 按存货名称汇总发货单的发货金额 (此题会做一点点,但是写得不全,还得请大家指导) 5 写出erp系统对'销售发货单',‘销售普通发票’生成的会计分录 (完全摸不着头脑)

27,377

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧