单片机开发框架

基于C251内核的ISP(SPCA2688A)下的IIC(400KHz) 主机:SPCA2688A 从机:MCP9808、SHT3XA 通信速率:400KHz 状态定义 /*SCL,SDA状态定义*/ #define SCL_OUT_HIGH NBYTE[0x2043] |= 0x04 //SCL输出高电平 #define SCL_OUT_LOW NBYTE[0x2043] &= ~0x04 //SCL输出低电平 #define SDA_OUT_HIGH NBYTE[0x2043] |= 0x08 //SDA输出高电平 #define SDA_OUT_LOW NB 阅读详情

整体语言代码结构

简体中文
英文


编程语言

C语言 (The C Programming Language)


硬件环境

STC降龙棍


编译环境

Keil uVision5 C251


代码维护环境

Visual Studio Code


框架式编程

这是框架式编程?

这是一种从整个软件系统的高层次全局视角观察和理解代码的方式。通过代码的上帝视角,开发者可以深入了解软件系统的整体架构、各个部分之间的关系,以及整个系统所解决的问题。这种视角需要开发者具备丰富的知识和经验,熟练掌握各种设计模式和架构模式,并能够在全局范围内做出有利于系统演化和扩展性的设计决策。通过代码的上帝视角,开发者能够更好地理解和优化整个系统,从而提高软件质量和开发效率。

框架说明:

	执行流程:
			1.数据定义
			(执行1次)
			---------------------

			2.Sys_Init()
			(执行1次)
			---------------------

			3,4,5
			(循环执行)
			3.Sys_Draw()数据绘制
			4.User_Updata()用户干预更新数据
			5.Sys_Updata()系统自动更新数据

代码风格约定

**本代码严格遵循微软代码风格约定

局部变量:   小写可(加下划线)
    float sum = 0.0f;
    float sum_count = 0;


全局变量:  g_开头加小驼峰(可加下划线)
    int g_maxStudents = 100;
    float g_averageScore = 0.0f;


函数:    大驼峰(可加下划线)
int CalculateSum(int x, int y);
int Calculate_Sum(int x, int y);


宏定义:  全大写
#define PI 3.14159265358979323846

关于Visual Studio Code调试维护说明

由于keil C251 和VSCode 2个环境的不兼容性,比如使用bit sfr bdata interrupt 时,语法高亮将会失效,为了解决这个问题

特别编写了一个debug.h的头文件来兼容维护环境,以保持VSCode下的语法高亮显示.

需要注意的是,在keil编译时一定注释掉OPEN_VSCODE_DEBUG宏定义,否则编译将会报错

config.h

如果在维护环境下请放开,在keil环境中编译时必须注释该行
####define OPEN_VSCODE_DEBUG ,在编译环境中请注释这行

#define OPEN_VSCODE_DEBUG //注释该行,将不进入VSCODE调试,为了VSCODE代码编写兼容keil,在烧录前务必注释该行
#ifdef OPEN_VSCODE_DEBUG
#include "../debug/debug.h"
#endif

License

作者:程序猿Debug

MCU_STC License

main.c


// 编译前,请务必阅读   README.md
#include "config.h"
#include "uart.h"
/*
*----------------------------------------------------------------------------------------------
* 函数名称:main()
* 函数功能:单片机编程框架
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:01:57
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:01:57
* 框架说明:
		执行流程:
				1.数据定义
				(执行1次)
				---------------------

				2.Sys_Init()
				(执行1次)
				---------------------

				3,4,5
				(循环执行)
				3.Sys_Draw()数据绘制
				4.User_Updata()用户干预更新数据
				5.Sys_Updata()系统自动更新数据

-----------------------------------------------------------------------------------------------
*/
//  1.定义数据

void main()

{

	Sys_Init(); // 初始化
	while (1)
	{

		Sys_Draw();
		User_Updata();
		Sys_Updata();
	}
}
// 系统式编程框架-----------------------------------------------

/*
*----------------------------------------------------------------------------------------------
* 函数名称:Sys_Init()
* 函数功能:通常用于初始化一些参数
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:07:24
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:07:24
-----------------------------------------------------------------------------------------------
*/
void Sys_Init()
{
	EAXFR = 1;	  // 使能访问 XFR
	CKCON = 0x00; // 设置外部数据总线速度为最快
	WTST = 0x00;  // 设置程序代码等待参数,
				  // 赋值为 0 可将 CPU 执行程序的速度设置为最快
	/*IO口初始化*/
	P0M0 = 0x00;
	P0M1 = 0x00;
	P1M0 = 0x00;
	P1M1 = 0x00;
	P2M0 = 0x00;
	P2M1 = 0x00;
	P3M0 = 0x00;
	P3M1 = 0x00;
	P4M0 = 0x00;
	P4M1 = 0x00;
	P5M0 = 0x00;
	P5M1 = 0x00;
	UartInit();
	ES = 1;
	EA = 1;
	UartSendStr("Use uart1 \r\n");
}
/*
*----------------------------------------------------------------------------------------------
* 函数名称:Sys_Draw()
* 函数功能:数据显示,比如数码管,LED灯,TFT 用于数据展示
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:08:05
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:08:05
-----------------------------------------------------------------------------------------------
*/
void Sys_Draw()

