历史上的今天
今天是: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)
(*(
史海拾趣
|
大家好,我想针对这个定时器延时程序问几个问题: #define f 3686400 //系统时钟为3.6864MHz void t0_wait_ms(unsigned char ms) { TCON &=~ 0x30; TMOD &=~ 0x0F; &nbs ...… 查看全部问答> |
|
一直用altium designer,之前也用过ORCAD一段时间,仿真一般用PROTEUS。现在老板要买正版的,联系了ALTIUM报价太贵,有没有别的推荐?… 查看全部问答> |
|
《EVC高级编程及其应用开发》中第八章就一个例子,利用ADO访问ACCESS的一个问题 为什么程序的CreataConnection()时就该语句hr= CLSIDFromProgID( g_szADOCE31ConnProgID, &tClsid );就无法正确执行。 在程序中只量把ADOCE30.h换成了ADOCE31.h。另外程序中所有的ADOCE30也全换成了ADOCE31。 急!!参与有分啊~~~~ ...… 查看全部问答> |
|
在主界面弹出一个窗口后,总会把界面的工具栏隐藏掉,有什么方法可以显示出来?哪位仁兄赐教 如题: evc中在主界面弹出一个窗口后,总会把界面的工具栏隐藏掉,有什么方法可以显示出来?哪位仁兄赐教… 查看全部问答> |
|
mobile c++ 手机关机处理事件 我想在手机关机时响应到一个事件,然后在这个事件中做一些其他处理.但现在无法得到手机关机事件. 比如:1:启动软件, 2;长按power键,3:响应到软件中的代码 4:在该代码中做其他处理. 问题:如何实现第三步?当 ...… 查看全部问答> |
|
我使用8M晶振,读取串行flash -AT45DB081,但是速度还是达不到我的要求(用c语言写的),想超频,不知道430能超到多少,稳定吗? 各位dx有没有什么解决速度的经验。… 查看全部问答> |
|
最近看了两个TI的文档呢。DSP281x_HeaderFiles_QuickStart_Readme和spru095a_TMS320F28x Boot ROM Reference Guide (Rev. A)这两个文档。了解了一下 DSP有了复位信号后,会跳到0x3FFFC0这个地址上去,假设现在是BOOT-ROM映射到0x3FF000这个地址上面 ...… 查看全部问答> |




