|
用的是stc8g1k08—sop16,想讓16、15、13腳輸出幾毫安的電流,剛開始我把它們?cè)O(shè)置成推挽模式,沒加上拉電阻,它的電流有56ma,我們總工說(shuō)太耗電了,然后我把它設(shè)置成準(zhǔn)雙向口,加了上拉電阻,它的電流只有ua,電流太小了不太靈敏,有時(shí)候會(huì)直接判斷成低電平,如果把它設(shè)置成開漏輸出,然后加個(gè)上拉電阻,變成跟準(zhǔn)雙向口一樣的,但是數(shù)據(jù)手冊(cè)沒寫有多少電流,還有沒有其它方法呀
stc8g1k08a-sop16.png (66.42 KB, 下載次數(shù): 22)
下載附件
2024-7-16 09:01 上傳
05b6894309bc9edb272b1a898f3a161.png (89.67 KB, 下載次數(shù): 16)
下載附件
2024-7-16 09:02 上傳
#include "stc8g.h"
sbit KeyA = P3^3; //按鍵A連接引腳12
sbit KeyB = P3^2; //按鍵B連接引腳11
sbit button1 = P3^6; //相位開關(guān)F連接引腳15
sbit button2 = P3^7; //相位開關(guān)E連接引腳16
sbit BI = P1^1; //電機(jī)后退輸入D連接引腳2
sbit FI = P1^0; //電機(jī)前進(jìn)輸入C連接引腳1
sbit FAN = P5^4; //風(fēng)扇G連接引腳引腳5
sbit lock = P3^5; //鎖扣I連接引腳14
sbit S1 = P3^4; //鎖扣開關(guān)S1連接引腳13
bit KeyAFlag = 0; //按鍵A標(biāo)志位
bit KeyBFlag = 0; //按鍵B標(biāo)志位
bit openFlag = 1;
bit button1Flag = 0;
bit button2Flag = 0;
#define MAIN_Fosc 22118400L //定義主時(shí)鐘
void delay_ms(unsigned char ms) //延時(shí)函數(shù)
{
unsigned int i;
do{
i = MAIN_Fosc / 10000;
while(--i);
}while(--ms);
}
void main()
{
P1M0 = 0x03; P1M1 = 0x00;//1 2為推挽輸出
P3M0 = 0xd0; P3M1 = 0xdc; //11腳和12腳為高阻輸入,16 15 13為開漏輸出,其余為準(zhǔn)雙向口
P5M0 = 0x10; P5M1 = 0x00; //5為推挽輸出
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)
{
KeyBFlag = 1;
if(KeyAFlag==1)
{
button1Flag =1;
KeyAFlag = 0;
lock = 1;
FI = 1;
BI = 0;
FAN = 0;
}
}
if(KeyB==1)
{
KeyAFlag = 1;
if(KeyBFlag==1)
{
button2Flag = 1;
KeyBFlag = 0;
FAN = 0;
FI = 0;
BI = 1;
}
}
if(button1==0)
{
if(button1Flag==1)
{
button1Flag = 0;
FI = 0;
BI = 0;
FAN = 1;
}
}
if(button2==0)
{
if(button2Flag==1)
{
button2Flag = 0;
FI = 0;
BI = 0;
FAN = 0;
}
}
if(S1==0)
{
delay_ms(10);
if(S1==0)
{
lock = 0;
}
}
}
}
|
|