找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4910|回复: 3
打印 上一主题 下一主题
收起左侧

求大神帮我看下为什么定时器1进不去中断

[复制链接]
跳转到指定楼层
楼主
ID:163125 发表于 2017-4-6 15:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神帮我看下,STC15w408as,这样写的程序led灯根本就不亮,interrupt 3该成interrupt 1就好用,已经调试好几天了,还是没有办法,跪求!!

#include <reg52.h>
sfr P5=0xC8;
sfr AUXR=0x8e;     //串口辅助寄存器
sbit LCD_RST=P2^0;
sbit LCD_CE=P2^1;
sbit LCD_DC=P2^2;
sbit relay2=P2^3;
sbit scl=P2^4;    //iic时钟信号口
sbit sda=P2^5;    //iic数据信号口
sbit CS5460_reset=P2^6;
sbit beep = P2 ^ 7;
sbit key1 = P5 ^ 4;
sbit key2=P3^1;
sbit Int0=P3^2;          //时钟中断信号口
sbit Int1=P3^3;          //能量中断口
sbit key3=P3^6;
sbit key4=P3^7;
sbit CS5460_CS=P1^2;
sbit LEDb=P1^6;
sbit LEDr=P1^7;
sbit relay=P5^5;
sbit BL=P1^0;
sbit dian=P3^2;
void tm1_isr() interrupt 3
{
   LEDr=!LEDr;
}  
void main ()
{
   EA=1;                                         //总中断打开
//  INT_CLKO=0x10;         //INT2 INT3中断允许
    AUXR = 0x01;                //定时器时钟1T模式
        TMOD = 0x00;           //设置定时器为模式0(16位自动重装载)
        TF0=0;TF1=0;                                //清除TF1标志                         //T0计数器
//        TL0 = 0xcd;   
        TL1 = 0xcd;
//        TH0 = 0xd4;        
        TH1 = 0xd4;      //T0装数        
//        ET0 = 1;   
        ET1 = 1;             //使能定时器0中
//        TR0 = 1;   
        TR1 = 1;
        key1=1;key2=1;
  beep=1;LEDb=0;LEDr=0;     
        while(1);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:185795 发表于 2017-4-6 15:49 | 只看该作者
那个时钟的程序不是应该写在另外的函数里面,而不是main函数里面吗?
就像这个最简单的时钟程序一样,你看看能不能帮到你
#include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

sbit led=P2^0;         //定义P20口是led


/*******************************************************************************
* 函 数 名         : Timer0Init
* 函数功能                   : 定时器0初始化
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer0Init()
{
        TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。

        TH0=0XFC;        //给定时器赋初值,定时1ms
        TL0=0X18;       
        ET0=1;//打开定时器0中断允许
        EA=1;//打开总中断
        TR0=1;//打开定时器                       
}

void main()
{       
        Timer0Init();  //定时器0初始化
        while(1);               
}

/*******************************************************************************
* 函 数 名         : void Timer0() interrupt 1
* 函数功能                   : 定时器0中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void Timer0() interrupt 1
{
        static u16 i;
        TH0=0XFC;        //给定时器赋初值,定时1ms
        TL0=0X18;
        i++;
        if(i==1000)
        {
                i=0;
                led=~led;       
        }       
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:146949 发表于 2017-4-6 16:19 | 只看该作者
void tm0_isr() interrupt 1 using 1
void tm1_isr() interrupt 3 using 1
void t2int() interrupt 12
STC15W408AS只有T0和T2定时器,“void tm1_isr() interrupt 3”这是T1定时器,硬件没有T1所以不会运行。
回复

使用道具 举报

地板
ID:123289 发表于 2017-4-6 19:08 | 只看该作者
通用法则:
1、研读IC手册,查证IC有无此功能。
2、调试运行程序时,中断一下,查证相关寄存器中的数据是否满足手册上所注明该项功能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表