超级版主
主题
帖子
积分14436
阅读权限150
注册时间2008-11-13
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2010-10-23 08:12
|
显示全部楼层
本帖最后由 倪大德 于 2010-10-23 08:25 编辑
----------用CVAVR总觉有移植带来问题,实际并非完全如此-------------
用CVAVR函数库编程,方便快捷。会有移植问题。但深入CVAVR后,有些完全可以用C自写函数库。移植也无问题。
只是与标准C兼容差一点而已!
以LCD为例:
//-----------------------------------------------------
//-----------------------------------------------------
#include <mega8.h>
#include <delay.h>
#define PORT_DATA PORTD
#define PIN_DATA PIND
#define DDRX_DATA DDRD
#define PORT_SIG PORTB
#define PIN_SIG PINB
#define DDRX_SIG DDRB
#define RS 5
#define RW 6
#define EN 7
#define ClearBit(reg, bit) reg &= (~(1<<(bit)))
#define SetBit(reg, bit) reg |= (1<<(bit))
//-----------------------------------------------------
void LcdWriteCom(unsigned char data)
{
ClearBit(PORT_SIG, RS);
PORT_DATA = data;
SetBit(PORT_SIG, EN);
delay_us(2);
ClearBit(PORT_SIG, EN);
delay_us(40);
}
//-----------------------------------------------------
void LcdWriteData(unsigned char data)
{
SetBit(PORT_SIG, RS);
PORT_DATA = data;
SetBit(PORT_SIG, EN);
delay_us(2);
ClearBit(PORT_SIG, EN);
delay_us(40);
}
//-----------------------------------------------------
void InitLcd(void)
{
DDRX_DATA = 0xff;
PORT_DATA = 0xff;
DDRX_SIG = 0xff;
PORT_SIG |= (1<<RW)|(1<<RS)|(1<<EN);
ClearBit(PORT_SIG, RW);
delay_ms(40);
LcdWriteCom(0x38);
LcdWriteCom(0xf);
LcdWriteCom(0x1);
delay_ms(2);
LcdWriteCom(0x6);
}
//-----------------------------------------------------
void main( void )
{
InitLcd();
LcdWriteData('A');
LcdWriteData('V');
LcdWriteData('R');
LcdWriteData('!');
while(1);
}
main.rar
(491 Bytes, 下载次数: 48)
|
|