AVR_GCC程序设计基础

2019-12-03来源: eefocus关键字:AVR  GCC  程序设计基础

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<

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

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

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

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

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

备注:


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


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  程序设计基础 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481816.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:IAR for AVR Full版本破解步骤
下一篇:AVR GCC对端口的操作指南

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVR开发 Arduino方法(四) 串行通信子系统
  Arduino UNO R3主处理器ATMega328P的串行通信子系统可以用于与计算机、外设或其他微控制器进行通信,它支持3种串行通信方式:通用同步/异步收发器,串行外设接口和两线串行接口。1. 通用同步/异步收发器  在串行通信中,波特率用来衡量传输速率的快慢,同步和异步的对象是波特率的时钟信号;同步通信的设备之间需要一条额外的时钟线,也因此同步方式可以提供更高的波特率;这里将以异步为例。  下面的示例可以使通过串口发送给Arduino的数据回显到串口监视器上: 1 // SerialEcho.ino 2 char data; 3  4 void
发表于 2019-12-05
AVR开发 Arduino方法(四) 串行通信子系统
AVR开发 Arduino方法(三) 定时/计数器子系统
Arduino UNO R3的主处理器ATMega328P拥有3个定时/计数器,它们分别是Timer0,Timer1和Timer2;它们都通过对来自内部或外部的脉冲信号进行计数的方式完成基本的定时/计数功能以及一些其他的功能。Timer0和Timer2是8位定时/计时器,Timer1是16位定时/计数器;下面以Timer2为例讨论定时/计数器子系统的典型应用,这些内容同样适用于Timer0和Timer1。1. 精准延时在前面的例子中,已经使用了一些与精准延时相关的Arduino库函数:   delay(ms):延迟一段时间  ms:延迟的时长,单位是毫秒 请注意,上面的Arduino
发表于 2019-12-05
AVR开发 Arduino方法(三) 定时/计数器子系统
AVR开发 Arduino方法(二) 中断子系统
在了解中断子系统之前,首先要了解中断的概念。你正在看书,这时电话响了,你会怎么做呢?相信大多数人会这样:先标记看到的位置,接完电话回来后继续阅读。这就是一个现实生活中中断的例子,我们把“电话响了”成为中断源。Arduino UNO R3的主处理器ATMega328P拥有26个中断源,如下表所示:向量号程序地址中断源中断定义中断服务程序名称10x0000RESET外部电平复位,上电复位,掉电检测复位,看门狗复位20x0002INT0外部中断请求0INT0_vect30x0004INT1外部中断请求1INT1_vect40x0006PCINT0引脚电平变化中断请求0PCINT0_vect50x0008PCINT1引脚
发表于 2019-12-05
AVR开发 Arduino方法(一) 端口子系统
  Arduino UNO R3的主处理器ATMega328P上有3个8位的输入/输出端口,分别是PB,PC和PD。Arduino IDE提供的Blink示例可以帮助我们了解端口的数字输出功能:  1 // Blink.ino 2 int led = 13; 3  4 void setup() { 5   pinMode(led, OUTPUT); 6 } 7  8 void loop() { 9   digitalWrite(led, HIGH);10  &nbs
发表于 2019-12-05
AVR开发 Arduino方法(一) 端口子系统
AVR开发 Arduino方法(附一) 工具链与调试技术
开“AVR Source Code”和“AVR Variables”对话框,从中可以查看程序源代码以及变量值的情况:从“AVR Source Code”对话框中找到主函数,找到setup()函数和loop()函数的调用语句,双击打上断点,运行到断点处,就可以开始调试了:(2) 使用Visual Studio进行硬件调试安装带有C++组件2012或更新版本的Visual Studio后,在http://www.visualmicro.com/page/Arduino-Visual-Studio-Downloads.aspx中下载Visual 
发表于 2019-12-05
AVR开发 Arduino方法(附一) 工具链与调试技术
AVR+FPGA实现六路闭环电流控制程序
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity XTKZQ isport(    rst,clk        :    in        std_logic;    --时钟和复位信号,复位信号由AVR初始化手动给出    --avr 读写相关信号线    ale,rd
发表于 2019-12-05
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved