历史上的今天
返回首页

历史上的今天

今天是:2025年05月18日(星期日)

正在发生

2018年05月18日 | AVR读写IO口右一方法(借用ATmel)

2018-05-18 来源:eefocus

//头文件
#ifndef __always_inline__
#define __always_inline__  _Pragma("inline=forced")inline
#endif

#define AVR_GPIO_ASSIGN(name, port, bit) \
__always_inline__ static void   GPIO_##name##_Set(void)            {PORT##port |= (1 << bit);}\
__always_inline__ static void   GPIO_##name##_Clr(void)            {PORT##port &= ~(1 << bit);}\
__always_inline__ static void   GPIO_##name##_Toggle(void)         {PORT##port ^= (1 << bit);}\
__always_inline__ static uint8  GPIO_##name##_Read(void)           {return (PIN##port & (1 << bit)) !=0;}\
__always_inline__ static uint8  GPIO_##name##_DdrRead(void)        {return (DDR##port & (1 << bit)) !=0;}\
__always_inline__ static void   GPIO_##name##_MakeOut(uint8 x)     {(x)?(PORT##port |= (1 << bit)):(PORT##port &= ~(1 << bit)); DDR##port |= (1 << bit);}\
__always_inline__ static void   GPIO_##name##_MakeIn(uint8 x)      {DDR##port &= ~(1 << bit); (x)?(PORT##port |= (1 << bit)):(PORT##port &= ~(1 << bit));}\
__always_inline__ static void   GPIO_##name##_MakePullup(void)     {GPIO_##name##_MakeIn(1);}


AVR_GPIO_ASSIGN(LED_1,B,0);    //LED_1-------PORTB0
AVR_GPIO_ASSIGN(LED_2,B,1);    //LED_2-------PORTB1
AVR_GPIO_ASSIGN(KEY,B,2);      //KEY---------PORTB2

//C文件
volatile uint8 key;
int main()
{
    GPIO_LED_1_MakeOut(0);    //LED_1设为输出,初始输出低
    GPIO_LED_2_MakeOut(0);    //LED_2设为输出,初始输出低
    GPIO_KEY_MakeIn(1);       //KEY设为输入,初始上拉
    
    GPIO_LED_1_Set();         //LED_1输出高
    GPIO_LED_1_Clr();         //LED_1输出低
    
    GPIO_LED_2_Set();         //LED_2输出高
    GPIO_LED_2_Clr();         //LED_2输出低
    
    key=GPIO_KEY_Read();      //读取KEY

    while(1);

}

推荐阅读

史海拾趣

Golledge Electronics公司的发展小趣事

Golledge Electronics公司的发展故事

故事一:石英晶体振荡器的创新起点

Golledge Electronics公司的起源可以追溯到对石英晶体振荡器技术的深入研究和创新。公司最初成立于英国水晶产区的中心,依托当地丰富的水晶资源,Golledge迅速成为石英晶体振荡器领域的佼佼者。公司创始人敏锐地意识到石英晶体的压电特性在电子系统中的重要应用价值,于是投入大量资源进行研发。通过不断优化晶体制造工艺和温度补偿技术,Golledge成功推出了高精度、高稳定性的石英晶体振荡器,为无线电通信、卫星通信等领域提供了关键技术支持。这一创新不仅奠定了Golledge在电子行业的基础,也为其后续发展铺平了道路。

故事二:微机电系统(MEMS)技术的突破

随着电子产品的不断小型化和便携化,Golledge Electronics公司紧跟时代步伐,将研发重点转向微机电系统(MEMS)技术。MEMS谐振器以其紧凑的尺寸和稳健的性能,成为便携式设备和可穿戴设备中的理想选择。Golledge通过自主研发和合作创新,成功将MEMS技术应用于频率控制产品中,推出了多款高性能、低功耗的MEMS谐振器。这些产品不仅满足了市场对小型化、轻量化的需求,还进一步提升了电子系统的整体性能和可靠性。Golledge在MEMS技术领域的突破,为其在电子行业中的领先地位增添了新的动力。

故事三:新材料应用的探索

为了不断提升产品的性能和质量,Golledge Electronics公司始终致力于新材料的研发和应用。公司研发团队通过深入研究石英晶体的物理特性和化学性质,成功开发出了一系列具有独特性能的石英晶体材料。这些新材料不仅具有更高的稳定性和频率精度,还能够在极端环境下保持优异的性能表现。Golledge将这些新材料应用于频率控制产品中,显著提升了产品的竞争力和市场占有率。同时,公司还积极探索其他新型材料的应用潜力,为未来的技术创新储备了丰富的资源。

故事四:机器学习集成的创新实践

随着人工智能技术的快速发展,Golledge Electronics公司敏锐地捕捉到这一趋势,并积极探索机器学习在频率控制领域的应用。公司研发团队通过集成机器学习算法,使频率控制系统能够动态地适应和优化频率设置。这一创新实践不仅确保了频率控制系统的持续准确性,还为其赋予了自我学习和自我优化的能力。Golledge的这一创新成果,不仅提升了产品的智能化水平,也为电子行业的未来发展提供了新的思路和方向。

故事五:超微型SMD晶体的商用化

