完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
不同的开发环境, C 语言的语句不同, 主要看头文件里有没定义声明, 开始啥也不懂凑活着来吧。
开发环境为AVR Studio5.1和WinAVR-20100110. 也可以选用 IAR 或者Code Vision AVR 或 ICC AVR等。 没工夫捣鼓了。 ATmega16 有 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 《avr/io.h》#include 《util/delay.h》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;} |
|
|
|
只有小组成员才能发言,加入小组>>
2548 浏览 0 评论
1146浏览 2评论
745浏览 1评论
499浏览 0评论
265浏览 0评论
427浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 09:45 , Processed in 1.316505 second(s), Total 79, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号