久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

AVR的EEPROM簡單實驗

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年10月27日   【字體:
#include <iom16.h>
#include <intrinsics.h>

#define uchar unsigned char
#define uint unsigned int
__flash uchar seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
__flash uchar tab[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
#define EEWE 1
#define EERE 0
#define EEMWE 2
#define k1 PIND_Bit4            //地址變化鍵
#define k2 PIND_Bit5            //數據變化鍵
#define k3 PIND_Bit6            //地址寫入
#define k4 PIND_Bit7            //地址讀出

 
uint val;         //顯示的存儲數值
uchar address,data;  //存儲地址和數值

void delay(uint k)  //延遲函數
{
 uint i,j;
for(i=0;i<k;i++)
for(j=0;j<1140;j++);
}
void key1()
{
 static uchar i,j;
if(k1==0)
{
  if(i==0)
  {
   j++;
   if(j>3)
   {
    if(k1==0)
    {
     i=1;j=0;
     address++; 
    }
   }
  }
}
else
{
 i=0;j=0;
}
}

void key2()
{
 static uchar i,j;
if(k2==0)
{
  if(i==0)
  {
   j++;
   if(j>3)
   {
    if(k2==0)
    {
     i=1;j=0;
     data++; 
    }
   }
  }
}
else
{
 i=0;j=0;
}
}
 
void show_val(uint k)     //顯示數值函數
{
 static uchar i=0,j;
 uchar ss[6];
 do
 {
  ss[i]=k%10;
  i++; 
 }while(k/=10);
 for(j=0;j<i;j++)
 {
  PORTA=seg[ss[j]];
  PORTC=tab[j];
  delay(1);
  PORTA=0xff;
  PORTC=0xff;
 }
 i=0;
}
void show_address(uint k)     //顯示數值函數
{
 static uchar i=0,j;
 uchar ss[6];
 do
 {
  ss[i]=k%10;
  i++; 
 }while(k/=10);
 for(j=0;j<i;j++)
 {
  PORTA=seg[ss[j]];
  PORTC=tab[j+3];
  delay(1);
  PORTA=0xff;
  PORTC=0xff;
 }
 i=0;
}
void show_data(uint k)     //顯示數值函數
{
 static uchar i=0,j;
 uchar ss[6];
 do
 {
  ss[i]=k%10;
  i++; 
 }while(k/=10);
 for(j=0;j<i;j++)
 {
  PORTA=seg[ss[j]];
  PORTC=tab[j+6];
  delay(1);
  PORTA=0xff;
  PORTC=0xff;
 }
 i=0;
}

#include "1602.h"
void port_init()   //端口初始化
{
PORTA=0xff;
DDRA=0xff;
PORTB=0xff;
DDRB=0xff;
PORTC=0xff;
DDRC=0xff;
PORTD=0xff;
DDRD=0x0f; 
}
void write_EEPROM(uchar address,uchar data)    //寫入EEPROM函數
{
  while(EECR&(1<<EEWE));  //等待變成0
  EEAR=address;
  EEDR=data;
  EECR|=(1<<EEMWE);        //
  EECR|=(1<<EEWE);         //
}
uchar receive_EEPROM(uchar address)        //讀取EEPROM操作
{
  while(EECR&(1<<EEWE));   //檢查寫操作位是否正在進行,如果不在進行則進行讀取
  EEAR=address;
  EECR|=(1<<EERE);    //設置為讀狀態
  return EEDR;
}
 

void key3()
{
 static uchar i,j;
if(k3==0)
{
  if(i==0)
  {
   j++;
   if(j>3)
   {
    if(k3==0)
    {
     i=1;j=0;
     write_EEPROM(address,data);
    }
   }
  }
}
else
{
 i=0;j=0;
}
}
void key4()
{
 static uchar i,j;
if(k4==0)
{
  if(i==0)
  {
   j++;
   if(j>3)
   {
    if(k4==0)
    {
     i=1;j=0;
     val=receive_EEPROM(address); 
    }
   }
  }
}
else
{
 i=0;j=0;
}
}
void main()
{
  port_init();
  write_EEPROM(address,data);
  val=receive_EEPROM(address);
 
  while(1)
  {
   show_val(val);               //顯示數據值
   show_address(address);        //顯示數據地址
   show_data(data);              //顯示需要寫入的數據地址
   key1();           //改變數據地址
   key2();          //改變準備寫入的數據值
   key3();         //把數據寫入地址中
   key4();        //讀出地址值
  }
}
關閉窗口

相關文章

主站蜘蛛池模板: caoporn国产 | 久久久蜜桃 | 91国产在线播放 | 国产午夜精品一区二区三区在线观看 | 一区二区三区av | 国产一级片 | 久久国产精品精品国产色婷婷 | 一区二区三区四区电影视频在线观看 | 日韩一二区 | 亚洲精品在线免费观看视频 | 久久久性色精品国产免费观看 | 丁香婷婷综合激情五月色 | 日韩一区二区三区视频 | 国产.com | 成人午夜激情 | 日韩二三区 | 中文日韩在线视频 | 成年人视频在线免费观看 | 成人一区二区三区 | 久久精品免费观看 | 黄色国产在线视频 | 国产资源视频 | 成人在线视频免费看 | 精品久久久久久 | 久久精品在线 | 欧美在线观看黄色 | 欧美毛片免费观看 | 日批av| 成人在线视频观看 | 黄色一级特级片 | 国产精品国产三级国产aⅴ无密码 | 欧美一区二区三区在线看 | 亚洲精品亚洲人成人网 | 99国内精品 | 女女爱爱视频 | 国产日韩欧美一区二区 | 中文字幕一区二区三区四区五区 | 久久香蕉精品视频 | 丁香婷婷综合激情五月色 | 亚洲人成人一区二区在线观看 | 精品久久影院 |