AVR_GCC程序设计基础

摘要:
如果你想自己写,你需要把它放在你自己的项目目录中,但通常我们不会这样做,我们只需要在gcc安装程序的avr_Run MFile中修改基本参数并保存它们。项目:设置输出项目的名称。如果需要,您可以自己重写MCU:设置当前项目选择的cpuTARGET;设置输出目标调试文件DFCPU;设置cpu对象的时钟频率:列出构建时使用的目标文件的基本情况与上面的大致相同,但版本之间的关系不同。然而,主要的选择并不更少。

1.在avr studio的project options(工程选项里面)在General选项里面需要注意的是:

avr_studio

edit configuratio:这个选项的意思是当前项目的默认输出文件夹是default,而且这个文件夹的名称是可以改的

Device:是我们要选择工作的芯片

Frequency:是芯片的工作频率

Optimizatio:是程序编译时优化的级别主要是优化程序输出可执行文件的大小

unsigned char(-funsigned char):默认程序中的char类型为是无符号类型

其他的设置都基本上是默认的设置。

2.makfile

在使用avr_gcc的编译器是,makfile是必不可少,如果你是默认的话则在你的选项里面不需要选择use external makfile选项。如果你要自己编写的话就需要放到自己的工程目录下,但是一般的情况下我们不这样做,我们只是需要在avr_gcc的安装程序里面运行MFile修改里面的基本参数保存下就可以了。

PROJECT:设置输出的项目的名称,需要的话可以自己改写

MCU:设置自己当前项目所选用的cpu

TARGET:设置输出目标调试文件(xx.elf)

DF CPU:设置cpu的时钟频率

OBJECTS:列出built时使用的目标文件(xx.0)

基本的情况大致和以上差不多,但是肯能版本的关系称呼不一样,但是这几个主要的选项是比不可以少的。

3.基本的数据类型

signed char(char) 8位 -128~127

unsigned char 8位 0~255

char 8位 以上的两种之一,关键在开始的默认选择里面是什么就是什么

int(signed int) 16位 -32768-32767

unsigned int 16位 0~65535

long(signed long) 32位 -2147483648~2147483647

unsigned long 32位 0~4294967295

float/double 32位 -3.4*10(38)~3.4*10(38)

4.基本的技巧-分解取数

对整数的分解取数

unsigned char num=224;

unsigned char tab[3];

tab[0]=num/100;

tab[1]=num/10%10;

tab[2]=num%10;

对浮点数的分解取数

float num =123.45;

unsigned int Bum=num*100;

unsigned char tab[5],i;

for(i=4;i!=0xff;i—)

{

c[i] = y%10;

y/=10;

}注解:现在我们选择的判断条件是!=0xff不是0是因为我们要循环5次当i=0时是循环第五次,循环这次后由于i是unsigned char 类型,要是在循环一次的话就会溢出成为0xff这样就不符合条件就跳出循环。同理要是要你分解0x7f的话就只要把10换成16就可以,其他的不变

备注:/是取商求模,%是取余数。

4.基本的技巧-IO管脚的操作

要使PB端口逐位轮流循环置1:

1、可先定义变量i,并使之在0~7之间取值,然后使PORTB = 1<<i

2、可先定义变量i,并使之在0~7之间取值,PORTB = _BV(i)

要使PB端口逐位轮流循环置0:

1、可先定义变量i,并使之在0~7之间取值,然后使PORTB = ~(1<<i )

2、可先定义变量i,并使之在0~7之间取值,PORTB = ~_BV(i)

外接LED闪烁或者蜂鸣器发声:

1.#define LED_BLINK() PORTRD^=_BV(PD7)

2.#define BEEP() PORTD^=_BV(PD7)

5.数组、字符串、指针

数组:定义7段数码管0~9的共阳段码

const unsigned char tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

字符数组:定义并且在数码管上显示

1.定义:

unsigned char str[20]=”xmphoenix”;

unsigned char str[20]={“xmphoenix”};

unsigned char str[20]={‘x’,’m’,’p’,’h’,’o’,’e’,’n’,’i’,’x’};

2.显示:

for(i=0;i<9;i++){显示字符};

for(i=0;i<strlen(s);i++){显示字符};

i=0;while(s[i++]!=’\0’){显示字符}

备注:

3.同时字符串还可以这样定义

unsigned char str[]=”xmphoenix”;

usnigned char *str=”xmphoenix”;

在数组和字符串的最后面系统默认的加上了结束标志符0x00,十进制和ASCII码之间的转换:ASCII=十进制+0x30;

4.二维字符数组

定义:unsigned char str[][20]={“xmphoenix”,”ncut”,”beijing”}

显示:for(i=0;i<strlen(str[1]);i++){显示字符串str[1][i]}

5.gcc的相关函数

itoa(x,(char*)x,x) 有符号的10进制x转化成字符串保存在char *

itoa(x,(char*)x,x)无符号的10进制x转化成字符串保存在char *

还可以用sprintf来转换进制和ASCII码具体参考技术手册

指针:

unsigned char str[20]=”xmphoenix”;

unsigned char *st =str;

for(i=0;*str!=0;i++){显示字符};

免责声明:文章转载自《AVR_GCC程序设计基础》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇POJO类中布尔类型的变量都不要加is前缀详解用C#中的键值对遍历数组或字符串元素的次数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python系列:二、数据类型--技术流ken

标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dictionary(字典) Python3 的六个标准数据类型中: 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(...

C语言 屏幕截图 (GDI)

截取全屏幕 #include <windows.h> voidecho(CHAR*str); intCaptureImage(HWNDhWnd, CHAR*dirPath, CHAR*filename); intmain() { echo(TEXT("Ready")); CaptureImage(GetDesktopWindo...

通过grep,awk,sed的简单应用获取网卡信息。

本文主要通过shell命令来实现获取网卡信息。通过cmd_shell函数可以将运行命令后的输出返回。    int cmd_shell(char *shellcmd, char *outbuffer, int size) { FILE *stream; char buffer[size]; memset(buffer, 0...

libpcap编程实例

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <pcap.h> 4 #include <errno.h> 5 #include <sys/socket.h> 6 #include <netinet/in...

Delphi的字符(Char),字符串(String),字符串指针(PChar),字符数组arrayofchar(来自http://delphi.cjcsoft.net/论坛)

Delphi有三种类型的字符: AnsiChar这是标准的1字节的ANSI字符,程序员都对它比较熟悉。 WideChar这是2字节的Unicode字符。 Char在目前相当于AnsiChar,但在Delphi 2010 以后版本中相当于WideChar. 记住因为一个字符在长度上并不表示一个字节,所以不能在应用程序中对字符长度进行硬编码, 而应该使用Siz...

iOS开发-OC语言 (一)oc数据类型

分享一套以前学习iOS开发时学习整理的资料,后面整套持续更新: oc数据类型 数据类型:基本数据类型、指针数据类型 基本数据类型:数值型、字符型(char)、布尔型、空类型(void) 指针数据类型:类(class)、id 数值型:整数类型int、浮点型float、double c和oc的基本数据类型 int:声明整型变量 double:声明双精度变量 f...