找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2017|回復(fù): 7
收起左側(cè)

為什么我的單片機程序不能實現(xiàn)功能

[復(fù)制鏈接]
ID:621475 發(fā)表于 2019-10-16 17:13 來自手機 | 顯示全部樓層 |閱讀模式
試用定時/計數(shù)器T1對外部事件計數(shù),要求每計數(shù)5,就將T1改成定時方式,控制P1.7輸出一個脈寬為10ms的正脈沖,然后又轉(zhuǎn)為計數(shù)方式,如此反復(fù)循環(huán)。設(shè)晶振頻率為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;
}
}
回復(fù)

使用道具 舉報

ID:235200 發(fā)表于 2019-10-17 08:09 | 顯示全部樓層
主程序中while(1)使用較多且無中斷該循環(huán)的語句,程序邏輯未理清
回復(fù)

使用道具 舉報

ID:222006 發(fā)表于 2019-10-17 09:14 | 顯示全部樓層
while 用一個就好了,這個不是任務(wù)。輪詢,只要一個死循環(huán)就好,否則要寫明break跳出條件,
回復(fù)

使用道具 舉報

ID:601639 發(fā)表于 2019-10-17 09:20 | 顯示全部樓層
你這while(1)太多了,沒退出來,進入死循環(huán)了。
回復(fù)

使用道具 舉報

ID:282850 發(fā)表于 2019-10-17 09:33 | 顯示全部樓層
中斷程序都沒有,怎么能工作!timer是觸發(fā)中斷的,沒見過在主程序中讀定時器值的方式。
回復(fù)

使用道具 舉報

ID:609989 發(fā)表于 2019-10-17 09:41 | 顯示全部樓層
樓上說的對你用那么多死循環(huán)干嘛?(while(1);) 你的TR1=1;打開了,不用的時候為什么不關(guān)呢?
回復(fù)

使用道具 舉報

ID:625461 發(fā)表于 2019-10-17 10:10 | 顯示全部樓層
while(1)使用錯誤
回復(fù)

使用道具 舉報

ID:625509 發(fā)表于 2019-10-17 11:18 | 顯示全部樓層
可以,很受用
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表