打印

PIC16F74使用TMR0做外部脉冲时失掉一些脉冲

[复制链接]
1716|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ORG 0x000
CLRF  PCLATH   
GOTO  MAIN;冗余
;-----------------------
;中断入口向量
;-----------------------
ORG  0X004
PUSH  ;进栈
BANK0
CLRF  PCLATH
GOTO  INTSEV
;-----------------------
;中断服务子程序
;-----------------------
INTSEV NOP  ;中断程序体
BTFSS T0IE ;判断是否允许TMR0外部计数中
GOTO BACK0;允许,则继续判断是否产生中断
BTFSC T0IF ;中断吗?
GOTO INT00
BACK0 BANK0
BCF T0IF ;退出中断
  POP
RETFIE
;-----各个中断处理----
INT00 BANK0;检测过零点,-开启TMR1和设定其初值
BSF RESLED
NOP
MOVLW 0FFH;定时常数
MOVWF TMR0;重新装载TMR00
GOTO BACK0

MAIN BANK1
MOVLW B'00000111'
MOVWF ADCON1

MOVLW  0FFH
MOVWF  TRISA;PORTA

BSF T0CS ;TMR0设置为外部上升沿脉冲计数
BCF T0SE

BSF GIE
BSF T0IE
BCF T0IF

MOVLW 0FFH
MOVWF TMR0 ;TMR0的计数初值

MAIN1 BANK0
CLRWDT
BSF PSA
BCF RESLED
GOTO MAIN1

经测试发现与RA,4脚的外部脉冲周期不一致。丢掉好些个计数脉冲
波形如
蓝色为RESLED
黄色为RA,4脚脉冲。

相关帖子

沙发
weimao228|  楼主 | 2011-3-24 08:16 | 只看该作者
我发现没有人关注帖子,这回悲剧了。等我把问题解决了就可以结帖了。

使用特权

评论回复
板凳
chen3bing| | 2011-3-24 09:16 | 只看该作者
你该发到PIC论坛里去。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
weimao228 + 1
地板
xubx83| | 2011-3-24 09:28 | 只看该作者
试试把外部脉冲的时间加长

使用特权

评论回复
5
weimao228|  楼主 | 2011-3-24 10:46 | 只看该作者
4# xubx83
回4楼,我做的硬件是已有的。我只能写程序进去的。外部脉冲是对正弦交流9V的过零检测脉冲,电源周期。每10ms有一个脉冲。所以外部脉冲改不了。我有尝试将主程序时间进行变化,有发现可以将缺失的脉冲补回来,但没有找到完全不失掉脉冲的方法。

使用特权

评论回复
6
weimao228|  楼主 | 2011-3-24 10:47 | 只看该作者
3# chen3bing
PIC论坛吗?你有推荐的吗?

使用特权

评论回复
7
XIANSir| | 2011-3-24 11:59 | 只看该作者
楼上说的是本论坛的PIC板块

使用特权

评论回复
8
weimao228|  楼主 | 2011-3-24 16:50 | 只看该作者
有说是因为中断一出来就把PORTD,1给清零了,所以看不到脉冲的输出。这也是有道理的哦。

使用特权

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

本版积分规则

0

主题

60

帖子

1

粉丝