📄 p23.c
字号:
/*********************************************************************************
丁玉波试验过的程序:这个程序是第23页的例子
一次只能打开一个文件运行,不要多个例子同时打开运行,config.h文件都在同一个文件中
对ATmega2560.pdf英文版449页手册的所有例子都试验了
可以作为外部函数调用,如果要独立运行试验,请将Pxx改为main即可
丁玉波 2009.04.15.
Compiler: IAR for AVR 4.20
Target: Mega1280 (该手册也适用于ATmega640,ATmega1281,ATmega2560,ATmega2561)
Crystal: 16.0000 MHz
Used:
修改记录:
**********************************************************************************/
#pragma once /*保证头文件只被编译一次*/
#include "config.h" /*头文件配置文件,已将19个例子的头文件都配置了,不用的可删掉*/
void p23(void)
{
//请根据实际应用调用下面的函数
}
/*****************************************************************************
函数名: void EEPROMwrite(int location, unsigned char byte)
参数: location要写入的地址; byte要写入的数据
返回值: 无
功能说明: 写EEPROM
******************************************************************************/
void EEPROMwrite(int location, unsigned char byte) //写EEPROM
{
CLI();
uchar oldSREG;
while(EECR&0x02); //等待EECR寄存器的第0x02位,EEPE为0,见iom1280.h
EEAR=location; //新地址写入EEAR
EEDR=byte; //新数据写入EEDR
oldSREG=SREG; //保存SREG
SREG&=~0x80; //SREG的最高位I清零,见iom1280.h
EECR|=0x04; //置位EEMPE,见iom1280.h
EECR|=0x02; //置位EEPE,见iom1280.h
SREG=oldSREG; //恢复SREG
while(EECR&0x02); //等待EECR寄存器的第0x02位,EEPE为0,见iom1280.h
EEAR=0x01; //地址送1。
SEI(); /*注意:在执行任何被挂起的中断之前首先进入睡眠模式*/
}
/*****************************************************************************
函数名: uchar EEPROMread(int location)
参数: location要读取的地址
返回值: 读取的数据
功能说明: 读EEPROM
*****************************************************************************/
unsigned char EEPROMread(int location)//读EEPROM
{
CLI();
while(EECR&0x02);
EEAR=location;
EECR|=0x01;
while(EECR&0x02);
EEAR=0x01;
SEI();
return (EEDR);
}
void main(void)
{
p23();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -