找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么我的单片机程序不能实现功能

[复制链接]
跳转到指定楼层
楼主
ID:621475 发表于 2019-10-16 17:13 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
试用定时/计数器T1对外部事件计数,要求每计数5,就将T1改成定时方式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为11.0592MHz。
程序如下
#include<stc15.h>
#define uchar unsigned char
#define uint unsigned int           
sbit led=P1^7;
uchar i,m;
void GPIO()
{
        P1M1=0;P1M0=0;
}
void timer_count()
{
        TMOD=0X40;
        TH1=0Xff;
        TL1=0Xfb;
        TR1=1;
}
void timer_time()
{
        TMOD=0X00;
        TH1=0X3c;
        TL1=0Xb0;
        TR1=1;
}
void  main(void)
{
        GPIO();
        while(1)
        {
                i=0;m=0;
                while(1)
                {
          timer_count();
                while(1)
                {
                        if(TF1==1)
                        {
                                TF1=0;
                                m=1;
                        }
                        if(m==1)
                        break;
                }
                if(m==1)
                break;
         }
        while(1)
        {
                timer_time();
                while(1)
                {
                        if(TF1==1)
                        {
                                TF1=0;
                                led=!led;
                                i=1;
                        }
                        if(i==1)
                        break;
          }
        }
        if(i==1)
        break;
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2019-10-17 08:09 | 只看该作者
主程序中while(1)使用较多且无中断该循环的语句,程序逻辑未理清
回复

使用道具 举报

板凳
ID:222006 发表于 2019-10-17 09:14 | 只看该作者
while 用一个就好了,这个不是任务。轮询,只要一个死循环就好,否则要写明break跳出条件,
回复

使用道具 举报

地板
ID:601639 发表于 2019-10-17 09:20 | 只看该作者
你这while(1)太多了,没退出来,进入死循环了。
回复

使用道具 举报

5#
ID:282850 发表于 2019-10-17 09:33 | 只看该作者
中断程序都没有,怎么能工作!timer是触发中断的,没见过在主程序中读定时器值的方式。
回复

使用道具 举报

6#
ID:609989 发表于 2019-10-17 09:41 | 只看该作者
楼上说的对你用那么多死循环干嘛?(while(1);) 你的TR1=1;打开了,不用的时候为什么不关呢?
回复

使用道具 举报

7#
ID:625461 发表于 2019-10-17 10:10 | 只看该作者
while(1)使用错误
回复

使用道具 举报

8#
ID:625509 发表于 2019-10-17 11:18 | 只看该作者
可以,很受用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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