AVR单片机入门--MEGA端口操作

发布者:JoyfulJourney最新更新时间:2013-01-05 来源: 21ic 关键字:AVR单片机  MEGA  端口操作 手机看文章 扫描二维码
随时随地手机看文章

AVR端口是真正的双向端口,不像51伪双向。这也是AVR的一项优势,只是操作时大家注意DDRn就可以了。真正双向端口在模拟时序方面不如伪双向的方便。

DDRn PORTn PINn 解释:n为端口号:ABCDE

DDRn:控制端口是输入还是输出,0为输入,1为输出。个人记忆方法:一比零大所以往外挤,即1为输出,0为输入。

PORTn:从引脚输出信号,当DDRn为1时,可以通过PORTn=x等端口操作语句给引脚输出赋值。

PINn:从引脚读输入信号,无论DDRn为何值,都可以通过x=PINn获得端口n的外部电平。

当引脚配置为输入时,若PORTxn 为"1“,上拉电阻将使能。内部上拉电阻的使用在键盘扫描的时候还要说到。

端口更详细功能及介绍以及端口第二功能请参考数据手册。

端口引脚配置

DDxn PORTxn PUD (in SFIOR) I/O 上拉电阻说明

0 0 X 输入 No 高阻态 (Hi-Z)

0 1 0 输入 Yes被外部电路拉低时将输出电流

0 1 1 输入 No高阻态(Hi-Z)

1 0 X 输出 No输出低电平 ( 漏电流)

1 1 X 输出 No输出高电平 ( 源电流)

如果有引脚未被使用,建议给这些引脚赋予一个确定电平。最简单的保证未用引脚具有确定电平的方法是使能内部上拉电阻。但要注意的是复位时上拉电阻将被禁用。如果复位时的功耗也有严格要求则建议使用外部上拉或下拉电阻。不推荐直接将未用引脚与VCC 或GND 连接,因为这样可能会在引脚偶然作为输出时出现冲击电流。

下面我们来看例子:

void port_init(void)

{

PORTA = 0x03;

DDRA = 0x03;

PORTB = 0x00;

DDRB = 0x01;

PORTC = 0x00;

DDRC = 0x00;

PORTD = 0x00;

DDRD = 0x00;// 建议赋值为零

}

PORTA = 0x03;DDRA = 0x03;这两句使PA口的PA1和PA0处于输出状态,PA7—PA2处于输入状态。这里的0x03即二进制的00000011,从左到右对应于Pn7--Pn0八个IO口。

通过跑马灯程序来深入理解IO口的操作:

CODE:

//ICC-AVR application builder : 2006-11-21 9:20:57

// Target : M32

// Crystal: 7.3728Mhz

#include

#include

void _delay(unsigned char n) //延时函数定义

{

unsigned char i,j;

for(;n!=0;n--) //n*10ms

{

for(j=100;j!=0;j--) //100us*100=10ms

{

for(i=147;i!=0;i--) //delay 100us

;

}

}

}[page]

int main(void)

{

unsigned char i,j,k; //

PORTA=0xFF; //PA口设为输出高电平,灯灭

DDRA=0xFF; //PA口设置为输出

while(1)

{

i=1;

for (j=0;j<8;j++) //循环8次,即PA0~~PA7轮流闪亮

{

PORTA=~i; //反相输出,低电平有效,对应的灯亮

for (k=0;k<10;k++) _delay(100); //延时 100*10=1秒,可自行调节 i=i<<1; //左移一位,I的值将向下面的列表那样变化

// 0b00000001 PA0

// 0b00000010 PA1

// 0b00000100 PA2

// 0b00001000 PA3

// 0b00010000 PA4

// 0b00100000 PA5

// 0b01000000 PA6

// 0b10000000 PA7

}

}

}[Copy to clipboard]

其他IO口操作指令:

void main(void)

{

PORTA=0xff;

DDRA=0xff; //输出 模式 ,IO口上拉电阻有效,1为输出,0为输入。

PORTA=0xf0; //等

以下三条指令只对操作符号右边的数字位是一的位操作。

PORTA&=~0x70; //清零 0x70为 01110000 ,即把*三位清零,其余数位不变。

PORTA|=0x77; //置一 0x77为 01110111 ,即把*210六位清零,其余数位不变。

PORTA^=0x70; //翻转 0x70为 01110000,即*三位,如果是零变成1,是一变成0。

(P & 0x80)==0x80; //按位与 判断p的第七位是否是一,是则成立

}

关于1<

ADIF是一个寄存器变量,可以堪称数字4, 跟手册中的定义,包含芯片头文件的定义是一样的。