{
	UartRev();
	

}

/*
*----------------------------------------------------------------------------------------------
* 函数名称:User_Updata()
* 函数功能:在程序运行中,通常有很多用户需要干预的过程,比如键盘输入
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:09:12
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:09:12
-----------------------------------------------------------------------------------------------
*/
void User_Updata()
{
}

/*
*----------------------------------------------------------------------------------------------
* 函数名称: Sys_Updata()
* 函数功能:通常用于系统自动维护执行的数据(无需用户干预)
* 入口参数:@
* 函数返回:@
* 当前版本: Ver1.0
* 修改时间:2023/03/25 22:10:37
* 作者:t176#qq.com
* 创建时间:2023/03/25 22:10:37
-----------------------------------------------------------------------------------------------
*/
void Sys_Updata()
{
}
/*----------------用户自定义的函数----------------*/

完整框架代码下载地址
https://download.youkuaiyun.com/download/dirhack/87630206

Keil5反人类?来试试VSCode写C51单片机程序! 不少使用Keil做C51程序开发的初学者都面临这一个极其严重的问题——这破玩意没有自动补全?!!!刚开始可能代码只有十几行,没有什么函数调用。但一旦开始使用模块化编程,或者定义了十几个变量的时候,你就会开始头皮发麻——这个函数叫啥来着?它要传什么参数来着?这个变量叫啥?我是谁?我在哪?我在干什么?那么,我们不妨祭出地表最强IDE——VSCode来解决这些问题吧! 阅读详情

相关推荐

ZLG UI单片机用户界面开发框架源码及文档

ZLG UI是一个专为嵌入式系统设计的图形用户界面框架,它的发展起源于对高效、轻量级UI库的需求。ZLG UI的起源可以追溯到2000年初,当时随着嵌入式设备的普及,对于能够适应资源有限环境的用户界面解决方案的需求日益增长。为了满足这一需求,ZLG UI采用了独特的设计理念,强调在有限的资源条件下提供流畅且美观的用户体验。ZLG UI框架允许开发者创建自定义控件和组件来满足特定的业务需求。开发者可以基于ZLG UI的基础组件库创建新的组件,也可以完全从零开始构建,ZLG UI框架提供了完整的支持。

weixin_42351520的博客 994

VScode环境兼容keil C251

VScode环境兼容keil C251

dirhack的博客 2626

单片机快速开发程序框架:教育与竞赛应用

简介:该程序框架名为“dsa.rar_程序框架”,针对单片机应用设计简化,专为水利院校教育和竞赛而设。框架包含底层驱动程序、用户界面显示程序以及Modbus通讯协议的修改框架,旨在提供一个基础结构,以便快速开发和调整单片机应用。内容覆盖硬件交互、用户交互和设备间通信三个核心模块,通过预先配置的模块和协议支持,降低开发复杂性,提升教育和竞赛中单片机应用的效率和可操作性。

weixin_36464343的博客 1011

解决在vscode上写c251代码的一些小bug

这个错误出现的原因是code是 Keil C51/C251 等编译器特有的关键字(用于指定变量存储在 Flash 中),但标准的 VS Code C++ 插件并不认识它,所以它会在 code 后面提示“应输入分号”,并导致整个数组解析失败。选择第一个,到环境配置文件里面更改,在defines中加上这一句话“STC32G144K246”,即指定芯片型号,这时会发现只剩下一个错误。在使用逐飞库或者龙邱库的时候,我们会发现即使代码没有问题,这边还是会报错,这时我们按住ctrl+shift+p。

2501_91417551的博客 336

VSCode+Keil协同开发[可运行源码]

本文介绍了如何通过VSCode插件Keil Assistant实现与Keil的协同开发,提升嵌入式开发的效率和舒适度。Keil Assistant是一款专为VSCode设计的辅助工具,支持Keil uVison 5及以上版本,仅适用于Windows平台。它能够加载Keil C51/C251/ARM项目,提供语法高亮、代码片段功能,并支持编译、下载等操作。文章详细介绍了插件的部署步骤,包括VSCode的安装、C/C++插件的配置以及Keil Assistant的安装与设置。此外,还提供了使用指南,帮助开发者快速上手。通过Keil Assistant,开发者可以在VSCode中更高效地管理Keil项目,享受更流畅的开发体验。

新手如何结合pbootCMS和宝塔面板快速构建网站

