打印
[其它应用]

新手定时器问题,谢谢大家!

[复制链接]
634|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
prayin|  楼主 | 2015-11-3 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器3中断程序,不知怎么进不了中断,貌似定时器没有开始计数,请帮忙分析分析,不胜感激!

#include <SH79F166A.H>
/********************************/
/*      系统字节函数定义        */                                                                               
/********************************/
#define              MAKEWORD(v1,v2)               (((Word)(v1)<<8) + (Word)(v2))
#define              HIBYTE(v1)                           ((Byte)((v1)>>8))
#define              LOBYTE(v1)                           ((Byte)((v1)&0xff))

#define       LongToBin(n) \
      (                    \
      ((n >> 21) & 0x80) | \
      ((n >> 18) & 0x40) | \
      ((n >> 15) & 0x20) | \
      ((n >> 12) & 0x10) | \
      ((n >>  9) & 0x08) | \
      ((n >>  6) & 0x04) | \
      ((n >>  3) & 0x02) | \
      ((n      ) & 0x01)   \
      )
#define       Bin(n)                 LongToBin(0x##n##l)        //write binary charactor set,exsample : Bin(11111111) = 0xff

void Init_Foc(void);
void Init_Io(void);
void Init_Timer(void);

unsigned int num=0;

void main(void)
{
        INSCON &= 0xbf;        //进入bank0
        Init_Foc();
        Init_Io();
        Init_Timer();
        EA=1;
        while(1);
}

void Timer3_ISP(void) interrupt 11
{
        INSCON |= 0x40;
        TF3=0;
        TL3=(65536-50000)&0x00ff;
        TH3=((65536-50000)>>8)&0x00ff;
        INSCON &= 0xbf;
        num++;
        if(num==20)
        {
                num=0;
                P1=~P1;
        }       
}

/*******************************************************************************************
** 函数名称: Init_Foc
** 函数描述: OSCXCLK为OSCSCLK
** 输入参数: 无
** 输出参数: 无
*******************************************************************************************/
void Init_Foc(void)
{
        CLKCON = Bin(00001100);        //12M
}

/*******************************************************************************************
** 函数名称: Init_Io
** 函数描述: 初始化IO端口
** 输入参数: 无
** 输出参数: 无
*******************************************************************************************/
void Init_Io(void)
{
        P1   = Bin(00000000);
        P1CR = Bin(11111111); //P1端口为输出模式
}

/*******************************************************************************************
** 函数名称: Timer
** 函数描述: 定时器初始化
** 输入参数: 无
** 输出参数: 无
*******************************************************************************************/
void Init_Timer(void)
{
        INSCON |= 0x40;//进入Bank1
        T3CON = Bin(00000000);
        TL3=(65536-50000)&0x00ff;
        TH3=((65536-50000)>>8)&0x00ff;
        TR3=1;
        IEN1 = Bin(00001000);        //使能定时器3中断
        INSCON &= 0xbf;  //进入Bank0
}
沙发
毁灭2012| | 2015-11-3 22:17 | 只看该作者
定时器初始化再检查下。

使用特权

评论回复
板凳
abslon| | 2015-11-3 23:13 | 只看该作者
EA=1是开全局中断么

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