AVR单片机-- I/O口的使用

来源:本站
导读:目前正在解读《AVR单片机-- I/O口的使用》的相关信息,《AVR单片机-- I/O口的使用》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《AVR单片机-- I/O口的使用》的详细说明。
简介:本文章主要通过程序控制实现按键控制LED 灯的亮灭,按一下亮,再按一下灭,如此循环往复,并学习AVR 单片机的I/O口如何配置为输入和输出。

//文件名:delay_rest.c

//文件描述:实现按键控制LED 灯的亮灭,按一下亮,再按一

//下灭,如此循环往复。

//实验目的:学习AVR 单片机的I/O口如何配置为输入和输出

//当前版本号:V1.0

//---------------------------------------------------------------------

//----------------------------start------------------------------------

#include"iom88v.h"

#define uint16 unsigned int

#define uchar unsigned char

void delay (uint16 i);

void key_scnf(void);

uchar count_key=0;

void main(void)

{

// DDRC &= 0XFE; //PC0 input

DDRC |= 0x02; //PC1 output

while(1)

{

key_scnf( );

if(count_key)

{

PORTC |= 0x02; //PC1 = 1;

}

else

{

PORTC &= 0xfd; //PC1 = 0;

}

}

}

//-------------------------------------------------------------------

//函数原型:void delay (uint16 i);

//入口参数:uint16 i:延时变量

//出口参数:无

//功能:实现延时功能

//-------------------------------------------------------------------

void delay (uint16 i)

{

uchar j;

while(i--)

{

for(j=125;j>0;--j)

{

;

}

}

//-------------------------------------------------------------------

//函数原型:void key_scnf(void);

//入口参数:无

//出口参数:无

//功能:实现读键值功能

//-------------------------------------------------------------------

void key_scnf(void)

{

uchar c_pinb;

DDRB |= 0x20; //RB5设置为输出

PORTB |= 0x20; //RB5输出1

//delay(1); //延时一段时间

DDRB &= 0xdf; //RB5 设置位输入 =0

c_pinb = PINB;

if((c_pinb&0x20)!=0x20) //判断portb5的键有无按下

{

delay(1);//延时消抖

//DDRB |= 0x20; //RB5设置为输出//注释掉的部分,不必须

//PORTB |= 0x20; //RB5输出1

//delay(1); //延时一段时间

// DDRB &= 0xdf; //RB5 设置位输入 =0

c_pinb = PINB;

if((c_pinb&0x20)!=0x20) //真的按下

{

//DDRB |= 0x20; //RB5设置为输出

//PORTB |= 0x20; //RB5输出1

//delay(1); //延时一段时间

// DDRB &= 0xdf; //RB5 设置位输入 =0

//c_pinb = PINB;

while((c_pinb&0x20)!=0x20) //按键没弹起,等键释放;关键,开始时写成!=0出错

{

//DDRB |= 0x20; //RB5设置为输出

//PORTB |= 0x20; //RB5输出1

//delay(1); //延时一段时间

// DDRB &= 0xdf; //RB5 设置位输入 =0

c_pinb = PINB;

}

count_key += 1;

if(count_key==2)

count_key = 0;

}

}

}

提醒:《AVR单片机-- I/O口的使用》最后刷新时间 2024-03-14 00:54:42,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《AVR单片机-- I/O口的使用》该内容的真实性请自行鉴别。