摘要: 新手可通过pbootCMS(轻量CMS)和宝塔面板(可视化工具)快速搭建网站,无需命令行。步骤包括:1) 准备服务器(Linux/CentOS7.x)和域名;2) 安装宝塔面板并配置LNMP环境(PHP7.4+MySQL5.7);3) 创建网站目录,上传并解压pbootCMS源码,设置文件权限;4) 运行安装向导,填写数据库信息和管理员账号;5) 测试前台/后台功能,优化性能并绑定域名。全程约30-60分钟,宝塔简化运维,pbootCMS便于内容管理,适合零基础用户。注意定期更新和备份以保障安全。

qinzhenyan的博客 1641

主流ESP单片机编程是啥语言及开发框架

ESP单片机编程以 C/C++ 为主,兼顾灵活性和性能;若追求开发效率,可选用 MicroPython 或 Arduino。根据项目需求和开发者背景选择合适的工具即可。

794

完整内、外期货量化交易系统源码可售

支持客户登录校验,支持所有的实时行情和汇总报价功能、实时资讯(报价,列表,分时,分钟成交明晰,),多线程支持盘后收盘作业下载(日线,5分钟线,15分钟, 30分钟,60分钟线,),支持从服务器下载相关运行配置(来自服务器动态配置信息,如收盘日期等),实现状态条显示。收盘作业包括日线、5分钟线、15分钟线、30分钟、60分钟线、2小时线、4小时线每日分时走势。综合信息栏显示用户账户信息、合约信息、当日委托单记录、当日成交记录、当日平仓记录、当日跟单记录、当日(月/周)排行榜、下单栏、持仓信息;

qq_35600909的博客 1805

针对于单片机的系统级开发框架tonyos

2、tonyos使用动态加载app技术,可以把不同的功能模块分解成不同的app运行,功能升级只需升级相对应的功能模块app就可以。可以非常简单实现应用程序的模块化。1、tonyos核心采用事件驱动调度模型,理论上可以满足单片机98%以上的应用场景,它不仅可以运行在32单片机之上,在低端的51单片机上也可以稳定可靠运行。3、tonyos封装的系统常用功能的api提供给上层应用调用,基本可以在不改变上层应用代码的情况实现应用功能的在不同单片机之间的移植。针对于单片机的系统级开发框架tonyos。

tonmy2019的博客 302

解决 PyInstaller 与 `pathlib` 包不兼容的问题

为了避免 PyInstaller 和pathlib包的兼容性问题,最简单的解决办法就是卸载不必要的pathlib包。只需在命令行中运行卸载命令,然后重新打包即可。

Winfredzhang的博客 3225

从原理到落地:Mamba-YOLOv8 全面实战指南(源码 + 训练 + 部署一次学会)

在目标检测领域,CNN与Transformer的较量从未停歇。本文提出一种革命性的架构——,将状态空间模型(SSM)首次引入YOLO框架。实验表明,该模型在COCO数据集上达到54.3% mAP@0.5,推理速度达89 FPS(RTX 4090),相比原版YOLOv8提升12.7%精度与23%速度。本文将完整揭示其技术原理与工程实现,助您掌握这一前沿技术。

FJN110的博客 120

推荐开源项目:SoloPi - 高性能单片机开发框架

是由阿里巴巴推出的一款高性能、易用的单片机开发框架,旨在简化物联网(IoT)设备的开发流程,提高开发效率,让更多开发者能够轻松地进行硬件编程。 ## 项目简介 SoloPi 提供了一套完整的软硬件解决方案,包括底层驱动、中间件服务和上层应用,覆盖了从传感器到云端的全链路开发。该项目基于 AliOS Things 操作系统,支持多种微控制器(MCU)平台,如 STM32、ESP32 等,并且兼容...

gitblog_00035的博客 818

【异常】Codybuddy Error Code: 14003 too many requests 限流报错问题排查与解决指南

14003报错本质为服务端限流拦截,并非账号封禁或程序致命故障,90%以上的场景可通过等待冷却+规范使用行为解决。通过本文的排查步骤,可快速恢复工具使用,同时规避后续重复触发该问题。

奶爸的编程之路,也就一周冷个三天 1253

单片机 架构 程序 经验总结_单片机程序框架开发知识总结

在接触过多种以下是我对单片机程序框架以及开发中一些常用部分的认识总结:任何对时间要求苛刻的需求都是我们的敌人,在必要的时候我们只有增加硬件成本来消灭它;比如你要8个数码管来显示,我们在没有相关的硬件支持的时候必须用MCU以动态扫描的方式来使其工作良好;而动态扫描将或多或少的阻止了MCU处理其他的事情。比如一个常用的情况有4个任务:然而必须指出其不妥之处:每个任务的时间片可能过长,这将导致程序的实时...

