- 打卡等级:以坛为家II
- 打卡总天数:419
- 最近打卡:2025-05-02 06:28:49
中级会员
- 积分
- 452
|
项目的铅酸电池可调电压和电流脉冲修复用的。设计是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;
}
}
}
}
|
|