完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
最近碰到一个有趣的问题,想用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在中断里也是能正常的闪烁,真是奇了怪了,管脚的配置都没有问题,就是不能亮~ 希望大神来解释一下这种现象。 |
|
相关推荐
12个回答
|
|
云汉达人
本帖最后由 LiuYang 于 2016-6-20 15:26 编辑 根据描述的现象,怀疑是不是程序跑飞了,默认LED2是0,然后程序赋值LED2变成1才亮的。LED1没有操作所以没有变化,也就是说TIMER的中断没有起作用。设置断点跟踪一下就知道了。 |
|
|
|
LiuYang 发表于 2016-6-20 15:19 我觉得不是跑飞了,LED2是能正常翻转闪烁的,而且通过PIC Kit3的debug模式是可以看到进入了中断的~ |
|
|
|
SingleYork 发表于 2016-6-20 20:07 把ANSELC设为0x00后,RC0确实是可以正常的翻转闪烁了,但是为啥同时开几个LED的时候,LED1才能正常工作,而且: |
|
|
|
楼主在实践中碰到了挺多有意思的问题啊,支持一下~
|
|
|
|
云汉达人
追梦的阿土哥 发表于 2016-6-20 20:59 没用过这款单片机,不敢乱评论,楼主仔细看下手册吧,呵呵…… |
|
|
|
查了下手册, 楼主可以试试将LED1=!LED1改成LATC^=0x01试试~
|
|
|
|
求高手解决
|
|
|
|
|
|
|
|
|
|
|
|
支持一下,期待大神的解答~
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
791 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2710 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1070浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 15:19 , Processed in 1.370513 second(s), Total 101, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号