weixin_39664774的博客 213

KUKA机器人在自动运行时,动作不流畅,每个点位都有停顿的解决办法

KUKA机器人在自动运行时,动作不流畅,每个点位都有停顿的解决办法

Robot_PLC_HMI_Automation 4577

Altium Designer(AD24/25)导出DXF或DWG结构文件的方法

DXF(Drawing Exchange Format)和DWG(Drawing)是两种常见的CAD(计算机辅助设计)文件格式,常用于结构和硬件之间的沟通。本文介绍Altium Designer(AD24/25)导出DXF或DWG结构文件的方法。

fydar的博客 2323

单片机开发框架——TMF任务管理框架(一)

1 TMF框架简介 TMF(Tasks Managed Framework)是笔者在多年项目实践过程中,总结出来的一种任务管理框架。主要目标是对系统实行模块化管理,对多个任务模块的执行函数进行统一调度管理,既有利于实现“高内聚低耦合”,提高系统可靠性,同时也为任务处理带来极大便利。主要功能如下: (1)任务管理:当系统需要执行某个任务时,只须设置该任务结点的执行状态字,就可以由管理程序完成任务的执行。 (2)自定义任务阻塞:分全局阻塞、同...

happydoleph的专栏 1995

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

本文详细介绍了基于大模型的光伏功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)预测。文章首先讨论了数据准备与预处理,包括历史功率、气象、天文和电站特性数据的收集与特征工程。随后,针对不同预测需求,提出了多种深度学习模型:超短期预测采用1DCNN-LSTM混合模型,短期预测使用Transformer模型,中长期预测则通过多尺度特征提取模型和概率预测方法处理不确定性。文章还提供了模型训练、评估、部署和优化的完整流程,并开源了代码实现。未来研究方向包括结合数值天气预报、开发时

专注AI大模型,软件混淆,授权 1570

单片机简易开发框架

在开发MCU相关业务中,觉得功能复用性太差,于是自己搞了Framwork,这样一次开发之后,之后每次换MCU芯片,只需要完成底层适配层的适配,不用修改业务层的东西。架构如下:

harmonyluo的博客 6281

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

单片机裸机开发框架

前言 单片机逻辑开发框架,轮询,前后台,利用定时器的前后台 提示:以下是本篇文章正文内容,下面案例可供参考 一、轮询 该方法比较简单,在main函数内执行while(1),在while内顺序执行函数 void main(void) { //外设初始化 xx_Init(); while(1) { a(); b(); c(); } } 二、前后台 中断为后台,在中断内更新全局变量,利用...

void__void的博客 1902

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

推荐一个轻量级的嵌入式开发框架,适合单片机裸机编程——Zorb Framework

今天咱们来唠一个轻量级的嵌入式框架 ——,这玩意儿是专为那些跑不了Linux的“小身板”单片机量身定制的轻量级框架。简单来说,它就是给嵌入式开发者准备的“瑞士军刀”,帮你把调试、时间管理、事件处理这些脏活累活全包了,让开发效率直接起飞!项目地址:https://github.com/54zorb/Zorb-Framework项目主页嵌入式开发最头疼啥?!尤其在小内存单片机上,搞个调试输出都得折腾半天。Zorb Framework就是来救场的——它用C语言玩转“面向对象”思想(没错,C也能搞对象!

A_991128a的博客 761

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

机器人开发中单片机选型的工程决策框架

单片机选型是嵌入式系统设计的核心环节,本质是权衡实时性、外设资源、开发效率与硬件约束的技术决策过程。其原理根植于芯片架构(如Cortex-M3、AVR、Tensilica)与底层时钟树、中断机制、内存模型的耦合关系;技术价值体现在保障控制环路确定性、支撑多任务协同及降低量产风险;典型应用场景覆盖教学验证(STC89C52)、工业控制(STM32F103)、快速原型(Arduino)、无线智能体(ESP32)与边缘AI(Raspberry Pi)。本文聚焦机甲控制系统这一典型嵌入式工程场景,结合实时性、外设丰

kk1234的博客 615

单片机开发模式和程序开发框架(2)

1.单片机开发模式: 1.汇编,2,C语言;3.标准库;4,HAL库 2.程序开发框架: 软件设计: 1.软件系统; 2.分解为子系统或包; 3.分解为类或结构体; 4.分解成子程序:实现类或结构体

dffssv的博客 630

单片机---HLK-W801图形框架LVGL下开发(四)

在海凌科的w801上移植了LVGL8.3,并且配合触摸屏,打造了一个桌面框架,基于这个框架,能够进行联网,和一些本地操作,具备了计算器,温湿度检测,wifi联网,NTP以及天气预报功能

小人物的编程 5607
上一篇: reg52.h中文详细注解
程序猿Debug
博客等级 码龄12年 14粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿Debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值