找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4214|回复: 8
打印 上一主题 下一主题
收起左侧

单片机程序无法进入中断是什么问题?

[复制链接]
跳转到指定楼层
楼主
  1. #include<reg52.h>

  2. sfr P3M0=0XB2;
  3. sfr P3M1=0XB1;
  4. sbit P_out=P3^6;
  5. unsigned int cnt=0;
  6. unsigned char flag1s=0;

  7. void main()
  8. {

  9. //unsigned char sec=0;
  10. EA=1;
  11. TMOD=0X01;          //定时1ms
  12. TH0=0XFC;
  13. TL0=0X67;
  14. ET0=1;
  15. TR0=1;
  16. while(1)
  17. {
  18.    if(flag1s==1)
  19.    {
  20.           flag1s=0;         
  21.           P_out=~P_out;          //继电器动作
  22.          
  23.    }
  24. }
  25. }
  26. void interrupttime0() interrupt 1 //  中断函数
  27. {
  28.     TH0=0XFC;
  29.         TL0=0X67;
  30.         cnt++;
  31.         if(cnt>=1000)
  32.         {
  33.             cnt=0;
  34.                 flag1s=1;
  35.         }
  36. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:418482 发表于 2018-11-7 09:49 | 只看该作者
是这个芯片 中断无法进去

4.png (75.36 KB, 下载次数: 23)

4.png
回复

使用道具 举报

板凳
ID:149144 发表于 2018-11-7 12:38 | 只看该作者
用这个试一下
#include <reg52.h>

sfr P3M0=0XB2;
sfr P3M1=0XB1;
sfr AUXR = 0x8E;
sbit P_out=P3^6;
unsigned int cnt=0;
unsigned char flag1s=0;

void main()
{

//unsigned char sec=0;
  EA=1;
  AUXR &= 0x7F;               
TMOD &= 0xF0;               
TMOD |= 0x01;       
TH0 = 0xB8;       
TL0 = 0x00;       
TF0 = 0;               
TR0 = 1;               
while(1)
{
   if(flag1s==1)
   {
                flag1s=0;         
                P_out=~P_out;          //继电器动作
                P0=0;
   }
}
}
void interrupttime0() interrupt 1 //  中断函数
{
  TH0 = 0xB8;       
        TL0 = 0x00;
      
        cnt++;
        if(cnt>=1000)
        {
                        cnt=0;
                        flag1s=1;
        }
}
回复

使用道具 举报

地板
ID:404160 发表于 2018-11-7 13:22 | 只看该作者
少开了管总中断的控制位EA=1
回复

使用道具 举报

5#
ID:418482 发表于 2018-11-7 13:23 | 只看该作者
cuihaodianzi 发表于 2018-11-7 12:38
用这个试一下
#include

问题已经 解决了 谢谢你
回复

使用道具 举报

6#
ID:404160 发表于 2018-11-7 13:23 | 只看该作者
main()程序里,少个 EA= 1的语句。
void main()
{
    TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
    TL0 = T1MS;                     //initial timer0 low byte
    TH0 = T1MS >> 8;                //initial timer0 high byte
    TR0 = 1;                        //timer0 start running
    ET0 = 1;                        //enable timer0 interrupt
    EA = 1;                         //open global interrupt switch
    count = 0;                      //initial counter

    while (1);                      //loop
}

回复

使用道具 举报

7#
ID:418482 发表于 2018-11-7 13:24 | 只看该作者
cuihaodianzi 发表于 2018-11-7 12:38
用这个试一下
#include

是我自己马虎  少写了一段代码
回复

使用道具 举报

8#
ID:94031 发表于 2018-11-7 13:36 | 只看该作者
你怎么知道不能进入中断,我试可以呀。
回复

使用道具 举报

9#
ID:7485 发表于 2018-11-7 14:17 | 只看该作者
程序都正常,按你的晶振,输出继电器应该是0.5秒闭合0.5秒断开(这么快继电器受不了的,你也没法用继电器控制其他设备啊!)。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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