查看: 4345|回复: 14

单片机C语言编程模板(基础模板)

[复制链接]
发表于 2010-10-14 19:27:00 | 显示全部楼层 |阅读模式
关键词: 单片机C语言
[程序开始处的程序说明]

/*********************************************************************************************
程序名:   
编写人:     
编写时间:  年 月 日
硬件支持:  
接口说明:                               
/*********************************************************************************************
说明:

/*********************************************************************************************/

[单片机SFR定义的头文件]

#include //通用89C51头文件
#include //通用89C52头文件
#include //STC11Fxx或STC11Lxx系列单片机头文件
#include //STC12Cx052或STC12Cx052AD系列单片机头文件
#include //STC12C5A60S2系列单片机头文件

[更多库函数头定义]

#include     //设定插入点
#include     //字符处理
#include     //定义错误码
#include     //浮点数处理
#include     //文件输入/输出
#include     //参数化输入/输出
#include //数据流输入/输出
#include     //定义各种数据类型最值常量
#include     //定义本地化函数
#include     //定义数学函数
#include     //定义输入/输出函数
#include     //定义杂项函数及内存分配函数
#include     //字符串处理
#include //基于数组的输入/输出
#include     //定义关于时间的函数
#include     //宽字符处理及输入/输出
#include     //宽字符分类
#include     //51基本运算(包括_nop_空函数)

[常用定义声明]

sfr [自定义名] = [SFR地址] ; //按字节定义SFR中的存储器名。例:sfr P1 = 0x90;
sbit [自定义名] = [系统位名] ; //按位定义SFR中的存储器名。例:sbit Add_Key = P3 ^ 1;
bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED;
#define [代替名] [原名] //用代替名代替原名。例:#define LED P1 / #define TA 0x25

unsigned char [自定义名] ; //定义一个0~255的整数变量。例:unsigned char a;
unsigned int [自定义名] ; //定义一个0~65535的整数变量。例:unsigned int a;

[定义常量和变量的存放位置的关键字]

data    字节寻址片内RAM,片内RAM的128字节(例:data unsigned char a;)
bdata    可位寻址片内RAM,16字节,从0x20到0x2F(例:bdata unsigned char a;)
idata    所有片内RAM,256字节,从0x00到0xFF(例:idata unsigned char a;)
pdata    片外RAM,256字节,从0x00到0xFF(例:pdata unsigned char a;)
xdata    片外RAM,64K字节,从0x00到0xFFFF(例:xdata unsigned char a;)
code    ROM存储器,64K字节,从0x00到0xFFFF(例:code unsigned char a;)


[选择、循环语句]

if(1){

//为真时语句

}else{

//否则时语句

}

--------------------------

while(1){

//为真时内容

}

--------------------------

do{

//先执行内容

}while(1);

--------------------------

switch (a){
    case 0x01:
        //为真时语句
        break;
    case 0x02:
        //为真时语句
        break;
    default:
        //冗余语句
        break;
}

--------------------------

for(;;){

//循环语句

}

--------------------------


[主函数模板]

/*********************************************************************************************
函数名:主函数
调 用:无
参 数:无
返回值:无
结 果:程序开始处,无限循环
备 注:
/**********************************************************************************************/
void main (void){

    //初始程序

    while(1){

        //无限循环程序

    }
}
/**********************************************************************************************/


[中断处理函数模板]
/*********************************************************************************************
函数名:中断处理函数
调 用:无
参 数:无
返回值:无
结 果:
备 注:
/**********************************************************************************************/
void name (void) interrupt 1 using 1{

    //处理内容
}
/**********************************************************************************************/

[中断入口说明]

interrupt 0 外部中断0(ROM入口地址:0x03)
interrupt 1 定时/计数器中断0(ROM入口地址:0x0B)
interrupt 2 外部中断1(ROM入口地址:0x13)
interrupt 3 定时/计数器中断1(ROM入口地址:0x1B)
interrupt 4 UART串口中断(ROM入口地址:0x23)
(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)

using 0 使用寄存器组0
using 1 使用寄存器组1
using 2 使用寄存器组2
using 3 使用寄存器组3


[普通函数框架]

/*********************************************************************************************
函数名:
调 用:
参 数:无
返回值:无
结 果:
备 注:
/**********************************************************************************************/
void name (void){

//函数内容

}
/**********************************************************************************************/

/*********************************************************************************************
函数名:
调 用:
参 数:0~65535 / 0~255
返回值:0~65535 / 0~255
结 果:
备 注:
/**********************************************************************************************/
unsigned int name (unsigned char a,unsigned int b){

//函数内容

return a; //返回值
}
/**********************************************************************************************/
发表于 2010-10-28 21:13:41 | 显示全部楼层
强顶一下
发表于 2010-11-29 22:43:42 | 显示全部楼层
ding....
发表于 2010-11-30 00:48:51 | 显示全部楼层
发表于 2010-12-1 22:42:59 | 显示全部楼层
可能有用,因为从来没有这样正规写过程序,也许以后会慢慢改过来
发表于 2010-12-3 23:48:57 | 显示全部楼层
太有用了
发表于 2010-12-5 23:21:45 | 显示全部楼层
太有用了
发表于 2010-12-7 11:25:07 | 显示全部楼层
模板都有了,强
发表于 2010-12-7 11:56:03 | 显示全部楼层
发表于 2010-12-9 21:27:16 | 显示全部楼层
正是我所需要的,谢谢!
发表于 2010-12-17 01:58:10 | 显示全部楼层
谢谢分享
发表于 2010-12-21 20:47:32 | 显示全部楼层
看来今后还是有必要规范自己的代码风格了,这种模板看起来好看多了
发表于 2010-12-28 15:46:37 | 显示全部楼层
发表于 2011-1-9 20:33:33 | 显示全部楼层
对于菜鸟有积极的指导作用,顶!
发表于 2015-2-7 10:42:30 | 显示全部楼层
支持一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表