首页 理论教育AVR单片机与传感器基础:代码编程技巧

AVR单片机与传感器基础:代码编程技巧

【摘要】:1.提示CVAVR中,为了减小代码体积和加快程序运行速度,最好遵循下述原则:尽可能使用无符号变量;使用最小的数据类型,例如位型和无符号字符型;通过“Project”→“Configure”→“C Compiler”→“Compilation”→“Bit Variables Size”命令分配的位变量空间要尽可能的小,以便空出寄存器用以分配给其他全局变量;尽可能使用TINY模式;使用flash关键字把常量放在Flash中;程序调试结束后要关闭“Stack End Markers”选项,把程序再编译一次;与时间有关的部分用汇编语言来写。

1.提示(Hints)

CVAVR中,为了减小代码体积和加快程序运行速度,最好遵循下述原则:

(1)尽可能使用无符号变量

(2)使用最小的数据类型,例如位型和无符号字符型;

(3)通过“Project”→“Configure”→“C Compiler”→“Compilation”→“Bit Variables Size”命令分配的位变量空间要尽可能的小,以便空出寄存器用以分配给其他全局变量;

(4)尽可能使用TINY模式;

(5)使用flash关键字把常量放在Flash中;

(6)程序调试结束后要关闭“Stack End Markers”选项,把程序再编译一次;

(7)与时间有关的部分用汇编语言来写。

2.限制(Limitations)

3.12版本的CodeVision AVR C编译器有如下限制:

(1)不能用指向指针的指针;

(2)结构体或联合只能是一维的;

(3)结构体或联合不能作为函数的参数,只能使用指针来完成这个功能;

(4)结构体中的成员不能使用位型。位的存储要使用位变量。

除了标准C语言库,CVAVR还提供了精心设计的库,用于如下操作:

(1)Alphanumeric and Graphic LCD modules;

(2)Philips I2C bus;

(3)DS1302 and DS1307 Real Time Clocks;

(4)SPI;

(5)USB;

(6)Power management;

(7)Delays;

(8)Gray code conversion;(www.chuimin.cn)

(9)Maxim/Dallas Semiconductor 1 Wire protocol;

(10)National Semiconductor LM75 Temperature Sensor;

(11)Maxim/Dallas Semiconductor DS1820,DS18S20 and DS18B20 Temperature Sensors;

(12)Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat;

(13)Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs。

程序自动生成器可以自动生成实现下述功能的代码:

(1)External memory access setup;

(2)Chip reset source identification;

(3)Input/Output Port initialization;

(4)External Interrupts initialization;

(5)Timers/Counters initialization;

(6)Watchdog Timer initialization;

(7)UART(USART)initialization and interrupt driven buffered serial communication;

(8)Analog Comparator initialization;

(9)ADC and DAC initialization;

(10)SPI Interface initialization;

(11)Two Wire Interface initialization;

(12)USB initialization;

(13)CAN Interface initialization;

(14)I2C Bus,LM75 Temperature Sensor,DS1621 Thermometer/Thermostat and PCF8563,PCF8583,DS1302,DS1307 Real Time Clocks initialization;

(15)1 Wire Bus and DS1820/DS18S20 Temperature Sensors initialization;

(16)Alphanumeric and graphic display module initialization。