PIC单片机论坛
直播中

追梦的阿土哥

9年用户 95经验值
擅长:电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 模拟技术 EDA/IC设计 接口/总线/驱动 控制/MCU
私信 关注
[问答]

定时器1点个灯也这么难?

     最近碰到一个有趣的问题,想用PIC16F1828的定时器1来简单的记个时,到时间后让一个小灯翻转亮起来,现在问题就出现在这个小灯上~#include
__CONFIG(0x0182);
__CONFIG(0x38ff);
#define uint  unsigned int
#define uchar unsigned char
#define LED1 RC0
#define LED2 RC5
#define LED_TRI TRISC=0x00

void interrupt tmer1(void);

char data1,data0,data2;

void main()
{
  LED_TRI;    //设灯的管脚为输出模式
  GIE=1;    //开总中断
  PEIE=1;   //开外部中断

  TMR1IE=1;   //开定时器1中断
  TMR1GIE=0;   //关定时器1门控中断
  TMR1IF=0;     //清除定时器1标志位
  TMR1GIF=0;
  TMR1H=0x3C;
  TMR1L=0xAF;
  T1CON=0x01;   //开定时器1
  T1GCON=0x00;

  data1=0;
  LED2=1;

  while(1);
}

void interrupt tmer1(void)
{
   if(TMR1IF==1)
    {
       TMR1IF=0;
       TMR1H=0x3C;
       TMR1L=0xAF;
       data1++;

       if(data1==0x28)
       {
         data1=0;
         data2++;
         LED1=!LED1;
         LED2=!LED2;
       }
    }
}


      现在的现象是到时间后,LED2能正常的翻转闪烁,但是LED1却不能,感觉就是执行到那里后,直接跳过去了。LED1单独测试时没有问题的,如果把LED2放到while(1)里面翻转闪烁,LED1在中断里也是能正常的闪烁,真是奇了怪了,管脚的配置都没有问题,就是不能亮~
      希望大神来解释一下这种现象。
已退回9积分

回帖(8)

优特尔锡膏厂家

2016-6-20 15:20:04
不太懂,学习下,等楼下答案!
举报

duoluoxiaosheng

2016-6-30 11:55:42
除了LED2赋值了,LED1没有赋值,其他也看不出什么问题来,等楼下
举报

郑利

2016-9-9 10:42:54
引用: duoluoxiaosheng 发表于 2016-6-30 11:55
除了LED2赋值了,LED1没有赋值,其他也看不出什么问题来,等楼下

默认赋值0,翻转还是可以  
举报

何健飞

2016-9-9 11:00:07
可以试下加点延迟以后再赋值
举报

郑利

2016-9-9 13:52:12
几个月过去了,不知道楼主 解决了,找到问题了吗
举报

追梦的阿土哥

2016-10-7 20:02:20
引用: 恒河水菩提叶 发表于 2016-9-9 13:52
几个月过去了,不知道楼主 解决了,找到问题了吗

并没有,后来就没继续追下去了,可能跟使用的板子有关,毕竟用的是自己焊的电路板~
举报

尹会胜

2017-3-30 20:38:05

除了LED2赋值了,LED1没有赋值,其他也看不出什么问题来,
举报

颜生

2017-9-30 09:01:05
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

更多回帖

发帖
×
20
完善资料,
赚取积分