历史上的今天
返回首页

历史上的今天

今天是:2025年02月28日(星期五)

正在发生

2020年02月28日 | AVR单片机-- I/O口的使用

2020-02-28 来源:eefocus

简介:本文章主要通过程序控制实现按键控制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;


}


}


}


推荐阅读

史海拾趣

全鹏(CHAMPION)公司的发展小趣事

在2003年,全鹏公司成为巴西Coletek集团的一员,开始了其在南美洲市场的征程。起初,全鹏在巴西设立了提供系统组装所需机壳、键盘、鼠标、喇叭等配件的组装工厂,以满足当地市场的初步需求。随着业务的不断扩大,全鹏在2004年与当地市政府合作,规划并建设了一座总厂房面积达8000平方公尺的新工厂,配置了六条组装生产线和两条印刷生产线,以及一个发货仓库。这座新工厂迅速成为全鹏在巴西市场的发货中心,推动了全鹏在当地的业务增长。

C-TON Industries公司的发展小趣事

在电子行业的早期阶段,C-TON Industries公司以其创新的技术理念脱颖而出。公司创始人李先生,一位电子工程领域的专家,意识到半导体技术的重要性,并决定将其作为公司的发展重点。通过不断投入研发,C-TON成功开发出了一款性能卓越的芯片,这款芯片在速度和稳定性上都远超当时市场上的同类产品。这一创新不仅赢得了客户的青睐,也帮助C-TON在市场上取得了突破性的进展。

Amphenol(安费诺)公司的发展小趣事

随着公司规模的扩大,C-TON意识到单凭自己的力量难以在竞争激烈的电子行业中立足。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名的电子产品制造商建立合作伙伴关系,C-TON成功将其芯片技术应用于对方的产品中,进一步扩大了市场份额。这一合作不仅提升了C-TON的知名度,也为其带来了稳定的订单和收入来源。

ATC [American Technical Ceramics]公司的发展小趣事

企业的发展离不开人才的培养和团队的建设。假设ATC高度重视人才培养和团队建设,投入大量资源进行员工培训和团队建设活动。公司不仅注重员工的技能提升和职业发展,还积极营造一种积极向上的企业文化氛围。通过这些努力,ATC培养了一支高素质、富有创新精神的团队,为公司的发展提供了有力的人才保障。

请注意,以上故事均是基于假设和一般性的行业趋势构建的,并不代表ATC公司的实际发展历程。如果您需要了解关于ATC公司的具体信息和发展故事,建议查阅相关的官方资料、行业报告或新闻报道。

Delkin Devices公司的发展小趣事

Delkin Devices公司成立于1986年,总部设在美国加利福尼亚州的圣迭戈市。公司由一群富有远见和创造力的工程师和企业家创立,他们看到了未来数据存储技术的巨大潜力。在创立初期,Delkin Devices专注于研发和生产高质量的闪存存储设备,以满足当时市场对数据存储不断增长的需求。通过不断的技术创新和优质的客户服务,Delkin Devices逐渐在电子行业中崭露头角。

EAO公司的发展小趣事

面对全球市场的竞争压力,EAO公司坚定实施全球化战略。公司在全球范围内建立了完善的销售网络和售后服务体系,为客户提供及时、高效的服务。同时,EAO公司还积极寻求与国际知名企业的合作机会,共同开拓市场、分享资源。通过全球化战略的实施,EAO公司不断提升品牌影响力和市场竞争力。

问答坊 | AI 解惑

STC12C5201AD 系列 MCU 的 A/D 转换程序

STC12C5201AD 系列 MCU 的 A/D 转换…

查看全部问答>

智能仪器(单片机应用系统设计).

智能仪器(单片机应用系统设计).…

查看全部问答>

晒晒我的东西,关于SD卡的

那个带SD卡的是个模块,带处理器,整合了FAT32,接口是串口(UART) 51单片机串口115200bps读写,写入后文件样子如下: …

查看全部问答>

高人指教,8051光电隔离和继电驱动

高人指教下  用在8051  p0.1--p0.5口上的  光点隔离 和继电驱动   最好有99se编辑好的原理图   一般画的也行 我对单片机不太了解  所以各位高人见谅   谢谢了 &nbs ...…

查看全部问答>

大侠快来救命阿,关于AM29LV320D的软件方法去除写保护问题??

我试了很多AM29LV320D的flash,bottom boot的,都是前四个扇区写保护了?这是什么原因?手册中没有找到软件方法去除写保护的命令,那这些扇区怎么写保护的,怎么去除呢。现在其他扇区都可以正常读写…

查看全部问答>

"0123456789abcdef"[i]

看到一种比较特殊的写法, \"0123456789abcdef\" [ i ],看起来挺神奇的,暂时理解成匿名的全局字符串变量指针吧,期待有一天能用上吧。 补充一下,还有这样写的: 5[\"hello world!\"] [ 本帖最后由 medky 于 2011-5-14 19:28 编辑 ]…

查看全部问答>

程序调不出来了,崩溃中,,,

在一个工程中做了些改动,其中一个函数分离出去测试,怎么测怎么通,,一点问题没有,放到大程序里就一点反应没有了,,崩溃了。。支持一下啊,希望能调通。。。 [ 本帖最后由 aahellaa 于 2011-8-16 10:29 编辑 ]…

查看全部问答>

我想要分享这个啊,了解下啊

有高手能解说下么,在下只想学习啊…

查看全部问答>

招聘VC软件工程师

本职位挑战高薪,有意者可来应战哦       一定来哦,52297030;hr@queentest.com; http://www.queentest.cn 工作职责:1)基于Windows/linux系统下的软件设计和研发2)参与公司各大小项目的研发3)在团队中能主动发挥自身各 ...…

查看全部问答>