2548|0

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STC89C52RC单片机编程求助!!! [复制链接]

本人想编写一个单片机控制气缸的应用程序。气缸上安装有两个行程开关,通过两个行程开关分别接入P1.0和P1.1端;电磁阀接在P2.0和P2.1输出端(2个继电器)上。需要实现的功能:
1、气缸行驶到末端(行程开关1-P1.0)时停止,并延时1秒,然后返回行驶,行驶到起始端(行程开关2-P1.1)时停止,并延时10秒,就这样往复运行。停止时气缸回到原来位置。
我自己编写了两个简单的程序,但是还达不到要求:

第一程序:通过P1.0端口高低电平监测(行程开关的状态),打开或关闭P2.0口继电器。
#include
sbit LED0=P2^0;
sbit PP0=P1^0;
void main()
{
if(PP0==1) LED0=0; else LED0=1;
}

第二个程序是延时5秒程序,切换P2.0口状态
#include
sbit LED0=P2^0;
unsigned char i=0; //ÑÓʱֵÉ趨
void ZD_Init();   
void main()
{
ZD_Init();      
while(1);      
}
void ZD_Init()      
{
EA=1;                     //´ò¿ª×ÜÖжϿª¹Ø
ET0=1;                   //´ò¿ª¶¨Ê±Æ÷0
TR0=1;                   //Æô¶¯¶¨Ê±Æ÷0¹¤×÷
TMOD=0X01;                 //Ñ¡Ôñ¶¨Ê±Æ÷0¹¤×÷ģʽ1£»16λ¶¨Ê±Æ÷
TH0=(65536-50000)/256;       //¶¨Ê±Æ÷0¸ß8λװ³õÖµ£»¶¨Ê±50ºÁÃë
TL0=(65536-50000)%256;        //¶¨Ê±Æ÷0µÍ8λװ³õÖµ£»¶¨Ê±50ºÁÃë
}
void Time0() interrupt 1 using 0   //????
{
TH0=(65536-50000)/256;       //¶¨Ê±Æ÷0¸ß8λÖØ×°³õÖµ
TL0=(65536-50000)%256;       //¶¨Ê±Æ÷0µÍ8λÖØ×°³õÖµ
i++;
if(i==100)                  //ÖжÏ20´ÎΪ1Ã룻ÖжÏ100´ÎΪ5Ãë;ÖжÏ200´ÎΪ10Ã룻
  {
   i=0;
   LED0=~LED0;
  }
}

两个程序单独运行都没有问题。

希望大虾指点下??

20160627_111523.jpg (2.4 MB, 下载次数: 0)

STC89C52RC

STC89C52RC

20160627_111530.jpg (2.53 MB, 下载次数: 0)

两个行程开关

两个行程开关

20160627_111550.jpg (2.03 MB, 下载次数: 0)

电磁阀

电磁阀
此帖出自51单片机论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表