历史上的今天
返回首页

历史上的今天

今天是:2024年11月27日(星期三)

正在发生

2019年11月27日 | PORT.H头文件下载-AVR定时器通用IO端口定义

2019-11-27 来源:51hei

/*****************************************************************************


      文件名称:PORT.H

      文件标识:_PORT_H_

      摘    要:AVR定时器通用IO端口定义


*****************************************************************************/

#ifndef  _PORT_H_

#define  _PORT_H_



#define   P(X,Y)            (BYPORT(X)*256+BYBIT(Y))   //合并引脚信息



#define   BYPORT(X)         BYPORT_##X                 //端口

#define   BYPORT_A          0                          //A口

#define   BYPORT_B          1                          //B口

#define   BYPORT_C          2                          //C口

#define   BYPORT_D          3                          //D口

#define   BYPORT_E          4                          //E口

#define   BYPORT_F          5                          //F口

#define   BYPORT_G          6                          //G口



#define   BYBIT(X)          BYBIT_##X                  //口线

#define   BYBIT_0           (1 << 0)                   //位0

#define   BYBIT_1           (1 << 1)                   //位1

#define   BYBIT_2           (1 << 2)                   //位2

#define   BYBIT_3           (1 << 3)                   //位3

#define   BYBIT_4           (1 << 4)                   //位4

#define   BYBIT_5           (1 << 5)                   //位5

#define   BYBIT_6           (1 << 6)                   //位6

#define   BYBIT_7           (1 << 7)                   //位7

#define   BYBIT_H           0XF0                       //高四位

#define   BYBIT_L           0X0F                       //低四位

#define   BYBIT_W           0XFF                       //全八位



#define   BIT(X)            (1 << (X))                 //位X

#define   SetBit(var,X)     (var) |= 1<<(X)            //置位

#define   ClrBit(var,X)     (var) &= ~(1<<(X))         //清零

#define   TogBit(var,X)     (var) ^= 1<<(X)            //取反

#define   TestBit(var,X)    ((var) & (1<<(X)))         //测试



#define   SET(X)            PORT(X) |=  (X)%256        //置数据位

#define   CLR(X)            PORT(X) &= ~((X)%256)      //清数据位

#define   PTOG(X)           PORT(X) ^=  (X)%256        //取反数据位

#define   OUT(X)            DDR(X)  |=  (X)%256        //数据方向:输出

#define   IN(X)             DDR(X)  &= ~((X)%256)      //数据方向:输入

#define   DTOG(X)           DDR(X)  ^=  (X)%256        //数据方向:转换

#define   READ(X)           (PIN(X) & ((X)%256))       //读取数据引脚电平



#ifndef  PORTA

#define  PORTA              (*(volatile unsigned char *)0x00)

#define  DDRA               (*(volatile unsigned char *)0x00)

#define  PINA               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTB

#define  PORTB              (*(volatile unsigned char *)0x00)

#define  DDRB               (*(volatile unsigned char *)0x00)

#define  PINB               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTC

#define  PORTC              (*(volatile unsigned char *)0x00)

#define  DDRC               (*(volatile unsigned char *)0x00)

#define  PINC               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTD

#define  PORTD              (*(volatile unsigned char *)0x00)

#define  DDRD               (*(volatile unsigned char *)0x00)

#define  PIND               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTE

#define  PORTE              (*(volatile unsigned char *)0x00)

#define  DDRE               (*(volatile unsigned char *)0x00)

#define  PINE               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTF

#define  PORTF              (*(volatile unsigned char *)0x00)

#define  DDRF               (*(volatile unsigned char *)0x00)

#define  PINF               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTG

#define  PORTG              (*(volatile unsigned char *)0x00)

#define  DDRG               (*(volatile unsigned char *)0x00)

#define  PING               (*(volatile unsigned char *)0x00)

#endif



#define  ADDRESS0           (*(volatile unsigned char *)0x00)




#define  PORT(X)                                      

   (*(                                                

      (X)/256 == 0 ? &PORTA :                          

      (X)/256 == 1 ? &PORTB :                          

      (X)/256 == 2 ? &PORTC :                          

      (X)/256 == 3 ? &PORTD :                          

      (X)/256 == 4 ? &PORTE :                          

      (X)/256 == 5 ? &PORTF :                          

      (X)/256 == 6 ? &PORTG : &ADDRESS0                

   ))



#define  DDR(X)                                        

   (*(                                                

      (X)/256 == 0 ? &DDRA :                          

      (X)/256 == 1 ? &DDRB :                          

      (X)/256 == 2 ? &DDRC :                          

      (X)/256 == 3 ? &DDRD :                          

      (X)/256 == 4 ? &DDRE :                          

      (X)/256 == 5 ? &DDRF :                          

      (X)/256 == 6 ? &DDRG : &ADDRESS0                

   ))




