打印

PIC18F2431定时器的应用

[复制链接]
1741|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
libinxtdj|  楼主 | 2007-9-11 17:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我开了定时器中断,在中断里面去清一个口为0,平时为高!为什么低电平的间隔不一样啊?
代码如下:
#include <p18f2431.h>
#pragma  config OSC = HS    //新的配置字设置方法
#pragma  config PWRTEN = OFF
#pragma  config BOREN = OFF
#pragma  config WDTEN = OFF
#pragma  config LVP = OFF
#pragma  config HPOL=LOW        
#pragma  config LPOL=LOW

//--------------------------------------------------------------------------------------
void intiio(void);
void intit0(void);
void T0_int(void);
void high_isr ();
void T0_int();
//---------------------------------------------------------------------        
//void T0_int(void)
//{
    
//    }
void intiio(void)
{    
    ANSEL0=0X01;
    TRISA=0XFF;
    TRISB=0X00;
    TRISC=0XFF;
    PORTB=0XFF;
}
void inti_interrupt(void)
{
    RCONbits.IPEN=1;
    IPR3=0X0E;
    PIR3=0;
    PIR2=0;
    PIR1=0;
    PIE3=0X1F;
    INTCON=0XC0;
}
void intit0(void)
{
    T0CON=0X44;
    INTCON2bits.TMR0IP=1;//设置为高优先级
    INTCONbits.TMR0IE=1;//使能中断
    INTCONbits.TMR0IF=0;//清除标志位
    TMR0L=0X00;
    T0CONbits.TMR0ON=1;
    }
#pragma code high_vector=0x08 //save=PROD,TBLPTR,TABLAT
void high_interrupt (void) 
{
    _asm GOTO high_isr _endasm
 }

#pragma code

#pragma interrupt high_isr  //save=PROD,TBLPTR,TABLAT
void high_isr (void)
{
    //    T0_int();
    PORTBbits.RB6=0;
    INTCONbits.TMR0IF=0;//清除标志位
    //TMR0L=0X7f;
    TMR0L=0X00;
 }                

void event(void)
{

    PORTBbits.RB6=1;
}    

void main(void)
{
    intiio();//初始化I/O的函数
    inti_interrupt();//初始化中断
    intit0();
    while(1)
    {
        event();
    }
}
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

181

帖子

0

粉丝