(1<

ADCSR=(1<

ADCSR|=(1<

ADCSR&=~(1<

while(ADCSR&(1<

while(1)

{

while(ADCSR&(1<

{

程序......

}

}

实践出真知:只看这样的说明是很枯燥的,从实践中去学习会是更好的途径,把这些代码都写到单片机里,一步一步调试运行,看看各个端口以及寄存器的效果,也锻练程序调试能力,和乐而不为呢?

关键字:AVR单片机  MEGA  端口操作 引用地址:AVR单片机入门--MEGA端口操作

上一篇:学习单片机为什么选用AVR单片机
下一篇:AVR单片机端口设置

推荐阅读最新更新时间:2024-03-16 13:15

基于AVR单片机的轻触式单键开关电路设计
引言: 单键开关电路已经广泛应用于PDA、手机和电子词典等数码产品中,其实现方式多种多样。一般可采用RS触发器、计数器以及采用555集成电路等等。在单片机的一些实际应用中,以上的实现方式会增加整个电路的复杂度,不能达到简洁、实用的效果。本文将介绍一种可以在单片机应用中实现的,简易、稳定的轻触式单键开关电路。 1 电路原理 如图1所示,DC-DC为一个带有关断控制端的直流稳压电源芯片,MCU是一个单片机。当按下S1时,Q1和D1导通,稳压芯片工作,为单片机供电。单片机马上将相应的I/O引脚置为输出高,这时Q1和Q2导通,整个电路进入工作状态。而后单片机再将这个I/O引脚设置为输入,由于上拉电阻R4的存在,Q1和Q2一直导通。
[单片机]
基于<font color='red'>AVR单片机</font>的轻触式单键开关电路设计
基于AVR单片机的中频电源测试系统
   1引言   电参数的测量和监控是电力系统的重要组成部分,本文从测试系统的工程学实际出发,完成了对中频电源系统的电压、电流、频率、功率因数、有功功率等参数的测量和实时监控,较好的实现了中频电源测试系统的功能和工程要求。   AVR单片机相对传统的 51系列单片机,具有更高的集成度和更强的功能,与 C语言有很好的兼容性,RISC指令架构使其运行速度可达 1MIPS/MHZ。随着其越来越广泛的应用,必将取代 51系列成为单片机的主流。其主要功能包括看门狗、FLASH程序存储器、 E2PROM、 A/D转换器、定时器、计数器、USART接口等多种功能,这使得本测试系统的硬件实现变得简单,可靠。    2硬件结构设计与实现
[电源管理]
基于AVR单片机的电梯外呼板系统设计
简介:本系统采用AVR单片机,使用CAN总线通信,通信安全可靠,实时性好,主要用在电梯系统中的外呼召唤显示,同时也可以用在电梯轿厢中用于楼层信息的显示。将其接入电梯仿真系统中,本系统能够快速响应,长时间运行期间安全可靠,增加和删除节点简单方便。 随着现代社会的发展,科学技术的进步,出现了众多高层建筑和智能建筑。电梯,作为高层建筑内部一种重要的交通工具,其应用规模日益扩大。而作为电梯系统中必不可少的一部分,电梯召唤显示板(简称电梯外呼板)的应用也随之剧增。 电梯外呼板应用于每层楼的电梯门外,供乘客及电梯维保人员使用。电梯外呼板将乘客及维保人员的需求信息通过CAN总线传达给电梯主板,电梯主板接收信息并执行相应的操作。同时,电梯
[单片机]
基于<font color='red'>AVR单片机</font>的电梯外呼板系统设计
AVR单片机状态与编程
(1)在AVR的器件手册中,使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态。未编程表示熔丝位状态为 1 (禁止);已编程表示熔丝位状态为 0 (允许)。 (2)AVR的熔丝位可以多次编程,不是一次性的OPT熔丝。 (3)熔丝位的配置可以通过并行方式、ISP串行方式和JTAG串行方式实现。 (4)AVR芯片加密锁定后(LB2/LB1=1/0,0/0)不能通过任何方式读取芯片内部的FLASH和EEPROM数据,但是熔丝位的状态仍然可以读取,只是不能修改配置。 (5)芯片擦除命令是将FLASH和EEPROM中的数据清除,并同时将两位锁定位状态配置成无锁定的状态(LB2/LB1=1
[单片机]
AVR单片机捕获中断实现红外线解码
摘要:AVR单片机是Atmel公司推出的一个单片机系列。由于该系列单片机的集成度高,因此,其软/硬件设计都变得更加简洁。文中介绍通过AVR单片机的捕获中断来实现红外线通讯解码的一种方法。 关键词:AVR;红外线解码;输入捕获中断 1 红外线编码 红外线编码是数据传输和家用电器遥控常用的一种通讯方法,其实质是一种脉宽调制的串行通讯。家电遥控中常用的红外线编码电路有μPD6121G型HT622型和7461型等。本文就以这些电路的编码格式来讨论怎样使用AVR单片机的捕获中断功能来实现其解码。 红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。接收部分则是完成红外线的接收、放大、解调,
[单片机]
AVR单片机的DS1302操作程序
变成浪子 //mega16 7.3728MHz石英晶体 iccavr6.31a //相关定义: #define uint unsigned int #define uchar unsigned char #define DS1302_RST 0 //pc0 #define DS1302_SDA 1 //pc1 #define DS1302_SCLK 6 //pc6 //ds1302相关 //DS1302_RST=1 #define Set_DS1302_RST() PORTC|=1 //DS1302_RST=0 #define Clr_DS1302_RST() PORTC&=~(1 //DS1302_SDA=1 #define S
[单片机]
C51、PIC和AVR单片机性能比较
传统51:适合菜鸟入门,容易上手,价格一般(从性价比方面说)。IDE环境推荐keil。 缺点:解密容易,一般功能也有,但AD、eeprom等功能要靠扩展,增加硬件和软件负担。 PIC:pic的好处就是各个型号的兼容性强,学好了PIC16f877a,16系列的就OK了,别的型号要用的时候拿出2分钟看看数据手册就行了。12系列、16系列、18系列也是充分的向下兼容。功能全,型号多,适于选型分析,抗干扰能力强。 缺点:解密容易,单片机价格贵(从性价比方面说)。 IDE环境:推荐picc+mplab。 avr mega系列:价格便宜(从性价比方面说),硬件结构适合C语言编程,功能齐全,不容易解密。抗干扰能力强。型号之间兼容性一般。应
[单片机]
为什么要选择AVR单片机
什么是AVR单片机?AVR单片机有什么优点?为什么要选择AVR单片机? AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点: 1:在相同的系统时钟下AVR运行速度最快; 2: 芯片内部的Flsah、EEPROM、SRAM容量较大; 3:所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP); 4:多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作; 5:每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强; 6:内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口;丰富的中
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved