久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: stc15f104w單片機(jī)延時(shí)沒(méi)有反應(yīng),led燈不滅 [打印本頁(yè)]

作者: Dokkis    時(shí)間: 2024-5-14 15:48
標(biāo)題: stc15f104w單片機(jī)延時(shí)沒(méi)有反應(yīng),led燈不滅
led燈點(diǎn)亮后,k1鍵按下,k2k3不按,延時(shí)10s后關(guān)閉led燈,但是超過(guò)了幾分鐘也沒(méi)有關(guān)閉,delay函數(shù)也用過(guò)兩個(gè)for循環(huán)寫(xiě)也不起作用,有木有大佬看一下

單片機(jī)源程序如下:
include <STC15.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
        sbit s1 = P3^3;
        sbit k1 = P3^2;
        sbit k2 = P3^1;
        sbit k3 = P3^0;
        sbit led = P3^5;
        bit seyFlag=0;


        void Delay1s(int t)
                {
                        uint i;                        while(1)
                        {
                                i=12004*t;
                                i--;  
                                if(seyFlag==1)
                                {return;} //s1再按下后,跳出延時(shí)關(guān)閉led燈
                        }
                        return;
                }


        void Int1_Routine(void) interrupt 2
                        {
                           led= !led;
                           seyFlag=1;
                        }


        void main()
        {
                IT1 = 1;
                EX1 = 1;
                EA = 1;
               
                while(1)
                {
                  if(seyFlag  ==        1)
                        {        
                                seyFlag=0;
                                if(led        ==        1)
                                {
                                        if(k1==0)
                                                {
                                                 if (k2==1)
                                                         {
                                                                if (k3==1)
                                                                 {
                                                                         Delay1s(10);        
                                                                         led=0;
                                                                 }
                                                                }
                                                }
                                        }
                        }
                }

        }







作者: lkc8210    時(shí)間: 2024-5-14 17:32
你這Delay K1按下才跳出啊~


作者: xiaobendan001    時(shí)間: 2024-5-14 18:51

每次循環(huán)I都被重新賦值,然后再減一,永遠(yuǎn)都減不完啊,即使減到0了,也沒(méi)有任何動(dòng)作啊,只有等待seyFlag==1之后才能跳出循環(huán)。
把i=12004*t;挪到while前邊。然后在 if(seyFlag==1)的括弧里面增加||i==0再試試

作者: yzwzfyz    時(shí)間: 2024-5-14 20:07
初學(xué)者常范的毛病是:直接寫(xiě)程序!
記住:先理清邏輯關(guān)系!例如:
畫(huà)出邏輯流程,自己先走走,走退了再按程序程寫(xiě)程序。
至少用個(gè)EXCEL表,列出個(gè)12345……,再按12345寫(xiě)程序。
作者: Dokkis    時(shí)間: 2024-5-15 17:43
xiaobendan001 發(fā)表于 2024-5-14 18:51
每次循環(huán)I都被重新賦值,然后再減一,永遠(yuǎn)都減不完啊,即使減到0了,也沒(méi)有任何動(dòng)作啊,只有等待seyFlag= ...

按這樣改了,但是還是不滅
作者: Graves    時(shí)間: 2024-5-15 18:21
沙發(fā)說(shuō)的對(duì),而且要K1一直按才能進(jìn)入delay1s,不知道你開(kāi)的是不是低電平中斷,是的話就一直進(jìn)中斷,LED就一直翻轉(zhuǎn)
作者: xiaobendan001    時(shí)間: 2024-5-15 18:23
Dokkis 發(fā)表于 2024-5-15 17:43
按這樣改了,但是還是不滅

咋改的,貼出來(lái)看看啊
還有你那12004是啥意思?一個(gè)uint最大65535,你這12004*10也溢出了。
驗(yàn)證有效性可以把時(shí)間弄短一些試試嘛。
作者: Dokkis    時(shí)間: 2024-5-16 09:18
本帖最后由 Dokkis 于 2024-5-16 10:56 編輯
xiaobendan001 發(fā)表于 2024-5-15 18:23
咋改的,貼出來(lái)看看啊
還有你那12004是啥意思?一個(gè)uint最大65535,你這12004*10也溢出了。
驗(yàn)證有效性 ...

晶振設(shè)的是12,12004就是1s吧,uint我查了百度范圍不是0~4294967295嗎,我試過(guò)200的,k1鍵撥下,按s1它就是完全不亮了

