欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6635|回復: 8
收起左側

STC8F1K08單片機上電復位問題

[復制鏈接]
ID:826754 發表于 2020-10-22 19:19 | 顯示全部樓層 |閱讀模式
以上的程序在上電復位時總是LED燈閃一下,初始化為低電平,但上電復位時總有高電平輸出。請大神幫看看是不是程序初始化有問題呀?謝謝

#include <STC8.H>

#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char uint8_t;
typedef unsigned int uint16_t;
typedef unsigned long uint32_t;
/********端口引腳定義*****/
sbit LED1=P3^0;
sbit LED2=P3^1;
sbit LED3=P3^2;
sbit LED4=P3^3;
sbit KEY=P5^4;
sbit LED5=P5^5;
/******延時函數聲明******/
void delay(u16 Count);
/******主函數區******/
void main(void)
{
        u8 num=0;
        P3M0=0xff;   //設P3口為推挽輸出
        P3M1=0x00;
        RSTCFG=0xef;  //設P5.4為IO口
        P5M0=0xef;      //設P5.4為準雙向口
        P5M1=0xef;
        P5M0=0x20;    //設P5.5為推挽輸出
        P5M1=0xdf;
        P3=0x00;        //初始化P3口為低電平
        //LED1=0,LED2=0,LED3=0,LED4=0;
        LED5=1;       //P5.5為高電平
        //KEY=0;
        while(1)
        {
                if(KEY==1)     //如P5.4為高電平
                {
               
                LED5=0;        //P5.5輸出低電平
                delay(200);
                P3=0x00;     
                //LED1=LED2=LED3=LED4=0;
                delay(200);
                LED1=1,LED2=0,LED3=0,LED4=0;         //LED燈流水點亮
                delay(200);
                LED1=1,LED2=1,LED3=0,LED4=0;
                delay(200);
                LED1=1,LED2=1,LED3=1,LED4=0;
                delay(200);
                LED1=1,LED2=1,LED3=1,LED4=1;
                delay(200);
               
                 }

                {  
                if(KEY==0)
                {
                P3=0x00;
                delay(2000);
                LED5=1;
                }
                }
               
        }
}
/************延時3秒****/
void delay(u16 Count)
{
        u8 i,j;
        while(Count--)
        {
        for(i=0;i<50;i++)
                for(j=0;j<20;j++);
        }
}


回復

使用道具 舉報

ID:47286 發表于 2020-10-22 21:21 | 顯示全部樓層
標準51片子上電就是高電平 你設置為低也是端口復位完畢后跑到你的程序才執行 中間有間隔 STC的8系理論上上電時每個端口都是高阻狀態 即不輸出也不輸入 但實際上不好用 沒看見你的電路圖 如果是高有效 那很有可能閃一下 我就吃過這虧 看介紹挺高興 按介紹設計的電路 然后復位誤動 還得改回去
回復

使用道具 舉報

ID:274156 發表于 2020-10-22 23:32 | 顯示全部樓層
需要更改硬件才能變低電平
回復

使用道具 舉報

ID:65956 發表于 2020-10-23 08:15 | 顯示全部樓層
針對51作端口驅動時首選設計要采用低電平驅動,這樣就能保證單片機剛上電時會出現全動作的風險
回復

使用道具 舉報

ID:826754 發表于 2020-10-23 08:48 | 顯示全部樓層
小聰聰 發表于 2020-10-22 23:32
需要更改硬件才能變低電平

硬件做下拉時,芯片會處于燒錄模式,不能起動。
回復

使用道具 舉報

ID:401564 發表于 2020-10-23 11:35 | 顯示全部樓層
8051復位默認是高電平,這個沒法改變的,燈閃一下就是復位時的高電平
我用15W408AS使用1K電阻可以下拉,也可以燒錄,你可以試一下
如果不行,那就只能先燒錄,然后再焊下拉電阻,個人經驗是1K電阻是可以下拉的,使用的時候把這個IO設定成強推挽輸出就可以了
回復

使用道具 舉報

ID:213173 發表于 2020-10-23 12:40 | 顯示全部樓層
STC8F1K08的P3.0~3.3上電復位默認高電平準雙向口,P5.4、P5.5上電復位默認開漏狀態。樓主設P3口為推挽輸出代碼是對的,復位腳用作I/O口設置不對,要在下載程序前硬件選項中勾選“復位腳用作I/O口”,設P5.4為準雙向口和設P5.5為推挽輸出應該寫P5M0=0x20;P5M1=0x00;或者P5M0&=0xef;P5M1&=0xcf;。單片機上電復位到初始化完成之間有零點幾秒時間,如果LED接高電平點亮就會閃一下。如果只是為了驅動LED一般選擇低電平點亮為佳,如果是通過NPN三極管驅動繼電器,可以在對應端口接1K下拉電阻解決上電復位誤觸發。原理是上電復位默認高電平準雙向口的內置上拉電阻值很大,外接1K下拉電阻足以把端口電壓拉低到0.7V以下。NPN三極管不會導通。始化完成后端口已是的電平。當需要端口高電平驅動三極管時,端口推挽輸出能力足以抵消下拉電阻的影響并能建立高電平。
回復

使用道具 舉報

ID:826754 發表于 2020-10-23 13:54 | 顯示全部樓層
wulin 發表于 2020-10-23 12:40
STC8F1K08的P3.0~3.3上電復位默認高電平準雙向口,P5.4、P5.5上電復位默認開漏狀態。樓主設P3口為推挽輸出 ...

我也想用低電平驅動PMOS管進行LED燈的開關管,但對PMOS管不知道怎樣驅動,之前有用PMOS管做了測試AO3401低電平時可以導通,但高電平時就不能完全關斷,LED燈還有輕微的亮。G極接470歐電阻接IO口,下管接法。請教一下可以指點一下PMOS管低電平驅動的原理圖嗎?感謝指點。
回復

使用道具 舉報

ID:213173 發表于 2020-10-23 17:03 | 顯示全部樓層
川蜀浪子 發表于 2020-10-23 13:54
我也想用低電平驅動PMOS管進行LED燈的開關管,但對PMOS管不知道怎樣驅動,之前有用PMOS管做了測試AO3401 ...

相同電源電壓1個引腳接1個LED用低電平驅動合適。如果1個引腳通過晶體管放大控制多個LED可以考慮高電平驅動。如果LED電源電壓高于單片機VCC,不建議使用P管。下圖兩個電路適合前面介紹的方法,不會在上電復位時閃爍一下。 無標題.jpg

回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表