1、端口寄存器及配置
作为通用数字I/O使用时,每个引脚都具有3个寄存器位:DDRxn、PORTxn、PINxn
2、配置实例
(1)PA配置为输出
DDRA = 0XFF;
PORTA = 0X03; //PA输出值为0x03
(2)PA口配置为不带上拉的输入
DDRA = 0X00;
PORTA = 0X00;
i = PINA; //将PA口输入的值赋给变量i
(3)PB口配置为带上拉的输入
DDRB = 0X00;
PORTB = 0XFF;
i = PINB; //将PB口输入的值赋给变量i
3、I/O口的位操作
由于ICC AVR中并不支持AVR单片机的直接位操作,所以我们并不能像在Keil中那样进行位定义,然后直接进行位操作,在ICC AVR中进行位操作需要一个非常重要的指令BIT(X)—使用BIT(X)指令需要包含头文件即#include。所谓的BIT(X)指令就是左移指令,BIT(X)表示参数“1”左移X位,如BIT(2)表示“1”左移2位。
(1)PA口最低位输出0,其余位不变
DDRA = DDRA | BIT(0); //只有最低位输出,其余位保持原有状态不变
PORTA = PORTA & (~BIT(0)); //最低位输出低电平,其余位不变
为达到优化代码及方便阅读的目的,上述代码亦可变为
DDRA |= BIT(0);
PORTA &= (~BIT(0));
(2)PA口最低位输出高电平,其余位不变
DDRA |= BIT(0);
PORTA |= BIT(0);
(3)PA口最低位输出低电平,最高位输出高电平,其余位保持原有状态不变
DDRA |= BIT(0) | BIT(7);
PORTA &= ~BIT(0);
PORTA &= ~BIT(7);
关键字:AVR 单片机 IO端口
引用地址:
AVR单片机I/O端口应用
推荐阅读最新更新时间:2024-03-16 13:50
嵌入式单片机之STM32F103C8T6最小系统板电路设计参考
一。电源部分 设计了一个XH插座,以便使用3.7V锂电池供电,接入电压不允许超过6V。 二。指示灯部分 电源指示灯可以通过一个短路帽控制亮灭,以达到节电的目的。 三。复位电路 四。按键电路 KEY_1为用户自己定义 RST复位按键 WKUP为唤醒按键。 RST按键的作用: 程序下载的方式是SWD模式,BOOT0和BOOT1都接地,单片机一上电就会执行用户程序,所以不支持串口下载。 五。OLED电路 支持IIC和SPI两种通信模式 六。扩展口 七。电源部分 TIM1的CH1和CH2输出PWM控制一个轮子的转速。 TIM1的CH3和CH
[单片机]
STM32单片机GPIO端口使用
简介: 最近一段时间在学STM32,感觉都是在和寄存器打交道,首先先说下什么是寄存器。寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。 STM32的每个IO口有7个寄存器控制(1个IO口应该就是一组),分别是两个32位的端口配置寄存器,CRL和CRH。两个32位的数据寄存器IDR和ODR(这上面四个是重点),一个32位置位复位寄存器,一个16位复位寄存器,一个锁存寄存器LCKR. ____________________________________________________________________________________________________
[单片机]
学习AVR(八)堆栈指针
堆栈主要用于储存临时数据、本地变量和中断、子程序调用产生后的返回地址。堆栈指针寄存器通常指向堆栈的顶部。注意堆栈的执行是从较高的存储器地址到较低的存储器地址。也就是说,一条堆栈PUSH命令会使堆栈指针减小。 堆栈指针指向数据SRAM堆栈区域中子程序和中断堆栈被定位的位置。在任何子程序被调用或中断被使能之前,位于数据SRAM中的这一堆栈空间必须由程序定义好。堆栈指针必须被设在0x60之上。当使用PUSH指令向堆栈中压入一个数据时,堆栈指针自动减1;而当返回地址被子程序调用或中断压入堆栈时,堆栈指针自动减2。当使用POP指令把一个数据从堆栈中弹出时,堆栈指针自动加1;而由子程序的RET或中断程序的RETI弹出数据时,堆栈指针自动加2
[单片机]
一个51单片机的键盘扫描程序,算法简单有效
/**************************************** 键盘_不采用定时器_不延时 特点: 按键在松手后有效,灵敏度高,消耗资源少,运行效率高 独立键盘为:K01=P2^4;K02=P2^5;K03=P2^6;K04=P2^7; 矩阵键盘为:行(上到下)_P2.3_P2.2_P2.1_P2.0 列(左到右)_P2.7_P2.6_P2.5_P2.4 提供的操作函数: //独立键盘.无按键动作时其返回值num_key=0,否则返回按键号num_key extern unsigned char keyboard_self(); //矩阵键盘.无按键动作时其返回值num_key=0,否则
[单片机]
51单片机学习实践:用NTC电阻测温并显示在TM1637数码管
STC15单片机 实验名称:使用NTC电阻测量温度 实验内容: 使用NTC电阻测量温度并显示在数码管上 读取DS18B20模块测量温度作为参考 实验器材: STC15W408AS_DIP16 x1 DS18B20 x1 TM1637数码管 x1 1%精度 热敏电阻NTC-MF52-103/3435 10K 3435±1 x1 金属膜电阻 1/4W 1% 五色环 10千欧 10K x1 在STC15单片机上使用NTC(10K)电阻测量温度的基本方法: 电压-- 电阻-- 温度 1、先有一个准确且稳定的参考电压,外部可以用TL431A,内部可以使用STC15系列芯片自带的
[单片机]
支持IO-Link V1.1标准的微控制器开发套件(英飞凌)
英飞凌科技股份公司发布可以支持IO-Link V1.1标准的、基于英飞凌16位XE166和8位XC800微控制器的设计评估套件,基于高实时性XE166和低成本XC800微控制器,可支持最多8个带FIFO缓冲的IO-Link通道。与工业自动化领域经验丰富的合作伙伴携手合作开发的这个IO-Link评估套件,可使设备制造商轻松评估基于IO-Link的完整主机从设备系统的功能。 IO-Link是一种标准化点对点通信标准,可简化工厂自动化系统中传感器和执行器的集成度。该系统为终端用户带来了诸多益处,包括更简易、更便宜的电缆连接,远程诊断和配置等。IO-Link系统由一个IO-Link主设备和一个或多个IO-Link从设备(传感器或执行器)构
[嵌入式]
用单片机实现通用存贮器IC卡的读写
摘要: 本文对AT24系列存贮器和AT89系列单片机的特征及总线状态作为介绍,并以AT24C01与AT89C2051为例详细描述了通用存贮器IC卡的工作原理及用单片机对其进行读写操作的基本电路连接和软件编程方法。
关键词: E2PROM I2C总线 FLASH ROM IC卡 AT24C01 AT89C2051
1 概述
通用存贮器IC卡是由通用存贮器芯片封装而成的,由于它的结构和功能简单,生产成本低,使用方便,因此在各领域都得到了广泛的应用。目前用于IC卡的通用存贮器芯片多为E2PROM,其常用的协议主要有两线串行连接协议(I2C)和三线串行链接协议,其中比较常用的是ATMEL公司生产的
[应用]
PIC16C5X单片机概述
PIC系列单片机是美国Microchip公司推出的具有精简指令集高性能8位单片机,其优点是引脚少,性能优越,可直接带LED负载,具有低功耗省电模式,可广泛应用于复杂程度较低的场合。十多年来PIC系列单片正以迅猛的速度发展。 在这一章节里我们将以PIC16C5X系列单片机为例,详细讲解PIC单片机的内部结构及工作原理。 .PIC16C5X单片机概况 PIC16C5X属CMOS单片机,是一个低价位高性能8位单片机,使用了仅有33条精简指令集、单字节单周期指令,每条指令执行时间最快可达200ns。易于记忆和使用的指令系统可大大减少产品的开发时间。多种时钟振荡电路睡眠低功耗省电模式及WDT(看门狗)带码保护功能,这些特
[单片机]