?? testeeprom__.c
字號:
#include <mega16.h>
#include <USART.h>
#include <TWI.h>
#include <TWIAPP.h>
#include <String.h>
#include <Types.h>
#include <delay.h>
/************************
接線方式:
DS1302 PortC
6.VCC 5.WP1 1.PC0 2.PC1
4.SCL 3.WP2 3.PC2 4.PC3
2.SDA 1.GND 5.PC4 6.PC5
7.PC6 8.PC7
9.GND 10.VCC
6.VCC -- 10.VCC
4.SCL -- 1.PC0
2.SDA -- 2.PC1
5.WP1 -- 3.PC2 (可不接)
3.WP2 -- 4.PC3 (可不接)
1.GND -- 9.GND
************************************/
#define MAXCMDBUF 32
#pragma warn-
//eeprom unsigned char EEPROMS[512];
#pragma warn+
void port_init(void) //初始化各端口
{
PORTB = 0xF0;
DDRB = 0x0F;
PORTC = 0x00;
DDRC = 0x00;
PORTB=0b11001100;
}
void TestCmd(void)
{
unsigned int i;
unsigned char CmdBuf[MAXCMDBUF]; //命令緩沖區
unsigned char Chip; //芯片地址
unsigned int Addr; //內存地址
unsigned char AddrType;//內存地址格式
unsigned int Cnt; //讀取長度
unsigned char LED; //LED顯示,作用不大
USART_Init(47); //3.6864M=23, 7.3728M=47
TransmitStringF("Welcome AVR Zone");
for (i=0;i<MAXCMDBUF;i++) CmdBuf[i]=0;
LED=0;
while (1)
{
ReceiveCMD(CmdBuf,MAXCMDBUF); //讀取一條命令行
if (CmdBuf[0]>0) //如果命令行長度不為零
{
//for (i=0;i<MAXCMDBUF;i++) TransmitByte(CmdBuf[i]);
TransmitByte(CMDBEGIN); //送出命令開始符
TransmitByte(CmdBuf[1]); //送出命令
if (CmdBuf[1]=='H') //如果接收的是幫助命令
{
TransmitStringF("Command format(Hex):'1B CMD 1C'");
TransmitByte(13);
TransmitStringF("Read EEPROM Data:'R','Addr','Count'");
TransmitByte(13);
TransmitStringF("Write EEPROM Data:'W','Addr','Data'");
TransmitByte(13);
TransmitStringF("Show Help:'H'");
TransmitByte(13);
PORTB=~PORTB;
}
if (CmdBuf[1]=='R') //如果接收的是讀取EEPROM命令
{
AddrType=HexToByte(&CmdBuf[2]);
Chip=(HexToByte(&CmdBuf[4])&0B00001110)|EEPROM_BUS_ADDRESS;
Addr=(((unsigned int)HexToByte(&CmdBuf[6]))<<8)|((unsigned int)HexToByte(&CmdBuf[8]));
Cnt=(((unsigned int)HexToByte(&CmdBuf[10]))<<8)|((unsigned int)HexToByte(&CmdBuf[12]));
if (Addr+Cnt>255) Cnt=255-Addr;
for (i=0;i<Cnt;i++)
{
TransmitString(ByteToHex(EEPROM_Read(Chip,AddrType,Addr+i)));
TransmitByte(32);
}
}
if (CmdBuf[1]=='W') //如果接收的是寫入EEPROM命令
{
AddrType=HexToByte(&CmdBuf[2]);
Chip=(HexToByte(&CmdBuf[4])&0B00001110)|EEPROM_BUS_ADDRESS;
Addr=(((unsigned int)HexToByte(&CmdBuf[6]))<<8)|((unsigned int)HexToByte(&CmdBuf[8]));
EEPROM_Write(Chip,AddrType,Addr,HexToByte(&CmdBuf[10]));
delay_ms(5);
TransmitString(ByteToHex(EEPROM_Read(Chip,AddrType,Addr)));
}
TransmitByte(CMDEND); //送出命令結束符
for (i=0;i<MAXCMDBUF;i++) CmdBuf[i]=0; //清空命令緩沖區
}
LED++;
//PORTB&=~((LED>>7)&0x03);
}
}
void main()
{
port_init();
TWI_DefaultInit();
TestCmd();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -