找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1837|回复: 1
打印 上一主题 下一主题
收起左侧

有没有大神帮我看看这个测脉冲宽度的程序哪里不对

[复制链接]
跳转到指定楼层
楼主
ID:165754 发表于 2017-3-14 10:01 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
        #include <reg51.h>        //包含51单片机寄存器定义的头文件
        #define off 1                  //高电平时为关闭状态
        #define on 0                        //低电平时为开启状态
        sbit XPRET = P1^7;                          //信号输入口定义
        sbit DJDW = P1^6;
        sbit LED10 = P1^5;                   //指示灯输出口定义
        sbit LED11 = P1^4;
        //sbit LED12 = P3^7;                   //跳变时序指示灯,亮为不正常
        unsigned char jishi;                   //记录有多少个0.05s
        void main()
        {
        //unsigned char tmp = 0;          //用于检测时序
        LED10=LED11=off;       //熄灭灯
        jishi = 0;                       //0.05s计时赋零
        TMOD = 0x01;                  // 设T0位方式1,GATE=0   模拟寄存器
        TH0 = (65536-50000)/256;     //        高八位
        TL0 = (65536-50000)%256;     //        低八位
        TR0 = 0;                      //         关闭计时器   TCON控制寄存器
        TF0 = 0;                      //    溢出标志清零  TCON控制寄存器
        EA = 1;                      //   开关中断   中断使能寄存器
        ET0 = 1;                     //   定时器0中断          中断使能寄存器
        while(1)
         {
//         tmp = P1;
//         tmp = (tmp&0xf0)>>4;                  //清零低四位
//         if(tmp==0x08||tmp==0x0e||tmp==0x0a||tmp==0x09)   //检测跳变时序
//         {LED12 = off;}
//         else
//         {LED12 = on;}

         if(XPRET)                  //同步信号XPRET高电平  灯亮
         {LED10 = on;}
         else
         {LED10 = off;}

        if(DJDW) //高电平计时
        {TR0 = 1;}            //开启计时
        else
     {TR0 = 0;             //关闭计时
        if(jishi>=100&&jishi<=160)         //DJDW高电平5~8s之间
         {LED11 = off;}
        else
         {LED11 = on;}   
         }
         }
        }
        void timer0() interrupt 1     //T0中断,达到0.05s。jishi变量加1
        {jishi = jishi+1;}
我单片机晶振用的是6MHZ,仿真的时候无论高电平持续多久,led11都会亮(本来是只有不在5-8s范围内才会亮的)

IMAG2755.jpg (33.45 KB, 下载次数: 58)

IMAG2755.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111634 发表于 2017-3-14 19:28 | 只看该作者
测量脉冲宽度


Proteus仿真一下,确认有效。
实例72 测量脉冲宽度.rar (52.14 KB, 下载次数: 9)


以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版


书中电路和程序设计有详细说明,程序语句条条有注解。




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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