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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1510|回復: 9
打印 上一主題 下一主題
收起左側

stc8g單片機io口無法同時設置為準雙向口和推挽輸出

[復制鏈接]
跳轉到指定樓層
樓主
用的是stc8g1k08a,用官方給的io口配置工具,想把P3.7 P3.6 P3.5 P3.4設置為推挽輸出,把P3.3 P3.2 P3.1 P3.0設置為準雙向口,但是設置了之后只能全部為推挽輸出或者全部為準雙向口,這是為什么啊

#include "stc8g.h"


sbit KeyA = P3^3;         //按鍵A連接引腳12
sbit KeyB = P3^2;         //按鍵B連接引腳11
sbit button1 = P3^6;      //相位開關F連接引腳15
sbit button2 = P3^7;      //相位開關E連接引腳16
sbit BI = P1^1;           //電機后退輸入D連接引腳2
sbit FI = P1^0;           //電機前進輸入C連接引腳1
sbit FAN = P5^4;          //風扇G連接引腳引腳5
sbit lock = P3^5;         //鎖扣I連接引腳14
sbit S1 = P3^4;           //鎖扣開關S1連接引腳13

bit openFlag = 1;

#define MAIN_Fosc                22118400L        //定義主時鐘


void delay_ms(unsigned char ms)    //延時函數
{
        unsigned int i;
        do{
                i = MAIN_Fosc / 10000;
                while(--i);
        }while(--ms);
}


void main()
{
      P1M0 = 0x03; P1M1 = 0x00;
      P3M0 = 0xf0; P3M1 = 0x00;         
      P5M0 = 0x10; P5M1 = 0x00;     //設置推挽輸出


          if(openFlag==1)
                {
                        openFlag = 0;
                        BI = 0;
                        FI = 0;
                        FAN = 0;
                        lock = 0;
                        KeyA = 0;
                        KeyB = 0;
                        KeyAFlag = 1;
                        KeyBFlag = 1;
                }
        
                while(1)
                {

        if(KeyA==1)                          //按鍵A按下,標志位置1
        {
                delay_ms(10);
                if(KeyA==1)
                {
                        lock = 1;
                        FI = 1;
                        BI = 0;
                }
        }
        
        if(KeyB==1)                           //按鍵B按下,標志位置1
        {
                delay_ms(10);
                if(KeyB==1)
                {                        
                          FAN = 0;
                                FI = 0;
                                BI = 1;
                                
                }
        }
        
        if(button1==0)                         //相位開關1到位后,標志位置0
        {
                delay_ms(10);
                if(button1==0)
                {
                        FI = 0;
                        BI = 0;
                        FAN = 1;
                }
        }
        
        if(button2==0)                                    //相位開關2到位后,標志位置0               
        {
                delay_ms(10);
                if(button2==0)
                {
                        FI = 0;
                        BI = 0;
                        FAN = 0;
                }
        }
        
                if(S1==0)
                {
                        delay_ms(10);
                        if(S1==0)
                        {
                                lock = 1;
                        }
                }
                }
}

   }
}

51hei.png (81.14 KB, 下載次數: 16)

51hei.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1076567 發表于 2024-7-10 09:47 | 只看該作者
我還想問一下,設置為準雙向口的時候,我測了P3.6 即button1的電壓為2.3v,為什么它判斷成了低電平,還沒按下就執行了后面的程序,只有設置為推挽輸出,它的電壓為5v才為高電平,單片機的工作電壓是5v,它的高低電平判斷范圍是多少呀
然后P3.3和P3.2設置為準雙向口時的電壓為3.2v,設置為推挽輸出時的電壓就接近0v了,它外面接了一個12k的電阻,和24v的電源,還有一個2.2k的電阻,這是為什么呀
回復

使用道具 舉報

板凳
ID:1034262 發表于 2024-7-10 09:49 | 只看該作者
stc8g1k08a只有P3.0 P3.1 P3.2 P3.3 P5.4 P5.5,沒別的IO了,你是怎么測試P3.7 P3.6 P3.5 P3.4的?
回復

使用道具 舉報

地板
ID:1109793 發表于 2024-7-10 10:39 | 只看該作者
設置是好使的,你怎么確定設置沒有成功?
回復

使用道具 舉報

