STC8H1K08_介绍与应用(1)

STC8H1K08_介绍与应用(1)

image-20260701231404639

一、配置Keil 在线仿真

image-20260701231649061

二、编程示例

示例1:点亮LED

image-20260701231905225

image-20260701232219157

image-20260701232406851

#include "STC8H.h"

// 上电先配置IO口模式
// 准双向IO口(弱上拉)

int main(void)
{
	// P1端口,全部被配置为弱上拉
	P1M0 = 0x00;
	P1M1 = 0x00;
	while(1)
	{
		
	}
}

示例二:LED闪烁

image-20260701235256022

image-20260701235330681

#include "STC8H.h"
#include "intrins.h"  

// 500ms 延时函数
void Delay(void)	//@11.0592MHz
{
	unsigned char data i, j, k;

	i = 29;
	j = 14;
	k = 54;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

// 上电先配置IO口模式
// 准双向IO口(弱上拉)

int main(void)
{
	// P1端口,全部被配置为弱上拉
	P1M0 = 0x00;
	P1M1 = 0x00;
	while(1)
	{
		P12 = 0;  //熄灭
		Delay();
		P12 = 1;  //熄灭
		Delay();
	}
}

通过观察开发板发现,弱上拉模式LED灯亮度较低。

P1M0 = 0XFF;  // 修改为推挽模式
// 强上拉模式,拉电流可达20mA,要加限流电阻

观察发现,LED灯亮度明显增加。

#include "STC8H.h"
#include "intrins.h" 

// @24.000MHz 可调毫秒延时
void Delay_ms(unsigned int ms)
{
    unsigned int t;
    unsigned char data i, j;
    for(t = 0; t < ms; t++)
    {
        _nop_();
        i = 32;
        j = 40;
        do
        {
            while (--j);
        } while (--i);
    }
}

// 上电先配置IO口模式
// 推挽输出IO口(强上拉)

int main(void)
{
	// P1端口,全部被配置为强上拉
	P1M0 = 0xFF;
	P1M1 = 0x00;
	while(1)
	{
		P12 = 0;  			//熄灭
		Delay_ms(500);
		P12 = 1;  			//熄灭
		Delay_ms(500);
	}
}
#include "STC8H.h"
#include "intrins.h" 

// 标准精准100μs底层 @24.000MHz
void Delay100us(void)
{
	unsigned char data i, j;

	i = 4;
	j = 27;
	do
	{
		while (--j);
	} while (--i);
}

// 可调微秒延时
// times = 倍数,Delay100us_x(5) = 500μs
void Delay100us_x(unsigned char times)
{
	while(times--)
	{
		Delay100us();
	}
}

// 上电先配置IO口模式
// 推挽输出IO口(强上拉)

int main(void)
{
	// P1端口,全部被配置为强上拉
	P1M0 = 0xFF;
	P1M1 = 0x00;
	while(1)
	{
		P12 = 0;  			//熄灭
		Delay100us_x(5);
		P12 = 1;  			//熄灭
		Delay100us_x(5);
	}
}
posted @ 2026-07-02 20:08  Q&25  阅读(14)  评论(0)    收藏  举报