这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 合作大赛 » 我的五个中断一个都进不去,大家怎么样啊?

共7条 1/1 1 跳转至

我的五个中断一个都进不去,大家怎么样啊?

助工
2009-12-07 20:57:49     打赏

#include "REG8051.h"

#define uchar unsigned char
#define uint unsigned int


sbit a0=P0^0;     /* course signal */
sbit a1=P0^1;
sbit alarmplus = P2^4;
sbit LED1=P0^5;
sbit LED2=P0^6;
sbit LED3=P0^7;

bit overflag = 0;
bit FINT0;
bit FINT1;
bit FT0;
bit FT1;
bit FT2;
//bit dd;
//bit dd2;
void main()
{
    PCR0=0xFF;
    PUCR0=0xFF;
    P0=0xFF;
   
    PCR2=0x00;
 PUCR2=0xFF;
 P2=0x00;
 
    LED1 = 0; 
 
 PUCR2=0x00;
 P2=0x00; 


    PCON|=0x02;     /* 使能外部时钟 */
 
    EA=1;
    EX0 =1;
 IT0=0;              // INT0低电平触发(为1则为下降沿触发)
    EX1 = 1;
 IT1 = 1;
 
 IEIP = 0x07;
    EXADF = 0x15;
      
 while(1)
 {
 

 }
  
}

//INT0中断  由P3.2引脚产生
void int_0() interrupt 0 using 0
{
    FINT0=1;
 LED1= ~LED1;
}
//-------------------------------------------------------------------
//INT1中断  由P3.3引脚产生
void int_1() interrupt 2 using 1
{
 FINT1=1;
 LED1= ~LED1;
}
//-------------------------------------------------------------------
//定时器0中断
void timer_0() interrupt 1 using 2
{
 FT0=1;
 LED1= ~LED1;
}
//-------------------------------------------------------------------
//定时器1中断
void timer_1() interrupt 3 using 3
{
 FT1=1;
 LED1= ~LED1;
}
//-------------------------------------------------------------------
//串行中断1
void serial_1() interrupt 4
{

}
//-------------------------------------------------------------------
//定时器2中断
void timer_2() interrupt 5
{
 FT2=1;
 LED1= ~LED1;
}
//-------------------------------------------------------------------

//void int0_int() interrupt 0 using 1
//{
//    TR1 = 1;
//}

//void int1_int() interrupt 1 using 1
//{
//    TR1 = 1;
//}
void int4_int() interrupt 9 using 1
{
     LED1= ~LED1;
}




关键词: 我的     五个     中断     一个     进不去     大家     怎么样    

助工
2009-12-08 18:28:27     打赏
2楼

我知道没P3这是在十在不好用的前提下我从我的例子考过来的,遇到问题解决问题,即使没P3我的程序是外部中断的啊,应进的


助工
2009-12-08 18:35:26     打赏
3楼

奇怪了我找遍了手册,怎么也没找到PMR2寄存器唉


助工
2009-12-08 19:00:46     打赏
4楼

#include "REG8051.h"

#define uchar unsigned char
#define uint unsigned int


sbit a0=P0^0;     /* course signal */
sbit a1=P0^1;
sbit alarmplus = P2^4;
sbit LED1=P0^5;
sbit LED2=P0^6;
sbit LED3=P0^7;

bit overflag = 0;
bit FINT0;
bit FINT1;
bit FT0;
bit FT1;
bit FT2;
//bit dd;
//bit dd2;
void main()
{
    PCR0=0xFF;
    PUCR0=0xFF;
    P0=0xFF;
   
    PCR2=0x00;
 PUCR2=0xFF;
 P2=0x00;
 PUCR2=0xFF;
 P2=0x00;
   
 
 LED1 = 0; 
 

 

    PCON|=0x02;     /* 使能外部时钟 */
 
    EA=1;
    EX0 =1;
 IT0=0;              // INT0低电平触发(为1则为下降沿触发)
    EX1 = 1;
 IT1 = 1;
 
   EX2 = 1;
   EX3 = 1;
   EX4 = 1;

  
 IEIP = 0x07;
    //EXADF = 0x15;
      
 while(1)
 {
 

 }
  
}


void int0_int() interrupt 1 using 1
{
     LED1= ~LED1;
}

void int1_int() interrupt 3 using 1
{
     LED1= ~LED1;
}
void int4_int() interrupt 9 using 1
{
     LED1= ~LED1;
}


我把我考贝的去掉再整理一下,为什么来进不去一个中断呢?麻烦 mxtronics看下


助工
2009-12-09 12:29:23     打赏
5楼
定时器1 在方式2时是同样的。但定时器1 常用此方式来产生波特率, 当定时器1用此方式来产生波特率时可选择主时钟2分频作为定时时钟,此时定时溢出不产生中断。方式3 时,定时器0 成为两个8 位定时器(TH0 和TL0)。TH0 对应于定时器1的控制位和溢出标志位,而TL0占据了定时器0的控制位和溢出标志位。这样定时器1 将不能产生溢出中断。方式3的工作方式与方式0和方式1的操作方式相同。当定时器1 设置为工作方式3 时将停止工作。
4.2 寄存器
定时器共有6个寄存器,它们分别是TMOD,TCON,TH0,TL0,TH1,TL1。下面详细描述。 R/WR/WR/WR/WR/WR/WR/WR/Wbit7bit6bit5bit4bit3bit2bit1bit0复位值:00000000地址:0x8Abit7-0:定时器0低8位。图4.1 TL0 定时器0低8位寄存器 R/WR/WR/WR/WR/WR/WR/WR/Wbit7bit6bit5bit4bit3bit2bit1bit0复位值:00000000地址:0x8Cbit7-0:定时器0高8位。图4.2 TH0 定时器0高8位寄存器 Revision 1.02 北京时代民芯科技有限公司
Revision date 2009.4 41 www.mxtronics.com


这是我的41页,怎么连个影子都没看见

助工
2009-12-09 12:30:43     打赏
6楼
再说我用的定时4,跟0,1无关,请说明下,在线等

助工
2009-12-09 18:29:42     打赏
7楼

问题解决,愿我没好好看,谢谢,楼上两位工程师哈,加上
PMR2=0xFF;就好了,谢谢


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]