5#
ID:161164 發表于 2024-7-10 11:16 | 只看該作者
“但是設置了之后只能全部為推挽輸出或者全部為準雙向口”
如何得出這個結論?
回復

使用道具 舉報

6#
ID:76027 發表于 2024-7-10 11:57 | 只看該作者
分二次設置看看。
回復

使用道具 舉報

7#
ID:1076567 發表于 2024-7-10 13:32 | 只看該作者
coody_sz 發表于 2024-7-10 09:49
stc8g1k08a只有P3.0 P3.1 P3.2 P3.3 P5.4 P5.5,沒別的IO了,你是怎么測試P3.7 P3.6 P3.5 P3.4的?

這個是16個腳的

回復

使用道具 舉報

8#
ID:1076567 發表于 2024-7-10 13:47 | 只看該作者
lkc8210 發表于 2024-7-10 11:16
“但是設置了之后只能全部為推挽輸出或者全部為準雙向口”
如何得出這個結論?

我把完整的代碼貼了上去,分開設置過,全部設置成推挽輸出時,P3.3和P3.2引腳的電壓接近于0,P3.6和P3.7的電壓有5v,能夠正常工作。設置成準雙向口時,P3.3和P3.2引腳有3v多的電壓,P3.6和P3.7的電壓只有2.3v,被單片機檢測為低電平。按圖片那樣一起設置的,引腳的電壓跟設置成推挽輸出一樣的
用的是萬能板,只畫了一個簡單的圖,vcc是24v
回復

使用道具 舉報

9#
ID:1076567 發表于 2024-7-10 13:48 | 只看該作者
xiaobendan001 發表于 2024-7-10 10:39
設置是好使的,你怎么確定設置沒有成功?

分開設置過,全部設置成推挽輸出時,P3.3和P3.2引腳的電壓接近于0,P3.6和P3.7的電壓有5v,能夠正常工作。設置成準雙向口時,P3.3和P3.2引腳有3v多的電壓,P3.6和P3.7的電壓只有2.3v,被單片機檢測為低電平。按圖片那樣一起設置的,引腳的電壓跟設置成推挽輸出一樣的
回復

使用道具 舉報

10#
ID:1109793 發表于 2024-7-10 17:55 | 只看該作者
Dokkis 發表于 2024-7-10 13:48
分開設置過,全部設置成推挽輸出時,P3.3和P3.2引腳的電壓接近于0,P3.6和P3.7的電壓有5v,能夠正常工作 ...

3.2和3.3的3V多是在開關接通時的吧。這個電壓由VCC經由電阻分壓得到的。有2.2K下拉電阻,內部上拉被忽略了。3.6和3.7的話沒有上拉,直接用內部上拉,此時上拉能力比較弱。如果沒有外圍電阻漏電,作為開關輸入也應該是可以的,我就這樣用過,不過實際情況還是要增加一點上拉電阻例如10K的。看官方資料顯示內部上拉電阻30K左右吧。你現在只有2.3V,大概是外部電路中有什么東西把電壓拉低了。輸入口的高低判定一般是二分之一VCC的,5V時就是2.5V。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品一区 | 精品免费国产视频 | 日本三级在线 | 羞羞视频网 | 中文字幕1区 | 国产欧美日韩一区 | 狠狠色狠狠色综合系列 | 久久精品一区二区三区四区 | 久久99深爱久久99精品 | 国产精品亚洲一区二区三区在线观看 | 亚洲欧洲av在线 | 久久在线精品 | 精品欧美视频 | 亚洲一区二区成人 | 国产一区二区免费在线 | 国产精品第2页 | 亚洲国产精品一区二区三区 | 99国产精品久久久久老师 | 国产人成精品一区二区三 | 国产一区二区三区在线 | 欧美成人h版在线观看 | 午夜在线视频 | 国产午夜精品久久久久 | 日韩成人免费视频 | 国精产品一区一区三区免费完 | 91视频大全 | 日韩av在线一区 | 99久久日韩精品免费热麻豆美女 | 日韩欧美视频网站 | 一区二区视频在线观看 | 97在线播放 | 日韩精品一区二区三区视频播放 | 日本一区二区三区四区 | 黑人久久 | 国产网站在线播放 | 中文字幕一区二区三区精彩视频 | 欧美日韩精品在线一区 | 最新中文字幕在线 | 在线观看亚洲精品视频 | 国产成人在线视频 | 久久久久国产精品 |