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

[复制链接]
2862|8
 楼主| weimao228 发表于 2011-3-23 11:46 | 显示全部楼层 |阅读模式
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 | 显示全部楼层
试试把外部脉冲的时间加长
 楼主| weimao228 发表于 2011-3-24 10:46 | 显示全部楼层
4# xubx83
回4楼,我做的硬件是已有的。我只能写程序进去的。外部脉冲是对正弦交流9V的过零检测脉冲,电源周期。每10ms有一个脉冲。所以外部脉冲改不了。我有尝试将主程序时间进行变化,有发现可以将缺失的脉冲补回来,但没有找到完全不失掉脉冲的方法。
 楼主| weimao228 发表于 2011-3-24 10:47 | 显示全部楼层
3# chen3bing
PIC论坛吗?你有推荐的吗?
XIANSir 发表于 2011-3-24 11:59 | 显示全部楼层
楼上说的是本论坛的PIC板块
 楼主| weimao228 发表于 2011-3-24 16:50 | 显示全部楼层
有说是因为中断一出来就把PORTD,1给清零了,所以看不到脉冲的输出。这也是有道理的哦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

60

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部