一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 3888|回复: 20
收起左侧

[51单片机] STC15F104E中断PWM解码求解

[复制链接]
发表于 2014-6-28 09:29 | 显示全部楼层 |阅读模式
本帖最后由 山水2000 于 2014-6-28 09:36 编辑

我做了一个跟据PWM宽度来解码的程序,设计在800uS PWM时解码,但800uS时无法解码,而是800uS的2倍1600uS时解码成功,不明求解,谢谢。

脉宽在800uS是无法反转,而在它的2倍1600uS时才能返转,不明白什么原因,
https://www.yleee.com.cn/forum.php?mod=image&aid=216513&size=300x300&key=c69ae6a5042337cf&nocache=yes&type=fixnone

1.6mS是才能解码,800uS时无法解码,不明白为什么是原来的2倍才能解码成功

1.6mS是才能解码,800uS时无法解码,不明白为什么是原来的2倍才能解码成功


程序如下,汇编的,我只会一点点汇编,C的不懂。
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC15F104E  T0扩展为外部下降沿中断举例--------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-755-82905966 -------------------------------------------*/
/* --- Tel: 86-755-82948412 -------------------------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* 如果要在文章中应用此代码,请在文章中注明使用了宏晶科技的资料及程序   */
/*---------------------------------------------------------------------*/

//本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//芯片的工作频率为10.0592MHz

AUXR        DATA    08EH        //辅助寄存器

;-----------------------------------------------------

    ORG   0000H
    LJMP  MAIN                  //复位入口

    ORG   000BH                 //中断入口
    LJMP  T0INT

;------------------------开始-------------------------

    ORG   0100H
MAIN:
    MOV   SP,#3FH

    MOV   AUXR,#80H             //定时器0为1T模式
    MOV   TMOD,#04H             //设置定时器0为16位自动重装载外部记数模式
    MOV   A,#0FFH               //设置定时器0初始值
    MOV   TL0,A
    MOV   TH0,A
    SETB  TR0                   //定时器0开始工作
    SETB  ET0                   //开定时器0中断

    SETB  EA

    SJMP  $

;----------------------PWM检测------------------------
//中断服务程序

;----------------------PWM大于800uS-------------------
T0INT:
    CALL DELAY            //调用800uS延时,检测小于800uS PWM信号

    JB  P3.4,LM           //(高电平转移)小于800uS 就跳转到下一程序则行


    CPL  P3.0
    CLR  P3.1
    RETI
;----------------------PWM小于800uS-------------------
LM:                       //(小于800uS)运行程序
    CLR   P3.0
    CPL   P3.1                  //将测试口取反

    RETI

;------------------------延时-------------------------

DELAY:

DELAY800US:   ;误差 -0.032552083333us
    MOV R6,#84H
DL0:
    MOV R5,#20H
    DJNZ R5,$
    DJNZ R6,DL0
    RET


;------------------------结束-------------------------

    END

2.115mS_20.084mS.JPG





发表于 2014-6-28 09:40 | 显示全部楼层
这单片机外部中断有BUG,最好别用
 楼主| 发表于 2014-6-28 09:44 | 显示全部楼层
benli 发表于 2014-6-28 09:40
这单片机外部中断有BUG,最好别用

是吗,还想着它简单好用呢,我只要是玩玩,不是应用于产品上的,不过BUG也不能用啊。谢了。
发表于 2014-6-28 09:47 | 显示全部楼层
山水2000 发表于 2014-6-28 09:44
是吗,还想着它简单好用呢,我只要是玩玩,不是应用于产品上的,不过BUG也不能用啊。谢了。

换104W吧!104E的外部中断有BUG,尽量不要用104E的外部中断,
 楼主| 发表于 2014-6-28 09:58 | 显示全部楼层
benli 发表于 2014-6-28 09:47
换104W吧!104E的外部中断有BUG,尽量不要用104E的外部中断,

哦,好的,这800不转1600转就是bug的问题吗,帮我看看程序有没有问题,谢谢。
发表于 2014-6-28 10:02 | 显示全部楼层
不懂汇编,104E的外部中断有BUG,PDF文档中有说明,换104W,104W的外部中断问题解决了可好像还有其他什么问题,具体的忘记了,你自已看看PDF吧
发表于 2014-6-28 10:09 | 显示全部楼层
本帖最后由 benli 于 2014-6-28 10:11 编辑
山水2000 发表于 2014-6-28 09:58
哦,好的,这800不转1600转就是bug的问题吗,帮我看看程序有没有问题,谢谢。


不懂汇编…………
 楼主| 发表于 2014-6-28 10:15 | 显示全部楼层
ain365 发表于 2014-6-28 10:02
不懂汇编,104E的外部中断有BUG,PDF文档中有说明,换104W,104W的外部中断问题解决了可好像还有其他什么问 ...

看来STC也不是很好啊,只是下载程序方便,
 楼主| 发表于 2014-6-28 10:16 | 显示全部楼层
benli 发表于 2014-6-28 10:09
不懂汇编…………

呵呵,没事,看看有没有懂汇编的进来指点指点。
发表于 2014-6-28 11:40 | 显示全部楼层
换STM8S103吧,同样不到2元.同样可以串口下载.

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-21 01:57 , Processed in 0.067579 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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