标题:
单片机程序无法进入中断是什么问题?
[打印本页]
作者:
a超人
时间:
2018-11-7 07:54
标题:
单片机程序无法进入中断是什么问题?
#include<reg52.h>
sfr P3M0=0XB2;
sfr P3M1=0XB1;
sbit P_out=P3^6;
unsigned int cnt=0;
unsigned char flag1s=0;
void main()
{
//unsigned char sec=0;
EA=1;
TMOD=0X01; //定时1ms
TH0=0XFC;
TL0=0X67;
ET0=1;
TR0=1;
while(1)
{
if(flag1s==1)
{
flag1s=0;
P_out=~P_out; //继电器动作
}
}
}
void interrupttime0() interrupt 1 // 中断函数
{
TH0=0XFC;
TL0=0X67;
cnt++;
if(cnt>=1000)
{
cnt=0;
flag1s=1;
}
}
复制代码
作者:
a超人
时间:
2018-11-7 09:49
是这个芯片 中断无法进去
4.png
(75.36 KB, 下载次数: 33)
下载附件
2018-11-7 09:49 上传
作者:
cuihaodianzi
时间:
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;
}
}
作者:
飞云居士
时间:
2018-11-7 13:22
少开了管总中断的控制位EA=1
作者:
a超人
时间:
2018-11-7 13:23
cuihaodianzi 发表于 2018-11-7 12:38
用这个试一下
#include
问题已经 解决了 谢谢你
作者:
飞云居士
时间:
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
}
作者:
a超人
时间:
2018-11-7 13:24
cuihaodianzi 发表于 2018-11-7 12:38
用这个试一下
#include
是我自己马虎 少写了一段代码
作者:
xuyaqi
时间:
2018-11-7 13:36
你怎么知道不能进入中断,我试可以呀。
作者:
ahshmj
时间:
2018-11-7 14:17
程序都正常,按你的晶振,输出继电器应该是0.5秒闭合0.5秒断开(这么快继电器受不了的,你也没法用继电器控制其他设备啊!)。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1