注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
xuyiyi的个人空间 https://home.eeworld.com.cn/space-uid-470561.html [收藏] [复制] [分享] [RSS]
日志

执行代码超级短的 STC系列专用 初始化IO口函数 宏定义!!!

已有 827 次阅读2023-2-17 05:52


//========================================================================
// 函数: u8    GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
// 描述: 初始化IO口.
// 参数: GPIOx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回 SUCCESS, 错误返回 FAIL.
// 版本: V1.0, 2012-10-22
//========================================================================
u8  GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx);

typedef struct
{
    u8    Mode;        //IO模式,          GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    u8    Pin;        //要设置的端口    
} GPIO_InitTypeDef;


##########################################################################
##########################################################################
##########################################################################


STC 的 初始化IO口函数, 使用了结构体, 将简单的 对寄存器 PxM1,PxM0 赋值, 搞成一大堆指令。

又是指针,又是判断,程序执行效率极低,我特用宏定义 编写了一个,执行效率极高,功能完全兼容。

程序执行时,仅对寄存器 PxM1,PxM0 赋值, 相当于用 汇编语言直接编写。

当时编写了一个通用型的,能自动识别 STC51、STC16、STC32系列,并给出相对应单片机型的最优化的执行代码。

但后来感觉 H头文件有点复杂有点长,现将其拆分,分别对应于 STC51系列 和 STC251(STC16、STC32)系列 。

现分享给大家 。


网友测试时,可单步运行查看运行结果,也可直接查看检查反汇编程序。

 







 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章