📄 -ͦ
字号:
#include <iom16.h>
#include"RW_EEPROM.h"
#include<intrinsics.h>
#include "lcd1602_8bit.c"
#define GET_BIT(x,y) (x&(1<<y))
#define S1 4
#define S2 5
#define S3 6
#define S4 7
#define uchar unsigned char //变量类型的宏定义
#define uint unsigned int
uchar status;
uint eepromaddress;
uchar x,y; //定义全局变量
uchar __flash title[]={"EEPROM R/W TEST "};
uchar __flash title1[]={" INPUT VALUE "};
uchar __flash title2[]={" INPUT ADDRESS "};
uchar __flash title3[]={" WRITE VALUE "};
uchar __flash title4[]={" READ VALUE "};
//*************************************
void port_init(void) //端口初始化子函数
{
PORTA = 0xFF; // PA端口初始化输出11111111
DDRA = 0xFF; //将PA端口设为输出
PORTB = 0xFF; // PB端口初始化输出11111111
DDRB = 0xFF; //将PB端口设为输出
PORTC = 0xFF; // PC端口初始化输出11111111
DDRC = 0xFF; //将PC端口设为输出
PORTD = 0xFF; // PD端口初始化输出11111111
DDRD = 0xFF; //将PD端口设为输出
}
//*************************************
void main(void) //定义主函数
{
port_init();
Delay_nms(400);
InitLcd();
ePutstr(0,0,title);
Delay_nms(2000);
while(1) //无限循环
{
switch(status)
{
case 0: ePutstr(0,0,title1);
if(GET_BIT(PIND,S4)==0){status++;Delay_nms(250);}
if(status>3)status=0;
//----------------------------
if(GET_BIT(PIND,S1)==0) //如果按键S1按下
{
if(x<255)x++; //变量x递增,最大值为255
Delay_nms(250);
}
//---------------------------
if(GET_BIT(PIND,S2)==0) //如果按键S2按下
{
if(x>0)x--; //变量x递增,最小值为0
Delay_nms(250);
}
DisplayOneChar(0,1,(x/100)+0x30);Delay_nms(10);
DisplayOneChar(1,1,((x%100)/10)+0x30);Delay_nms(10);
DisplayOneChar(2,1,(x%10)+0x30);Delay_nms(10);
break;
case 1:ePutstr(0,0,title2);
if(GET_BIT(PIND,S4)==0){status++;Delay_nms(250);}
if(status>3)status=0;
//---------------------------
if(GET_BIT(PIND,S1)==0) //如果按键S1按下
{
if(eepromaddress<511)eepromaddress++;//变量递增,最大值为511
Delay_nms(250);
}
//---------------
if(GET_BIT(PIND,S2)==0) //如果按键S2按下
{
if(eepromaddress>1)eepromaddress--;//变量x递增,最小值为1
Delay_nms(250);
}
DisplayOneChar(13,1,(eepromaddress/100)+0x30);Delay_nms(10);
DisplayOneChar(14,1,((eepromaddress%100)/10)+0x30);Delay_nms(10);
DisplayOneChar(15,1,(eepromaddress%10)+0x30);Delay_nms(10);
break;
case 2:ePutstr(0,0,title3);
if(GET_BIT(PIND,S4)==0){status++;Delay_nms(250);}
if(status>3)status=0;
//----------------------
if(GET_BIT(PIND,S3)==0)
{WRITE_EEPROM(eepromaddress,x);Delay_nms(10);
DisplayOneChar(14,0,'O');Delay_nms(10);
DisplayOneChar(15,0,'K');Delay_nms(10);
Delay_nms(100);
DisplayOneChar(14,0,' ');Delay_nms(10);
DisplayOneChar(15,0,' ');Delay_nms(10);
} //如果按键S3按下,
//将变量x写入ATmegal6L内部EEPROM的123单元
break;
case 3:ePutstr(0,0,title4);
if(GET_BIT(PIND,S4)==0){status++;Delay_nms(250);}
if(status>3)status=0;
//------------------------
if(GET_BIT(PIND,S3)==0)
{y=READ_EEPROM(eepromaddress);Delay_nms(10);
DisplayOneChar(14,0,'O');Delay_nms(10);
DisplayOneChar(15,0,'K');Delay_nms(10);
Delay_nms(100);
DisplayOneChar(14,0,' ');Delay_nms(10);
DisplayOneChar(15,0,' ');Delay_nms(10);
} //如果按键S3按下,
//从ATmegal6L内部EEPROM的200单元中读出数据至变量y中
DisplayOneChar(5,1,(y/100)+0x30);Delay_nms(10);
DisplayOneChar(6,1,((y%100)/10)+0x30);Delay_nms(10);
DisplayOneChar(7,1,(y%10)+0x30);Delay_nms(10);
break;
default:break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -