整体语言代码结构
简体中文
英文
编程语言
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.csdn.net/download/dirhack/87630206