mega16 入门
来源:互联网 发布:淘宝退货运费谁出运费 编辑:程序博客网 时间:2024/06/08 16:41
个人认为单片机学习最主要的就是IO口的控制与中断的操作。其它东西都仅仅是作为方便开发使用的,并且都可以通过IO与中断或者外部扩展实现。
MEGA系列的IO口操作及其简单,现在介绍下IO口的操作
IO口主要有两个作用,输入与输出。下面是从用户手册里抄的一张表,当然,只需每次要用的时候看看就好了,不用背。
端口引脚配置
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 输出高电平 ( 源电流)
从上表可以很明显的看出,DDxn 负责控制 IO口的输入输出模式,PORTxn负责控制IO口的电平,PUD是IO特殊寄存器中的一个位,表示是否禁用上拉电阻。
通过设置DDxn与PORTxn就可以设置IO口的输入输出操作了。
下面贴出一个点亮LED矩阵的程序。
<pre name="code" class="cpp">/*datatyp.h*/#ifndef DATATYP_H_ #define DATATYP_H_//根据个人喜好,定义一些变量typedef unsigned char uchar; typedef unsigned char int8;typedef int int16;//定义我要点亮的LED矩阵的数据类型 点亮的是8*8的矩阵typedef struct { int8 graph[8]; int16 light_time;}PHOTO;#endif /* DATATYP_H_ *//*data.h*///存储一些我要显示的图片#ifndef DATA_H_#define DATA_H_#include "datatyp.h"const int16 dynamicN = 1; PHOTO photo[1] = { /*把所有的灯都点亮,前八个数据的二进制形式表示哪些灯要点亮,最后一个数据表示图片显示多久*/ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,10};#endif /* DATA_H_ *//*Led.c*/#include <avr/io.h>#include <util/delay.h>#include "datatyp.h"#include "data.h"//负责点亮每幅图void static_photo(PHOTO * p){ int8 re; int16 t; for (re = 0; re < 10; re++)//仅仅是为了提供亮度 for (t = 0; t < p->light_time; t++){//类似于计时 int8 i; for (i = 0; i < 8; i++) { PORTA = 1<<i; //将对应的IO口设置成自己需要的电平,由于当时使用了一个ULN 2803,所以是设置成高电平 PORTB = 0xff - p->graph[i];//将图片赋给B口 _delay_ms(2); //延时 2 ms PORTA = 0x00; //基本是句废话 PORTB = 0xff; //这句话可以避免重影的感觉,可以不写感受一下 } }}void dynamic_photo(){ int8 i; //显示每幅图片 for (i = 0; i < dynamicN; i++){ static_photo(&photo[i]); }}int main(void){ //将所有口都设置为输出口,当然如果没有ULN 2803之类的IC,需要将IO根据需要设置成相应的模式,可以从表里面查得自己的需求 DDRA = 0xff; DDRB = 0xff; while(1) { dynamic_photo(); //TODO:: Please write your application code }}
0 0
- mega16 入门
- mega16驱动1602液晶
- mega16驱动ds12c887
- ubuntu下AVR/MEGA16开发
- AVR-4 自制 mega16 小板
- MEGA16游戏开发板驱动
- 按键的种类 基于Mega16
- AVR Mega16的熔丝位用法总结
- AVR Mega16的熔丝位用法总结
- AVR笔记8:mega16再次锁死
- AVR单片机笔记 mega16 PC口2345管脚
- ISD1700系列的SPI操作,及其与MEGA16的简单应用
- DS1302,MEGA16,带74HC595的LED数码管显示屏制作万年历
- 20170922在arduino IDE添加mega16\32\64\128 mcu支持
- 利用AVR(MEGA16)片内IIC 实现AT24C256 的连续写(页写)与连续读程序
- 入门
- 入门
- 入门
- 内存泄漏问题
- fusioncharts改变折线的每段颜色
- 经济学与计算机行业
- 几个有用的网站/博客 关于JAVA 算法。
- USB枚举过程分析
- mega16 入门
- bzoj1588: [HNOI2002]营业额统计 SBT&&Splay
- Perl--包和模块
- Fedora21中我所使用的软件安装记录
- Java中,关于在子类构造函数中调用父类构造函数完成对象创建的简单分析
- http://blog.csdn.net/linxcool/article/details/7094460
- 分布式系统的事务处理
- 第十六周项目4-用函数指针调用函数
- android之ViewFlipper实现左右滑动动画效果