中断跳不出来了,大神帮忙

2019-03-24 17:07发布

#include<reg52.h>       
#define uint unsigned int
#define uchar unsigned char

sbit IN1=P3^1;//接IN1 控制正转
sbit IN2=P3^2;//接IN2 控制反转
sbit IN3=P3^3;
sbit IN4=P3^4;

sbit ENA=P3^5;          //使能
sbit ENB=P3^6;

uchar time;

void head();
void stop();
void configpwm();

void main()
{
        configpwm();  /*   执行完这两条程序就执行不了下面stop这一步,
        head();              根本停不下来,要怎么改一下,求助                */
        stop();
}
void configpwm()
{
       TMOD=0x01;//定时器0工作方式1
       TH0=0xff;//(65536-200)/256;//赋初值定时
       TL0=0xf7;//(65536-200)%256;//0.2ms
       EA=1;//开总中断
       ET0=1;//开定时器0中断
       TR0=1;//启动定时器0
       
}

void timer0() interrupt 1
{
       TR0=0;//赋初值时,关闭定时器
       TH0=0xff;//(65536-200)/256;//赋初值定时         +
       TL0=0xf7;//(65536-200)%256;//0.2ms
       TR0=1;//打开定时器
           time++;
       if(time>=100) time=0;//50hz
       if(time<=80)
           {
            ENA=0; //占空比20%
                ENB=0;
           }
       else
           {
                ENA=1;
                ENB=1;
           }
}
void head(uint i)
{
                 IN1=1;          //正转   前
                IN2=0;
                IN3=0;          
                IN4=1;
}
void stop()
{
        IN1=0;
        IN2=0;
        IN3=0;
        IN4=0;
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
ddllxxrr
1楼-- · 2019-03-25 10:18
shijizai 发表于 2018-1-25 12:36
void timer0() interrupt 1
{
       TR0=0;//赋初值时,关闭定时器
       TH0=0xff;//(65536-200)/2 ...

YES
shijizai
2楼-- · 2019-03-25 12:04
 精彩回答 2  元偷偷看……
ddllxxrr
3楼-- · 2019-03-25 12:18
shijizai 发表于 2018-1-25 12:53
然后就可以了么?我试试, 还要改什么吗?

TH0=0xff;//(65536-200)/256;//赋初值定时         +
       TL0=0xf7;//(65536-200)%256;//0.2ms


这句定时有点短,不行你改长试试,好用后再改个合适值
shijizai
4楼-- · 2019-03-25 15:22
ddllxxrr 发表于 2018-1-25 12:49
YES

还是跳不出来,
chenbingjy
5楼-- · 2019-03-25 18:06
 精彩回答 2  元偷偷看……
ddllxxrr
6楼-- · 2019-03-25 19:16
本帖最后由 ddllxxrr 于 2018-1-25 14:01 编辑

void timer0() interrupt 1
{
      TF0 = 0;
  TR0=0;//赋初值时,关闭定时器
       TH0=0xff;//(65536-200)/256;//赋初值定时         +
       TL0=0x00;//(65536-200)%256;//0.2ms
      
           time++;
       if(time>=100) time=0;//50hz
       if(time<=80)
           {
            ENA=0; //占空比20%
                ENB=0;
           }
       else
           {
                ENA=1;
                ENB=1;
           }
           TR0=1;//打开定时器
}


你把这段程序考贝一下看好用不,好用再改

一周热门 更多>