#define  PIN(X)                                        

   (*(                                                

推荐阅读

史海拾趣

Hokuriku公司的发展小趣事

进入21世纪后,环保和可持续发展成为全球关注的焦点。Hokuriku Electric积极响应这一趋势,将环保理念融入产品研发和生产过程中。公司投入大量资源研发绿色电子产品,减少生产过程中的能源消耗和废弃物排放。同时,Hokuriku Electric还积极参与行业内的环保倡议和合作项目,推动整个电子行业的可持续发展。这一举措不仅赢得了社会各界的广泛赞誉,还为公司带来了更多的商业机会和合作伙伴。

ACP Optoelectronic Technology Co Ltd公司的发展小趣事

ACP Optoelectronic Technology Co Ltd始终坚持创新驱动的发展理念。公司不断投入研发资金,引进先进设备和技术人才,推动产品升级换代。随着市场的不断变化和客户需求的不断提升,ACP Optoelectronic Technology Co Ltd的产品线不断丰富和完善,产品质量和性能也得到了显著提升。

喜美克斯(Cvilux)公司的发展小趣事

在市场竞争日益激烈的电子行业中,喜美克斯公司始终坚持品质至上的原则。公司投入大量资源用于产品质量控制和生产工艺的改进,确保每一件产品都能达到最高的品质标准。这种对品质的执着追求,让喜美克斯的产品在市场上赢得了良好的口碑,也为公司赢得了众多忠实的客户。

Alpha-Micro Electronics公司的发展小趣事

在市场竞争日益激烈的电子行业中,喜美克斯公司始终坚持品质至上的原则。公司投入大量资源用于产品质量控制和生产工艺的改进,确保每一件产品都能达到最高的品质标准。这种对品质的执着追求,让喜美克斯的产品在市场上赢得了良好的口碑,也为公司赢得了众多忠实的客户。

ACCUTEK公司的发展小趣事

ACCUTEK公司深知人才是企业发展的核心力量。因此,公司始终注重人才培养和团队建设。公司建立了完善的人才培养和激励机制,鼓励员工不断学习和创新。同时,公司还注重营造良好的工作氛围和团队文化,让员工能够在轻松愉快的环境中工作。这些举措不仅提升了员工的归属感和忠诚度,也为公司的持续发展提供了有力的人才保障。

这些故事基于电子行业的一般发展规律和可能的企业发展路径构建,并不代表ACCUTEK公司的真实历史。如需了解该公司的真实发展情况,建议查阅相关资料或访问其官方网站。

ELESTA GmbH公司的发展小趣事

2019年,ELESTA GmbH荣获GEO全球卓越奖,这是对公司多年来在精益生产和生态环保方面卓越表现的肯定。该奖项的获得不仅提升了ELESTA的品牌形象和知名度,也进一步增强了公司在全球电子行业中的竞争力和影响力。

以上五个故事涵盖了ELESTA GmbH公司从创立到发展的关键阶段和里程碑事件,展现了公司在电子行业中不断进取、创新发展的历程。

问答坊 | AI 解惑

关于定时器延时程序的疑问

大家好,我想针对这个定时器延时程序问几个问题: #define  f   3686400  //系统时钟为3.6864MHz void t0_wait_ms(unsigned char ms) {    TCON &=~ 0x30;    TMOD &=~ 0x0F;   &nbs ...…

查看全部问答>

51单片机C语言教程

这是我在买的一块51板子时,一同附赠的一份资料。我自己觉得还不错,所以就拿出来和大家一起分享一下。希望对大家也能有所帮助………

查看全部问答>

老板一定要买正版EDA软件,有没有价廉物美的?

一直用altium designer,之前也用过ORCAD一段时间,仿真一般用PROTEUS。现在老板要买正版的,联系了ALTIUM报价太贵,有没有别的推荐?…

查看全部问答>

请教信号量定义时是否需要用volatile

多线程之间共享的变量定义时要使用关键字volatile,那么信号量是否定义时也需要用volatile?…

查看全部问答>

《EVC高级编程及其应用开发》中第八章就一个例子,利用ADO访问ACCESS的一个问题

  为什么程序的CreataConnection()时就该语句hr= CLSIDFromProgID( g_szADOCE31ConnProgID, &tClsid );就无法正确执行。 在程序中只量把ADOCE30.h换成了ADOCE31.h。另外程序中所有的ADOCE30也全换成了ADOCE31。 急!!参与有分啊~~~~ ...…

查看全部问答>

在主界面弹出一个窗口后,总会把界面的工具栏隐藏掉,有什么方法可以显示出来?哪位仁兄赐教

如题: evc中在主界面弹出一个窗口后,总会把界面的工具栏隐藏掉,有什么方法可以显示出来?哪位仁兄赐教…

查看全部问答>

mobile c++ 手机关机处理事件

mobile c++  手机关机处理事件 我想在手机关机时响应到一个事件,然后在这个事件中做一些其他处理.但现在无法得到手机关机事件. 比如:1:启动软件, 2;长按power键,3:响应到软件中的代码 4:在该代码中做其他处理. 问题:如何实现第三步?当 ...…

查看全部问答>

串口不能烧程序

前段时间在淘宝买了块STM32的板子,我收到发现串口不能烧程序,寄回卖家说用JTAG,把什么“保护”给弄了下,当时我也没具体问卖家怎么回事。这是不是说明STM32是已经用过的芯片,要不然新的片子怎么会串口都不能烧写呢? 不知道是不是?…

查看全部问答>

请教:430单片机的速度?

我使用8M晶振,读取串行flash -AT45DB081,但是速度还是达不到我的要求(用c语言写的),想超频,不知道430能超到多少,稳定吗? 各位dx有没有什么解决速度的经验。…

查看全部问答>

关于DSP上电引导的提问

最近看了两个TI的文档呢。DSP281x_HeaderFiles_QuickStart_Readme和spru095a_TMS320F28x Boot ROM Reference Guide (Rev. A)这两个文档。了解了一下 DSP有了复位信号后,会跳到0x3FFFC0这个地址上去,假设现在是BOOT-ROM映射到0x3FF000这个地址上面 ...…

查看全部问答>