8H2K12U芯片引脚输出电平的疑问
项目的铅酸电池可调电压和电流脉冲修复用的。设计是P3.2引脚连接行程开关,合上行程开关,P3.2引脚接地,充电器根据STC8H2K12U在P5.4引脚输出高频方波驱动场效应管脉冲充电,打开行程开关,P5.4引脚始终输出高电平。简单敲几行测试程序,发现芯片引脚会自动输出波形:
1、P3.1、P3.0设置准双向口,程序代码没有任何操作,示波器测量P3.1、P3.0有输出方波;
2、P3.2、P3.3设置推挽输出,程序代码设置一个10毫秒定时器,检测P32引脚电平,通过P3.1、P3.0驱动LED灯,可以看到LED交替熄灭点亮,示波器测量P3.3有类似锯齿波输出;
请问各位大咖这是啥原因啊?请详细讲解 谢谢!
测试电路只保留芯片使用说明书最基本元件
测试程序所有代码
#include "STC8H2K12U.h"
#define MAIN_Fosc 24000000L //定义主时钟
bit B_10ms =0;
void Timer0_Init(void) //Timer0初始化函数
{
TMOD &= ~0x03 ; /* 16位自动重装 */ // T0工作于16位自动重装
AUXR &= ~(1<<7); /* Timer0 clodk = fo/12 12分频, default */
TH0 = (65536UL-MAIN_Fosc/12 / 100) / 256; //10ms
TL0 = (65536UL-MAIN_Fosc/12 / 100) % 256;
TR0 = 1; // 打开定时器0
TF0 = 0; //清除TF0标志
ET0 = 1;// 允许ET0中断
}
void Timer0_Isr(void) interrupt 1
{
B_10ms=1;
}
void main(void)
{
P3M0 |= (0x03); //P3.0,P3.1准双向口
P3M1 &= ~(0x03);
P3M1 |= (0x0C); //P3.2,P3.3高阻
P3M0 &= ~(0x0C);
Timer0_Init(); // Timer0初始化函数
EA =1;
while (1)
{
if(B_10ms) // 10ms时隙
{
B_10ms = 0;
if (P32 ==1)
{
P30 = 0;
P31 = 1;
}
else
{
P30 = 1;
P31 = 0;
}
}
}
}
手触摸P32引脚也能触发程序改变LED灯,这是啥问题怎么解决,请大咖赐教谢谢
P3不要设置成高阻 你P3.2、P3.3设置为高阻,外接什么信号?外部必须提供高低电平信号。
你P3.2、P3.3设置为高阻,外接什么信号?外部必须提供高低电平信号。P32就接行程开关,P33用着电压检测。没有提供高低电平信号。
神***5#
答非所问! Tank***
STC8H2K12U SOP8,除了P54引脚外只剩余P30-P33四个端口,P54我用于输出PWM信号,P33测电压,P32当开关用,不设成高阻怎么用ADC? P32应该要加一个上拉电阻。模拟电路没学好。请论坛大佬或者STC大咖们出几期结合芯片应用电路设计要点辅导课。谢谢
页:
[1]