为了满足市场对更小、更轻、更高效的电子产品的需求,Golledge Electronics公司推出了超微型1610mm封装SMD晶体,并成功实现商用化。这款晶体以其极小的尺寸和优异的性能,迅速赢得了市场的青睐。Golledge通过不断优化生产工艺和质量控制体系,确保了超微型SMD晶体的稳定供应和高质量表现。这款产品的成功商用,不仅进一步巩固了Golledge在电子行业中的地位,也为其在小型化、便携化电子产品领域的发展开辟了新的市场空间。

Deltrol Controls公司的发展小趣事

在电子行业的早期,Deltrol Controls以其创新的电磁阀产品崭露头角。公司创始人认识到,随着自动化程度的提高,对精确控制流体流动的需求日益增加。于是,他们投入大量研发资源,成功开发出了具有高精度、高可靠性特点的电磁阀。这一创新产品迅速在电子行业获得认可,Deltrol Controls也借此机会逐步扩大了市场份额。

Anaheim Automation公司的发展小趣事

1994年,在韩国这片科技热土上,AMOTECH公司应运而生。创立之初,公司便立志于在电子行业中占据一席之地。创始团队凭借对技术的深刻理解和敏锐的市场洞察,决定专注于金属氧化物压敏电阻(MOV)的研发与生产。初期的发展并非一帆风顺,但团队凭借坚定的信念和不懈的努力,逐步在市场中建立了良好的口碑。

CEVA, Inc公司的发展小趣事

CEVA公司一直以来都是无线连接和智能传感技术的领先许可方。公司提供了包括数字信号处理器、人工智能处理器、无线平台以及一系列用于传感器融合、图像增强、计算机视觉、语音输入和人工智能的补充软件。这些技术和产品使得CEVA在多个终端市场,如移动、消费、汽车、机器人、工业和物联网等领域,都能够提供节能、智能和互联的设备解决方案。通过与全球半导体公司和原始设备制造商的紧密合作,CEVA成功地将这些技术应用于实际产品中,推动了相关市场的快速发展。

GaN Systems公司的发展小趣事

GAIA Converter Inc成立于1993年,总部位于法国波尔多附近的航空航天工业城,这里聚集了众多高科技企业和研究机构。公司自创立之初便专注于高可靠性和工业模块化电源解决方案的研发与生产。在成立初期,GAIA盖亚电源凭借对电力转换技术的深入理解,迅速开发出了一系列适用于航空、军事及高端工业应用的DC/DC转换器模块。这些产品凭借其卓越的性能和稳定的质量,在市场上赢得了初步认可。

Ampire Co Ltd公司的发展小趣事

1947年,API Delevan公司在电子行业的浪潮中应运而生。创立初期,公司面临着资金短缺、市场竞争激烈等诸多挑战。然而,凭借创始团队对电感技术的深刻理解和坚定信念,API Delevan迎难而上,积极研发新产品,逐步在市场中站稳脚跟。初创期的奋斗历程为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

C语言进阶 (东南大学 凌明 非常不错)

东南大学 凌明讲的C语言,对想要学好C语言的不看会后悔的~…

查看全部问答>

对模拟电路学习的建议

对模拟电路学习的建议…

查看全部问答>

弱电系统分类,供大家参考~~

[ 本帖最后由 fish001 于 2010-3-28 22:07 编辑 ]…

查看全部问答>

WINCE6下如何实现应用和驱动的内存共享

RT,应用和驱动间数据传输可以通过readfile,writefile实现,但是现在想通过内存共享的方式传递大量数据,不知道应用和内存的共享内存可不可以实现?或者有没有更好的应用和驱动间的传输数据的方法?请大家多多指导…

查看全部问答>

请教:WinCE5.0开机密码输入X次后强制关闭系统

请教:WinCE5.0开机密码输入X次后强制关闭系统 俺现在实现设置了开机密码重启后出现开机密码提示,但是开机密码界面显示不完全,但是软键盘可以自动弹出(经过对startui.cpp的修改),可以直接输入密码即可进入系统!     现想添加WinCE ...…

查看全部问答>

求助,关于子窗口创建

我在主窗口的初始化中注册了子窗口类WNDDISPLAY, 并且注册成功,然而在主窗口的WM_CREATE处理函数中调用hwndChild = CreateWindowEx (WS_EX_CLIENTEDGE, WNDDISPLAY, TEXT(\"\"), WS_CHILD,              ...…

查看全部问答>

C语言,不能用强制转换,想将结构体内所有元素转化为unsigned short int型元素

typedef struct userinfo   {    char[10] username; //用户姓名    long user_serial;  //用户标示号    float user_fee;    //用户消费额,两位小数   } a; 1. 一 ...…

查看全部问答>

请问大家有没有可编程的分频芯片啊

       想把晶振产生的时钟信号进行分频,大家说说有没有那种可编程的分频芯片啊   我找了很久都没找到,希望大家个支个招,用数字芯片搭建也可以,          &n ...…

查看全部问答>

求 Sitara AM335x 入门套件

请问有没有哪位抢到了 Sitara AM335x ARM Cortex-A8 套件但现在不需要的,要是愿意的话转让给我呗。论坛下一波团购似乎也没消息了。 如果不能搞到这个就只好买ARM11的板子了。 谢谢。…

查看全部问答>