Coding Standards

From Wiki
Jump to: navigation, search

ARM Coding Standards

Formatting

dd

Example

Header File

Source File

8051 Coding Standards

Formatting

Example

Header File

#ifndef _C_CODING_STANDARDS_H_
#define _C_CODING_STANDARDS_H_

//------------------------------------------------------------------------------------
// Global CONSTANTS
//------------------------------------------------------------------------------------
#define TRUE 	1
#define FALSE 	0

//#define SOME_DEFINE
#define SOME_OTHER_DEFINE

//------------------------------------------------------------------------------------
// Macros
//------------------------------------------------------------------------------------
#define LED_INVERT()	LED_IO = !LED_IO //Macros should be made with '()' so that they look like regular functions (the last line does not need to be followed by a semicolon)

//------------------------------------------------------------------------------------
// Structures
//------------------------------------------------------------------------------------
struct struct_name
{
	unsigned char character;
	unsigned int integer;
};

union random_union
{
	struct struct_name name;
	unsigned char bytes[sizeof(struct_name)];
};

//------------------------------------------------------------------------------------
// Function Prototypes
//------------------------------------------------------------------------------------
void function_name(unsigned char parameters);

//------------------------------------------------------------------------------------
// Externs
//------------------------------------------------------------------------------------
extern bit variable_name;
unsigned char fixed_data_loaction;
unsigned char idata fixed_idata_location;

unsigned char bdata bitaddressable_char;
extern bit bitaddressable_char_bit0;
extern bit bitaddressable_char_bit1;
extern bit any_random_name;

#endif //_C_CODING_STANDARDS_H_

Code File

#pragma userclass (code = CODING_STANDARDS)
#pragma userclass (const = CODING_STANDARDS)

//------------------------------------------------------------------------------------
// Includes
//------------------------------------------------------------------------------------
#include "file.h"

#ifdef SOME_DEFINE
#include "other_file.h"
#endif

//------------------------------------------------------------------------------------
// Global Variables
//------------------------------------------------------------------------------------
// All variables are completely lower-case and delimited with underscores
bit variable_name;
unsigned char other_variable_name;
unsigned long big_ol_variable;
unsigned char fixed_data_location _at_ 0x32; //Cleared automatically on reboots
unsigned char idata fixed_idata_location _at_ 0x80; //Not cleared on warm reboots

unsigned char bdata bitaddressable_char;
sbit bitaddressable_char_bit0 = bitaddressable_char^0;
sbit bitaddressable_char_bit1 = bitaddressable_char^1;
sbit any_random_name = bitaddressable_char^7;

unsigned char code code_array[2] = {0x00, 0xFF};
unsigned char code big_code_array[6] = 
{
	0x01,
	0x00,
	0x01,
	0x00,
	0x02,
	0x00
};

//------------------------------------------------------------------------------------
// Function Name - Optional But Recommended Description
//------------------------------------------------------------------------------------
void function_name(unsigned char parameters) using 2 //All function names are completely lower-case and delimited with underscores
{
unsigned char i;

	// A line comment is formatted like this
	if(variable_name && !other_variable_name)
		variable_name = FALSE;
	
	if(!variable_name || (other_variable_name > 8))
	{
		variable_name = TRUE;
		fixed_idata_location = 0x0F; //TODO correct a random bug or add a certain feature
	}
	
#ifdef SOME_DEFINE
	do
	{
		other_variable_name--; //Code comment
	}while(other_variable_name < 5);
	
#ifndef SOME_OTHER_DEFINE
	for(i = 8; i; i--)
	{
		other_variable_name++;
		fixed_idata_location = ((other_variable_name&0x01) ? 0xFF : 0x80);
	}
#endif //!SOME_OTHER_DEFINE
#endif //SOME_DEFINE

#if defined SOME_DEFINE && !defined SOME_OTHER_DEFINE
	while(fixed_idata_location&0x07) //< 8
	{
		fixed_idata_location += 0x02;
		LED_INVERT(); //TODO DEBUG Don't forget to remove this before releasing to the public
	}
#elif
	
#endif //SOME_DEFINE && !SOME_OTHER_DEFINE
	
	switch(other_variable_name)
	{
		case 0:
		case 1:
			other_variable_name += 0x80;
			break;
		default:
			other_variable_name = 0x00;
	}
}