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

共12条 1/2 1 2 跳转至

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

助工
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 15:06:32     打赏
2楼

你这个程序,低电平中断,肉眼观察灯一直常量状态,你加断点试过了吗?其它中断你也没开啊!


助工
2009-12-08 16:19:21     打赏
3楼
在PMR2 寄存器中需要将相应的io口设置成外部中断。并且我们的单片机没有P3口和定时器2,不知楼主的程序从哪里copy来的。

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

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


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

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


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

#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 09:36:45     打赏
7楼

PMR2在手册41页,您可以参照例程 test_standby_lcd 对寄存器进行设置。


助工
2009-12-09 12:29:23     打赏
8楼
定时器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     打赏
9楼
再说我用的定时4,跟0,1无关,请说明下,在线等

菜鸟
2009-12-09 15:21:40     打赏
10楼
图3.13 PMR2 寄存器
第四部分 定时器 Revision 1.02 北京时代民芯科技有限公司
Revision date 2009.4 40 www.mxtronics.com
4.1 概述
MXT8051F04A有两个独立的可编程定时器,这些定时器可以测量脉冲宽度、以及产生周期性的中断信号。定时器共有四种工作方式,方式0 为十三位定时器方式,定时器溢出时置位溢出标志TF0或TF1,在中断允许时产生中断。方式1以十六位定时器方式工作,除此之外和方式0 一样。方式2 为 8 位自动重装工作方式。定时器的低8 位(TL0或TL1)用来计数,高8 位(TH0或TH1)用来存放重装数值。当定时器溢出时,TH 中的数值被装入TL中。定时器0 和

共12条 1/2 1 2 跳转至

回复

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