OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4849|回复: 2

51单片机系统,串口(USB)收到1继电器闭合,收到0继电器断开。但用一会就死机了,不动作了。

[复制链接]

5

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-3-11
在线时间
14 小时
发表于 2017-3-30 15:35:18 | 显示全部楼层 |阅读模式
1金钱
51单片机系统,我这个是用到车上的,车上供电是12V,车上有车载电脑,供电也是车载电脑的USB,通信也是这个USB。做的一个刷卡计时系统,刷卡后上位机发一个1,继电器动作,车可以打火,当时间走完,上位机发一个0,继电器断开,车熄火。就这样一个系统,但用着用着就死机了,单片机死机,用串口调试工具发数据也不好用了。我之前用AVR单片机做的没什么问题,一直好用,下面我把原理图还有程序展示出来,系统大家给我提点意见,谢谢。
1、原理图
[img]file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\765605164\QQ\WinTemp\RichOle\UUGOB$[DH6F3B4NHU5XM}M5.png[/img]


2、程序

#include <reg52.h>     //包括一个52标准内核的头文件
#define uchar unsigned char //定义一下方便使用
#define uint  unsigned int
#define ulong unsigned long


uchar flag=0,temp=0;
void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

void main(void)   // 主程序
{      
       
        P0=0X00;
        REN=1;
        TMOD=0x20;    //定时器1,16位工作方式
        TH1=0XFD;
        TL1=0XFD;
        TR1=1;        //启动定时器1
        PCON=0X00;    //SMOD=0
        SCON=0X50;    //工作方式1,波特率9600,允许接收

        ES=1;        //串行口中断
        EA=1;         //打开总中断0       


    while(1)         //程序循环
        {
        if(flag==1)
            {
                 ES=0;
                 flag=0;
                       
                 SBUF=temp;
                 while(!TI);
                 TI=0;
                 ES=1;
            }

        }     
}

//接收中断函数
void ser()  interrupt 4
{
    RI=0;

    temp=SBUF;
    flag=1;
        if(temp==1)   //收到数值为1,P0口输出高,继电器闭合。
       P0=0XFF;
        if(temp==0)//收到数值为0,P0口输出低,继电器断开。
           P0=0X00;

}


file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\765605164\QQ\WinTemp\RichOle\0(SSG8Q%EUWQN6H]2F3L4FC.png

QQ图片20170330153338.png
QQ图片20170330153235.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

37

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
发表于 2017-4-3 16:35:27 | 显示全部楼层
要注意电源隔离呀。对于驱动电机这种问题,一定要与单片机使用不同的电源。感性负载,会使单片机无限复位的
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2017-4-5 18:58:15 | 显示全部楼层
你中断用的有点乱,你也没有别的事,干吗用中断,就在主循环里看着串口就行,动作完后再初始化一遍串口,另外别用AT的89C52抗干扰太差,换STC的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 22:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表