简介:本文章主要通过程序控制实现按键控制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单片机用于车载空调控制器的实用电路
下一篇:基于时间触发嵌入式系统的设计与应用(3)
推荐阅读最新更新时间:2024-11-12 13:33
设计资源 培训 开发板 精华推荐
- LT3091ER 基本可调线性稳压器的典型应用
- 【涂鸦智能】冷暖调光灯 zigbee方案 免开发
- 【训练营】物联网时钟 吴开茂
- 使用 STMicroelectronics 的 TDA7564BPD 的参考设计
- 【征集令】Mini物联网时钟
- 使用 Dialog Semiconductor 的 SLG46140 的参考设计
- V-EVAL,用于开发基于 VNC1L MCU 器件的嵌入式 USB 主机系统的评估套件
- DM183021,PICDEM MC LV 开发板,用于控制无刷直流 (BLDC) 电机
- stc15f2k60s2开发板
- TCR2EN35、200mA、3.5V 输出电压 CMOS 低压降稳压器的典型应用