STC8G系列文章目录

提示:本内容仅供学习,切勿商用!

在学习STC8G1K08A单片机之前,环境搭建是必不可少的一步,这里不在赘述Keil软件、STC8G头文件安装、文件创建的过程!本文主要内容:根据芯片手册、用户手册来掌握编程思路

本人只是一个普通的嵌入式低级(初级)玩家,文章主要针对新手,所以大佬要是发现文中有何不妥之处,还请口下留情,若能指出,我一定虚心改正。



前言

在这里插入图片描述


一、点亮LED的原理?

这里需要注意的是:你必须去学习电路原理知识!否则,你很难理解程序的意思!

这里简单说一下:我们常见的灯都是有正负极的!所以在两端给正-负就可以把灯点亮!(注意:LED灯所能承载的功率是有限的!)

如果,你还是不明白是什么意思!
请学习这个链接: 电路设计

二、代码分析和手册查询

1.代码(已跑通)

代码如下:

#include <STC8G.H> //进入安装目录INC查询头文件

int t1 = 0;

void TM0_Isr() interrupt 1
{
	t1++;
	if(t1 == 1000)
	{
   P30=!P30;
		t1= 0;
	}
}


void main() 
{
  
  P3M0 = 0x93; 
  P3M1 = 0x94;
  P5M0 = 0x00; 
  P5M1 = 0x00;
  
  
	TMOD = 0x00;
	TL0=0x66;
	TH0=0xfc;
	TR0=1;
	ET0=1;
	EA=1;
		
	while (1);
}

代码数量不多,这里烧录过程,请学习这个链接: 博主:那些年的代码
这段代码的主要功能是利用 STC8G 单片机的定时器 0(Timer 0)来产生一个周期性的信号,通过定时器中断实现每隔一定时间对 P3.0 引脚的电平进行翻转,从而在 P3.0 引脚上输出一个方波信号。

2.分析和查询

芯片的手册: STC8G1K08A
STC8G1K08A 的管脚,如下图所示:
在这里插入图片描述
在这里插入图片描述

这里说明一下:上面代码是控制P3.0引脚输出高低电平,使得LED延时翻转,用到了定时器进行延时,具体延时多少,哈哈!你暂时不需要知道,等到后续文章及你的实力差不多了,自然就明白了!
我这里,想要把P3.0改为P3.2来控制LED的亮灭,需要看以下图片:
在这里插入图片描述
在这里插入图片描述
那么,根据图片可知,我只需要关心P3.2的寄存器P3M1和P3M0对应的位,进行操作就行!对应改为P3M1=0,P3M0=1。

原始的代码:

P3M0 = 0x93; 
P3M1 = 0x94;

将它们十六进制转换为二进制:
P3M0 = 0x93 = 1001 0011B
P3M1 = 0x94 = 1001 0100B
低位对应P3.0,高位对应P3.7。

修改后的代码:

P3M0 = 0x04;// 0000 0100B
P3M1 = 0x00;// 0000 0000B

此时 P3M1 的第 2 位为 0,P3M0 的第 2 位为 1,满足推挽输出的模式设置要求,即 P3.2 引脚被设置为推挽输出模式。


总结

1.看懂芯片手册GPIO寄存器的每个bit的作用!
2.掌握GPIO寄存器配置输出模式,同样更换端口,也要掌握配置输出模式方法!

温馨提示:下一站,将会讲解I/O口在芯片内部电路的构成,并介绍他们各自的作用!同时,讲解按键控制LED灯亮灭!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