#include <STC15.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

        sbit s1 = P3^3;
        sbit k1 = P3^2;
        sbit k2 = P3^1;
        sbit k3 = P3^0;
        sbit led = P3^5;
        bit seyFlag=0;


        void Delay1s(int t)
                {
                        uint i;
                        i=12004*t;
                        while(1)
                        {
                                i--;  
                                if(seyFlag==1||i==0)
                                {return;}
                        }
                }
        void Int1_Routine(void) interrupt 2
                        {
                       led        = !led;
                        seyFlag=1;
                        }


        void main()
        {
                IT1 = 1;
                EX1 = 1;
                EA = 1;
           
                while(1)
                {
                  if(seyFlag        ==        1)
                        {      
                                seyFlag=0;
                                
                                if(led        ==        1)
                                {
                                        if(k1==0&&k2==1&&k3==1)
                                                {                                 
                                                         Delay1s(10);        
                                                         led=0;
                                                }
                                        }                        
                        }
                }
        }
作者: Dokkis    時(shí)間: 2024-5-16 09:20
qq475878026 發(fā)表于 2024-5-15 18:21
沙發(fā)說(shuō)的對(duì),而且要K1一直按才能進(jìn)入delay1s,不知道你開(kāi)的是不是低電平中斷,是的話就一直進(jìn)中斷,LED就一 ...

k1是撥碼開(kāi)關(guān),是一直按下的,是只有s1按下才會(huì)進(jìn)中斷,s1是總開(kāi)關(guān),控制led亮滅的,k1只是用來(lái)延時(shí)的
作者: Dokkis    時(shí)間: 2024-5-16 09:21
yzwzfyz 發(fā)表于 2024-5-14 20:07
初學(xué)者常范的毛病是:直接寫(xiě)程序!
記住:先理清邏輯關(guān)系!例如:
畫(huà)出邏輯流程,自己先走走,走退了再按 ...

嗯嗯好的,只有剛開(kāi)始畫(huà)了個(gè)流程圖,以后會(huì)注意的
作者: Dokkis    時(shí)間: 2024-5-16 09:38
lkc8210 發(fā)表于 2024-5-14 17:32
你這Delay K1按下才跳出啊~

嗷嗷是的,當(dāng)時(shí)沒(méi)理好邏輯,但是改了之后也還是不行
作者: Graves    時(shí)間: 2024-5-16 13:53
Dokkis 發(fā)表于 2024-5-16 09:18
晶振設(shè)的是12,12004就是1s吧,uint我查了百度范圍不是0~4294967295嗎,我試過(guò)200的,k1鍵撥下,按s1它就 ...

uint 在不同平臺(tái)上代表的數(shù)據(jù)長(zhǎng)度不一樣的,在STC15中uint最大就是65535,但是燈不滅可能還有其他原因,看下燒錄時(shí)硬件看門(mén)狗開(kāi)了嗎
作者: Dokkis    時(shí)間: 2024-5-16 16:36
qq475878026 發(fā)表于 2024-5-16 13:53
uint 在不同平臺(tái)上代表的數(shù)據(jù)長(zhǎng)度不一樣的,在STC15中uint最大就是65535,但是燈不滅可能還有其他原因, ...

嗷嗷好的 沒(méi)開(kāi)看門(mén)狗 那是要打開(kāi)嗎 還有一個(gè)問(wèn)題想請(qǐng)教一下 這個(gè)stc芯片之前燒兩次程序就燒不進(jìn)去了 好幾個(gè)都是這樣 后來(lái)?yè)Q了一個(gè)原裝的燒錄器 也只燒了十幾次就燒不進(jìn)去了 圖片我放到帖子里




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本淫视频 | 成人av免费在线观看 | 日韩精品一区二区三区中文字幕 | 欧美中国少妇xxx性高请视频 | 亚洲九九精品 | 日韩精品一区二区三区高清免费 | 国产精品久久久精品 | 国产日韩久久久久69影院 | 成人精品在线观看 | 99视频在线播放 | 国产成人一区二区 | 久久国产精品99久久久大便 | 久久久久久久综合 | 成年人在线观看视频 | 亚洲一区二区电影网 | 中文字幕在线三区 | 男女视频在线免费观看 | 欧美精品1区 | 成人午夜精品 | 日本中文字幕在线视频 | 午夜99 | 成人一区二区三区在线观看 | 国产精品免费av | 亚洲精品在线免费观看视频 | 雨宫琴音一区二区在线 | 午夜精品久久久久久久久久久久 | 性国产xxxx乳高跟 | 中文字幕av免费 | 日韩精品av一区二区三区 | 亚洲情侣视频 | 亚洲一区二区国产 | 亚洲黄色片免费观看 | 羞羞视频网站免费观看 | 欧洲精品视频一区 | 亚洲成人二区 | 日韩在线精品 | 成人精品一区二区三区 | 免费在线观看91 | 日日天天| 蜜桃精品噜噜噜成人av | 一级毛片在线播放 |