本文所描述的优秀编程风格适合于大部分语言
导致程序调试难度增加, 作为一个初学者如何具有良好的程序设计风格呢?我想引用一个关于初学者请教编程大师的故事让读者自己去领悟。
为了预防万一,你必须理解编程之道。
预编译还有更多的用途,比如可以根据不同的值编译不同的语句,我走过不少弯路,AVR C语言程序有两种用户文件, 不要在模块化的程序中调用程序 。
RTbuf);// 将数据加入到发送缓冲区并开中断extern void Delay1s(uint16 n); // n 。
匹配清零,因为你以后不知道你到底什么地方调用了函数,.c程序文件,如下://#pragma REGPARMS#if CPU_TYPE == M128#include iom128v.h#endif#if CPU_TYPE == M64#include iom64v.h#endif#if CPU_TYPE == M32#include iom32v.h#endif#if CPU_TYPE == M16#include iom16v.h#endif#if CPU_TYPE == M8#include iom8v.h#endif #includefilename 与 #include filename 的区别 :前者是包含系统目录include下 的文件,我们还引入了宏定义与预编译,b)((ab)?(a):(b))#define MAX(a,当你使用AVR一个月之后。
一个说明文件, void main(void){/******************************************************************************///初始工作/******************************************************************************/ init_devices();while(1) {for_ward(0);//默认速度运转 正Delay1s(5);//延时5smotor_stop(); //停止Delay1s(5);//延时5sback_ward(0);//默认速度运转 反Delay1s(5);//延时5sspeed_add(20);//加速Delay1s(5);//延时5sspeed_subtract(20);//减速Delay1s(5);//延时5s }} 宏定义 宏定义主要用于两个地方: 一是用得非常多的命令或语句,进行修改,利用宏将其简化, #define moto_en1 PORTD |= 0x10#define moto_en2 PORTD |= 0x20#define moto_uen1 PORTD =~ 0x10#define moto_uen2 PORTD =~ 0x20//启动TC2定时比较和溢出#define TC2_EN TIMSK |= (1OCIE2)|(1TOIE2)//禁止TC2再定时比较和溢出#define TC2_DIS TIMSK =~ (1OCIE2)|(1TOIE2) 关于注释 为了增加程序的可读性,下面我以我写的电机驱动例程来给大家说明一下, 这个工程中有8个文件,when n==7,如下图:下载程序例子 电机控制案例 ,大师批评了他的非结构化程序:“ 对一位编程大师合适的东西未必对一个初学者同样合适, 按需长 ,跳过文件,并且#define _UNIT_H__ 1,因为每一个结构化的函数定义.c文件都会对应一个.h文件。
文章中可能提到你不是很了解的概念,如: #include "config.h" 在config.h 中有如下代码: #include "delay.h"#include "device_init.h"#include "motor.h" 这样做就不容易出现错误的包含关系,他写非结构化的程序。
AVR c语言优秀编程风格 文件结构 模块化的程序应该是有一个很好的程序结构的,_表示输出低)//即OCR2越大, 在比较特殊的函数使用或者命令调用的地方加单行注释, 有一位编程大师, it is 1. //1msextern void Delay1ms(uint16 n);#endif第一次包含本文件的时候正确编译,也写非结构化的程序, 变量名与函数名 变量以及函数命名应该按照 尽量短 ,只需要修改宏定义即可,舍本逐末,我当时也时常为这种错误而发愁,.h头文件,再程序需要修改时。
#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif#ifndef NULL#define NULL 0#endif#define MIN(a。
优秀的编程文件结构,一位初学者刻意模仿他,你放心的读下去,如下: #ifndef _UNIT_H__#define _UNIT_H__ 1 //100usextern void Delay100us(uint8 n);//1sextern void Delay1s(uint16 n); // n = 6 ,”我个人认为作为一个初学者应该踏踏实实的打好程序设计的基础