单片机C语言编程模板(基础模板)
[程序开始处的程序说明]
/*********************************************************************** **********************
程序名:
编写人:
编写时间:年月日
硬件支持:
接口说明:
/*********************************************************************** **********************
说明:
/*********************************************************************** **********************/
[单片机SFR定义的头文件]
#include
#include
#include
#include
#include
[更多库函数头定义]
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
[常用定义声明]
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; //返回值
}
/*********************************************************************** ***********************/