?? mmc_test.cp
字號:
#line 1 "D:/projects/in_progress/0035 primeri_za_plocice/__MMC_SD/mikroC/MMC_Test.c"
#line 27 "D:/projects/in_progress/0035 primeri_za_plocice/__MMC_SD/mikroC/MMC_Test.c"
unsigned int px, k;
unsigned char data[512];
unsigned char data_for_registers[16];
unsigned char MMC_SPI(unsigned char out);
unsigned char MMC_Send_Command(unsigned char partial_cmm, unsigned long address, unsigned char CRC);
unsigned char MMC_Init();
unsigned char MMC_Read_Sector(unsigned long sector, char *data);
unsigned char MMC_Write_Sector(unsigned long sector, char *data);
unsigned char MMC_Read_CID(char * data_for_registers);
unsigned char MMC_Read_CSD(char * data_for_registers);
unsigned char received_character;
unsigned long sector_address;
unsigned char first_byte, second_byte, third_byte, fourth_byte;
unsigned char serial_buffer[2];
unsigned char serial_pointer;
void printhex(unsigned char i) {
unsigned char hi,lo;
hi = i & 0xF0;
hi = hi >> 4;
hi = hi + '0';
if (hi>'9') hi = hi + 7;
lo = (i & 0x0F) + '0';
if (lo>'9') lo=lo+7;
USART_Write(hi);
USART_Write(lo);
}
void main() {
unsigned int i;
PORTC = 0;
USART_Init(19200);
TRISC = 0b11010011;
USART_Write('P');
USART_Write('I');
USART_Write('C');
USART_Write('-');
USART_Write('S');
USART_Write('t');
USART_Write('a');
USART_Write('r');
USART_Write('t');
USART_Write('e');
USART_Write('d');
USART_Write(13);
USART_Write(10);
i = MMC_Init();
if(i == 1) {
USART_Write('M');
USART_Write('M');
USART_Write('C');
USART_Write('I');
USART_Write('n');
USART_Write('i');
USART_Write('t');
USART_Write('-');
USART_Write('O');
USART_Write('K');
USART_Write(13);
USART_Write(10);
}
if(i == 0) {
USART_Write('M');
USART_Write('M');
USART_Write('C');
USART_Write('I');
USART_Write('n');
USART_Write('i');
USART_Write('t');
USART_Write('-');
USART_Write('E');
USART_Write('r');
USART_Write('r');
USART_Write(13);
USART_Write(10);
}
for(i=0; i<=511; i++) data[i] = 'E';
i = MMC_Write_Sector(55, data);
if(i == 0)
{
Usart_Write('U');
Usart_Write('p');
Usart_Write('i');
Usart_Write('s');
Usart_Write('-');
Usart_Write('O');
Usart_Write('K');
}
else
{
Usart_Write('U');
Usart_Write('p');
Usart_Write('i');
Usart_Write('s');
Usart_Write('-');
Usart_Write('E');
Usart_Write('r');
Usart_Write('r');
}
USART_Write(13);
USART_Write(10);
i = MMC_Read_CID(data_for_registers);
if(i == 0) {
for(k=0; k<=15; k++) {
printhex(data_for_registers[k]);
if(k!=15) USART_Write('-');
}
USART_Write(13);
}
else {
Usart_Write('C');
Usart_Write('I');
Usart_Write('D');
Usart_Write('-');
Usart_Write('E');
Usart_Write('r');
Usart_Write('r');
}
i == MMC_Read_CSD(data_for_registers);
if(i == 0) {
for(k=0; k<=15; k++) {
printhex(data_for_registers[k]);
if(k!=15) USART_Write('-');
}
USART_Write(13);
USART_Write(10);
}
else {
Usart_Write('C');
Usart_Write('S');
Usart_Write('D');
Usart_Write('-');
Usart_Write('E');
Usart_Write('r');
Usart_Write('r');
}
serial_pointer = 0;
while(1)
{
if (USART_Data_Ready())
{
serial_buffer[serial_pointer] = USART_Read();
serial_pointer++;
if(serial_pointer>1)
{
serial_pointer = 0;
if(serial_buffer[0] == 'S') first_byte = serial_buffer[1];
if(serial_buffer[0] == 's') second_byte = serial_buffer[1];
if(serial_buffer[0] == 'E') third_byte = serial_buffer[1];
if(serial_buffer[0] == 'e') fourth_byte = serial_buffer[1];
if(serial_buffer[0] == 'R')
{
if(serial_buffer[1] == 'r')
{
sector_address = ((long)first_byte << 24) + ((long)second_byte << 16) +
((long)third_byte << 8) + ((long)fourth_byte);
i = MMC_Read_Sector(sector_address,data);
if(i == 0)
{
for(k=0; k<512; k++)
{
printhex(data[k]);
USART_Write(' ');
if(((k+1) % 16)==0)
{
USART_Write(' ');
for(px=(k-15); px<=k; px++)
{
if((data[px]>33) && (data[px]<126))
{
USART_Write(data[px]);
}
else
{
USART_Write('.');
}
}
USART_Write(13);
}
}
USART_Write(13);
USART_Write(10);
}
else
{
USART_Write('R');
USART_Write('d');
USART_Write('-');
USART_Write('E');
USART_Write('r');
USART_Write('r');
USART_Write(13);
USART_Write(10);
}
}
}
if(serial_buffer[0] == 'W')
{
if(serial_buffer[1] == 'w')
{
sector_address = ((long)first_byte << 24) + ((long)second_byte << 16) +
((long)third_byte << 8) + ((long)fourth_byte);
for(k=0; k<512; k++) data[k] = received_character;
i = MMC_Write_Sector(sector_address, data);
if(i != 0)
{
USART_Write('W');
USART_Write('r');
USART_Write('-');
USART_Write('E');
USART_Write('r');
USART_Write('r');
USART_Write(13);
USART_Write(10);
}
else
{
USART_Write('W');
USART_Write('r');
USART_Write('-');
USART_Write('O');
USART_Write('K');
USART_Write(13);
USART_Write(10);
}
}
}
if(serial_buffer[0] == 'C')
{
received_character = serial_buffer[1];
}
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -