zhuls 发表于 2024-5-18 17:40 你好 我设置成了推挽输出,但是它一通电就自己亮了,我写的程序是按键按下才亮,而且中断对它也没有反应 #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 DELAY_MS (unsigned int t) { unsigned int a; while ( --t != 0 ) { for (a=0;a<=600;a++); } } void DELAY_1s(int t) { unsigned long int a,b,c,d,e,f,g; a=60000*t; b=60000*t; c=60000*t; d=60000*t; e=60000*t; f=60000*t; g=60000*t; while(1) { a--; b--; c--; d--; e--; f--; g--; if(seyFlag==1||g==0) { led = !led; seyFlag=0; return; } } } void Int1_Routine(void) interrupt 2 { //led = !led; seyFlag=1; } void main() { P3M0 = 0x20; P3M1 = 0x00; IT1 = 1; EX1 = 1; EA = 1; while(1) { if(seyFlag == 1) { DELAY_MS(10); led = 1; if (k1==0) { if (k2==1) { if (k3==1) { DELAY_1s(5); } else if(k3==0) { DELAY_1s(10); } } } } } } |
benniu 发表于 2024-5-18 18:54 vcc是5v |
zhuls 发表于 2024-5-18 17:40 嗷嗷好的 第一次用这个芯片 不太熟悉 ![]() |
Vcc是多少? |
Dokkis 发表于 2024-5-17 10:17 P3.5设成推挽,应该是"P3M0|=0x20" 你核对一下。 STC的ISP软件本身自带的工具里边就有。。。 |
51hei.jpg (64.77 KB, 下载次数: 31)
R8/R9阻值是多少?分压了吧? 把R8去掉试试 |
j1ason 发表于 2024-5-16 16:26 推挽输出是这样设吗,改了还是不行 #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; void Delay1s(int t) { uint i; i=1000*t; while(1) { i--; if(i==0) {return;} } } void main() { P3M0 |= 0x00; P3M1 |= 0x08; while(1) { Delay1s(10); led = 1; } } |
设置输出模式为推挽输出 |
Q1什么型号?P3.5输出的电压,经电阻分压后的Vgs电压能让它完全导通吗? VCC多少V?6串LED,2V(RLED)/3.3V(GLED/BLED),能驱得动吗? |
把Q1源漏极短接一下看看你led串联后驱动电压够不够 |
看下那个MOS,5V能打开不。 |
先将IO模式设置成推挽输出,再将中断关掉,最后在WHILE循环中添加延时。 |
15是需要设置IO模式的 |
qq475878026 发表于 2024-5-16 15:06 中断关了也不行 |
yaosongjin 发表于 2024-5-16 15:28 确实是微亮,那我把死循环去掉再加个延时试试吗 |
取反是如何亮的,看你程序死循环又没有延时,取反的话应该是出现的脉冲电压,微亮吧 |
还有这等子事?是不是中断里有控制LED的?把中断关了试试看? |