打印

PIC18F 定时器 :不进中断?

[复制链接]
3936|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
457878|  楼主 | 2012-2-27 10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#pragma config WDTEN = OFF          //WDT disabled (enabled by SWDTEN bit)

#include <timers.h>
#define TRUE  1
#define FALSE 0
#define HIGH 1
#define LOW  0
void main(void)
{
    unsigned char config1=0x00;
    unsigned char config2=0x00;
    unsigned int timer_value=0x00;
//   PIE2bits.TMR3IE=TRUE;  //这段注释掉就不进中断
//  T3CONbits.TMR3ON=TRUE;
config1 = TIMER_INT_ON | T1_16BIT_RW | T1_SOURCE_FOSC | T1_PS_1_1;
config2 = TIMER_GATE_OFF | TIMER_GATE_INT_OFF;
timer_value = 0xffa0;

WriteTimer1(timer_value);
OpenTimer1(config1,config2);

INTCONbits.GIEH=TRUE;
INTCONbits.GIEL=TRUE;
RCONbits.IPEN=TRUE;
   IPR1bits.TMR1IP=TRUE;
   
while(1)
{
  Nop();
}
}
void high_isr (void);
void low_isr (void);
#pragma code high_vector=0x08
void high_vector (void)
{
  _asm goto high_isr _endasm
}
#pragma code low_vector=0x18
void low_vector (void)
{
  _asm goto low_isr _endasm
}

#pragma code
#pragma interrupt high_isr
void high_isr (void)
{
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
}
#pragma interruptlow low_isr
void low_isr (void)
{
Nop();
Nop();
Nop();
Nop();
Nop();
Nop();
}
沙发
457878|  楼主 | 2012-2-27 10:41 | 只看该作者
主要配置(PIC18f26J50):
config1 = TIMER_INT_ON | T1_16BIT_RW | T1_SOURCE_FOSC | T1_PS_1_1;
config2 = TIMER_GATE_OFF | TIMER_GATE_INT_OFF;
timer_value = 0xffa0;

WriteTimer1(timer_value);
OpenTimer1(config1,config2);

使用特权

评论回复
板凳
yewuyi| | 2012-2-27 10:56 | 只看该作者
请#include <PIC.h>并在MPLAB中选择后芯片型号后编译再试试。

使用特权

评论回复
地板
457878|  楼主 | 2012-2-27 11:33 | 只看该作者
已经#include <p18cxxx.h> ,#include "pconfig.h"还是没进,难道是库的Bug?

OpenTimer1函数原型拷出来了:

void OpenTimer1(unsigned char config, unsigned char config1)
{
  T1GCON = (0XF3 & config1);
  T1CON = (0x7F & config) << 1 ;   
  TMR1H=0;             // Clear out timer registers
  TMR1L=0;
  PIR1bits.TMR1IF=0;

  if(config&0x80)      // Enable interrupts if selected
    PIE1bits.TMR1IE=1;
  else
    PIE1bits.TMR1IE=0;

  if(T1GCONbits.TMR1GE)        T1GCONbits.T1GGO = 1;
  T1CONbits.TMR1ON = 1;  // Start Timer1
}

使用特权

评论回复
5
yewuyi| | 2012-2-27 12:26 | 只看该作者
已经#include  ,#include "pconfig.h"还是没进,难道是库的Bug?

OpenTimer1函数原型拷出来了:

void OpenTimer1(unsigned char config, unsigned char config1)
{
  T1GCON = (0XF3 & config1);
  T1CON = (0x7F & ...
457878 发表于 2012-2-27 11:33


在MPLAB中配置了芯片型号没有?

使用特权

评论回复
6
457878|  楼主 | 2012-2-27 13:55 | 只看该作者
MPLAB中 Select device菜单下选的PIC18f26J50.

好像有点发现:仿真时(MPLAB自带的MPLAB SIM),OpenTimer1传入的config值都是0xff !

使用特权

评论回复
7
457878|  楼主 | 2012-2-27 14:17 | 只看该作者
没定义:与,或 操作模式:L

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

270

主题

885

帖子

3

粉丝