于十天学会AVR单片机的教程头文件
时间:11-19
来源:互联网
点击:
最近开始学习AVR单片机,由于之前买的51开发板是兼容AVR单片机的,所以就没有必要开发板了。于是从网上找了一个教程《十天学会AVR单片机》,也是郭天祥公司的人讲的,觉得还可以。因为没有买开发板,所以没有AVR_PQ1A.h这个头文件,这头文件定义了寄存器等,非常好用,所以有必要下下来解读。
/*文件:AVR_PQ1A.H功能:定义一些AVR_PQ1A开发板上应用程序用到的常量//#include//包含型号头文件#include //包含"位"操作头文件/数据类型宏定义/#define uchar unsigned char#define uint unsigned int/数码管和LED常量/#define LEDLK PA2 //LED锁存器控制端#define SEGLK PA3 //数码管段选锁存器控制端#define BITLK PA4 //数码管位选锁存器控制端#define TRUE 1#define FALSE 0#define ALLLED 0XFF/*函数名称: Delayus功 能: 延时指定微秒(8M晶振)参 数: US--延时的微秒数(大约,不是很精确,MS越大越准确)返回值 : 无//void Delayus(uint US) {uint i;US=US*5/4; //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值for( i=0;i 总线DAPORTB=0xFF; //关闭LEDPORTA|=BIT(LEDLK); //锁存数据,使LED熄灭Delayus(5); PORTA&=~BIT(LEDLK);PORTB=0x00; //输出段选PORTA|=BIT(SEGLK); Delayus(50); PORTA&=~BIT(SEGLK); PORTB=0xFF; //输出位选PORTA|=BIT(BITLK); Delayus(50); PORTA&=~BIT(BITLK); PORTD=0xFF;PORTA|=BIT(PA7);Delayus(50);PORTA&=~BIT(PA7);}/1602液晶常量及操作/#define LCDa_CTRL PORTD //1602控制端口定义#define LCDa_CTRL_DDR DDRD //控制端口方向寄存器定义#define LCDa_RS PD4 //定义三个控制引脚#define LCDa_RW PD5#define LCDa_E PD6#define LCDa_L1 0x80 //第一行的地址:0x80+addr ,addr为列数#define LCDa_L2 0xC0 //第二行的地址:0x80+0x40+addr#define LCDa_CGRAM_ADDR 0x40 //CGRAM的开始地址#define LCDa_CGMAX 64 //CGRAM存储的最大字节数#define LCDa_SET_RS LCDa_CTRL|=BIT(LCDa_RS) //三个控制管脚的控制操作#define LCDa_SET_RW LCDa_CTRL|=BIT(LCDa_RW)#define LCDa_SET_E LCDa_CTRL|=BIT(LCDa_E)#define LCDa_CLR_RS LCDa_CTRL&=~BIT(LCDa_RS)#define LCDa_CLR_RW LCDa_CTRL&=~BIT(LCDa_RW)#define LCDa_CLR_E LCDa_CTRL&=~BIT(LCDa_E)#define LCDa_DO PORTB //输出数据总线端口定义#define LCDa_DI PINB //输入数据总线端口定义#define LCDa_DATA_DDR DDRB //数据总线方向寄存器定义#define LCDa_FUNCTION 0x38 // 液晶模式为8位,2行,5*8字符#define iDat 1 //数据标志#define iCmd 0 //指令标志#define LCDa_CLS 0x01 // 清屏#define LCDa_HOME 0x02 // 地址返回原点,不改变DDRAM内容#define LCDa_ENTRY 0x06 // 设定输入模式,光标加,屏幕不移动#define LCDa_C2L 0x10 // 光标左移#define LCDa_C2R 0x14 // 光标右移#define LCDa_D2L 0x18 // 屏幕左移#define LCDa_D2R 0x1C // 屏幕又移#define LCDa_ON 0x0C // 打开显示#define LCDa_OFF 0x08 // 关闭显示#define LCDa_CURON 0x0E // 显示光标#define LCDa_CURFLA 0x0F // 打开光标闪烁/12864液晶常量及操作/#define LCDb_CTRL PORTD //12864控制端口定义#define LCDb_CTRL_DDR DDRD //控制端口方向寄存器定义#define LCDb_RS PD4 //定义四个控制引脚#define LCDb_RW PD5#define LCDb_E PD6#define LCDb_RST PD7#define LCDb_L1 0x80 //第一行的地址#define LCDb_L2 0x90 //第二行的地址#define LCDb_L3 0x88 //第三行的地址#define LCDb_L4 0x98 //第四行的地址#define LCDb_CGRAM_ADDR 0x40 //CGRAM的开始地址#define LCDb_CGMAX 64 //CGRAM存储的最大字节数#define LCDb_SET_RS LCDb_CTRL|=BIT(LCDb_RS) //四个控制管脚的控制操作#define LCDb_SET_RW LCDb_CTRL|=BIT(LCDb_RW)#define LCDb_SET_E LCDb_CTRL|=BIT(LCDb_E)#define LCDb_SET_RST LCDb_CTRL|=BIT(LCDb_RST)#define LCDb_CLR_RS LCDb_CTRL&=~BIT(LCDb_RS)#define LCDb_CLR_RW LCDb_CTRL&=~BIT(LCDb_RW)#define LCDb_CLR_E LCDb_CTRL&=~BIT(LCDb_E)#define LCDb_CLR_RST LCDb_CTRL&=~BIT(LCDb_RST)#define LCDb_DO PORTB //输出数据总线端
AVR单片机头文 相关文章:
- 嵌入式学习笔记17——AVR单片机之头文件简介和使用(11-19)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)