您的位置 首页 芯闻

AVR 单片机完成 LED 灯闪耀

inkedInATmega16 有 4 个 8 位的双向 I/O 端口 PA, PB, PC, PD, 他们对外对应 32 个 I/O 引脚, 每一位都可以独立的用于逻辑信号的输入和输出. 在 5V

LinkedInATmega16 有 4 个 8 位的双向 I/O 端口 PA, PB, PC, PD, 他们对外对应 32 个 I/O 引脚, 每一位都能够独立的用于逻辑信号的输入和输出. 在 5V 作业电压下, 输出高电平时, 每个引脚可输出达 20mA 的驱动电流; 而输出低电平时, 每个引脚能够吸收最大 40mA 的电流.

AVR系列单片机一切的 I/O 寄存器能够经过两种不同的办法来拜访: 运用对 I/O 寄存器拜访的 IN 和 OUT 专用指令或许运用对 SRAM 拜访的指令. 其间 IN, OUT 指令周期为 1 个时钟周期别的, I/O 寄存器地址范围在 $00 – $1F 之间的寄存器(前 32 个)还能够经过指令完成位操作和位判别跳转. 如: SBI(I/O寄存器指定方位 1), CBI(I/O寄存器指定位清 0), SBIS(I/O寄存器指定位为 1 跳转), SBIC(I/O寄存器指定位为 0 跳转).具体的看手册才是王道.

仿真电路简图(LED或许看不到, 另存为或许新窗口翻开看吧):

测验程序, 更改能够调查不同现象, 有助了解. 和 51 的不同便是 IO 口的方向操控.

/*

* AVRGCC.c

*

* Created: 2012/5/27 18:09:54

* Author: KISSMonX

*/

#define F_CPU 4000000UL

#include

#include

int main(void)

{

PORTC = 0x80; // PC 口的第 0/7 位输出 0/1, LED1 和 LED2 都亮.

DDRC = 0x81; // 界说 PC 口的第 0 和 7 位为输出方法

_delay_ms(2000); // 开始时两个 LED 都要亮, 继续 2s 后进入循环.

while(1)

{

_delay_ms(200); // 库函数 ms 延时函数, 0.2s

PORTC = ~PORTC; // PC 口第 0/7 位取反后输出

}

return 0;

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/152689.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部