⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdio.c

📁 近期完成的一个项目
💻 C
📖 第 1 页 / 共 4 页
字号:
#include "c8051f310.h"
#include "SDIO.h"
unsigned char CMD_R[6]={0,0};
unsigned char OCR_REG[3]={0xff,0xc0,0xff}; //operation condition reg:2.7-3.6V
unsigned char RCA_REG[2]={0x00,0x01};
unsigned char Buffer_send[10]={0x00,0x00};
unsigned char Data_Receive[10]={0x00,0x00};
unsigned char Data_Send[10]={0x00};
unsigned short crc_16_result;
unsigned char Uart_Reg_IIR;
unsigned char Uart_Reg_Rv_Count;
unsigned char Int_Pending;
unsigned char CRC7_CAL;
unsigned char Adc_X,Adc_Y;
unsigned char Slave_Mode,Slave_state;
unsigned int Reg_address;
unsigned char Ini_Flag;
unsigned char Ini_Ready;
unsigned char index;
unsigned char Data_index;
unsigned char timer_index;
unsigned char debug_info;
unsigned char Acc_Request_Flag;
#define Inactive_State 0x00;
#define Initialization_State 0x01;
#define Standby_State 0x02;
#define Command_State 0x03;
#define Transfer_State 0x04;
#define CRC7_POLYNOMIAL 0x89 
/*unsigned char code CRC16_CMD53[512]={0x0,0x0,0x10,0x21,0x20,0x42,0x30,0x63,0x40,0x84,0x50,0xa5,0x60,0xc6,0x70,0xe7,
                                     0x81,0x8,0x91,0x29,0xa1,0x4a,0xb1,0x6b,0xc1,0x8c,0xd1,0xad,0xe1,0xce,0xf1,0xef,
                                     0x12,0x31,0x2,0x10,0x32,0x73,0x22,0x52,0x52,0xb5,0x42,0x94,0x72,0xf7,0x62,0xd6,
                                     0x93,0x39,0x83,0x18,0xb3,0x7b,0xa3,0x5a,0xd3,0xbd,0xc3,0x9c,0xf3,0xff,0xe3,0xde,
                                     0x24,0x62,0x34,0x43,0x4,0x20,0x14,0x1,0x64,0xe6,0x74,0xc7,0x44,0xa4,0x54,0x85,
                                     0xa5,0x6a,0xb5,0x4b,0x85,0x28,0x95,0x9,0xe5,0xee,0xf5,0xcf,0xc5,0xac,0xd5,0x8d,
                                     0x36,0x53,0x26,0x72,0x16,0x11,0x6,0x30,0x76,0xd7,0x66,0xf6,0x56,0x95,0x46,0xb4,
                                     0xb7,0x5b,0xa7,0x7a,0x97,0x19,0x87,0x38,0xf7,0xdf,0xe7,0xfe,0xd7,0x9d,0xc7,0xbc,
                                     0x48,0xc4,0x58,0xe5,0x68,0x86,0x78,0xa7,0x8,0x40,0x18,0x61,0x28,0x2,0x38,0x23,
                                     0xc9,0xcc,0xd9,0xed,0xe9,0x8e,0xf9,0xaf,0x89,0x48,0x99,0x69,0xa9,0xa,0xb9,0x2b,
                                     0x5a,0xf5,0x4a,0xd4,0x7a,0xb7,0x6a,0x96,0x1a,0x71,0xa,0x50,0x3a,0x33,0x2a,0x12,
                                     0xdb,0xfd,0xcb,0xdc,0xfb,0xbf,0xeb,0x9e,0x9b,0x79,0x8b,0x58,0xbb,0x3b,0xab,0x1a,
                                     0x6c,0xa6,0x7c,0x87,0x4c,0xe4,0x5c,0xc5,0x2c,0x22,0x3c,0x3,0xc,0x60,0x1c,0x41,
                                     0xed,0xae,0xfd,0x8f,0xcd,0xec,0xdd,0xcd,0xad,0x2a,0xbd,0xb,0x8d,0x68,0x9d,0x49,
                                     0x7e,0x97,0x6e,0xb6,0x5e,0xd5,0x4e,0xf4,0x3e,0x13,0x2e,0x32,0x1e,0x51,0xe,0x70,
                                     0xff,0x9f,0xef,0xbe,0xdf,0xdd,0xcf,0xfc,0xbf,0x1b,0xaf,0x3a,0x9f,0x59,0x8f,0x78,
                                     0x91,0x88,0x81,0xa9,0xb1,0xca,0xa1,0xeb,0xd1,0xc,0xc1,0x2d,0xf1,0x4e,0xe1,0x6f,
                                     0x10,0x80,0x0,0xa1,0x30,0xc2,0x20,0xe3,0x50,0x4,0x40,0x25,0x70,0x46,0x60,0x67,
                                     0x83,0xb9,0x93,0x98,0xa3,0xfb,0xb3,0xda,0xc3,0x3d,0xd3,0x1c,0xe3,0x7f,0xf3,0x5e,
                                     0x2,0xb1,0x12,0x90,0x22,0xf3,0x32,0xd2,0x42,0x35,0x52,0x14,0x62,0x77,0x72,0x56,
                                     0xb5,0xea,0xa5,0xcb,0x95,0xa8,0x85,0x89,0xf5,0x6e,0xe5,0x4f,0xd5,0x2c,0xc5,0xd,
                                     0x34,0xe2,0x24,0xc3,0x14,0xa0,0x4,0x81,0x74,0x66,0x64,0x47,0x54,0x24,0x44,0x5,
                                     0xa7,0xdb,0xb7,0xfa,0x87,0x99,0x97,0xb8,0xe7,0x5f,0xf7,0x7e,0xc7,0x1d,0xd7,0x3c,
                                     0x26,0xd3,0x36,0xf2,0x6,0x91,0x16,0xb0,0x66,0x57,0x76,0x76,0x46,0x15,0x56,0x34,
                                     0xd9,0x4c,0xc9,0x6d,0xf9,0xe,0xe9,0x2f,0x99,0xc8,0x89,0xe9,0xb9,0x8a,0xa9,0xab,
                                     0x58,0x44,0x48,0x65,0x78,0x6,0x68,0x27,0x18,0xc0,0x8,0xe1,0x38,0x82,0x28,0xa3,
                                     0xcb,0x7d,0xdb,0x5c,0xeb,0x3f,0xfb,0x1e,0x8b,0xf9,0x9b,0xd8,0xab,0xbb,0xbb,0x9a,
                                     0x4a,0x75,0x5a,0x54,0x6a,0x37,0x7a,0x16,0xa,0xf1,0x1a,0xd0,0x2a,0xb3,0x3a,0x92,
                                     0xfd,0x2e,0xed,0xf,0xdd,0x6c,0xcd,0x4d,0xbd,0xaa,0xad,0x8b,0x9d,0xe8,0x8d,0xc9,
                                     0x7c,0x26,0x6c,0x7,0x5c,0x64,0x4c,0x45,0x3c,0xa2,0x2c,0x83,0x1c,0xe0,0xc,0xc1,
                                     0xef,0x1f,0xff,0x3e,0xcf,0x5d,0xdf,0x7c,0xaf,0x9b,0xbf,0xba,0x8f,0xd9,0x9f,0xf8,
                                     0x6e,0x17,0x7e,0x36,0x4e,0x55,0x5e,0x74,0x2e,0x93,0x3e,0xb2,0xe,0xd1,0x1e,0xf0};*/
/*unsigned char code crc7_syndrome_table[256]={0x00,0x09,0x12,0x1b,0x24,0x2d,0x36,0x3f,
                                             0x48,0x41,0x5a,0x53,0x6c,0x65,0x7e,0x77,
											 0x19,0x10,0x0b,0x02,0x3d,0x34,0x2f,0x26,
											 0x51,0x58,0x43,0x4a,0x75,0x7c,0x67,0x6e,
											 0x32,0x3b,0x20,0x29,0x16,0x1f,0x04,0x0d,
											 0x7a,0x73,0x68,0x61,0x5e,0x57,0x4c,0x45,
											 0x2b,0x22,0x39,0x30,0x0f,0x06,0x1d,0x14,
											 0x63,0x6a,0x71,0x78,0x47,0x4e,0x55,0x5c,
											 0x64,0x6d,0x76,0x7f,0x40,0x49,0x52,0x5b,
											 0x2c,0x25,0x3e,0x37,0x08,0x01,0x1a,0x13,
											 0x7d,0x74,0x6f,0x66,0x59,0x50,0x4b,0x42,
											 0x35,0x3c,0x27,0x2e,0x11,0x18,0x03,0x0a,
											 0x56,0x5f,0x44,0x4d,0x72,0x7b,0x60,0x69,
											 0x1e,0x17,0x0c,0x05,0x3a,0x33,0x28,0x21,
											 0x4f,0x46,0x5d,0x54,0x6b,0x62,0x79,0x70,
											 0x07,0x0e,0x15,0x1c,0x23,0x2a,0x31,0x38,
											 0x41,0x48,0x53,0x5a,0x65,0x6c,0x77,0x7e,
											 0x09,0x00,0x1b,0x12,0x2d,0x24,0x3f,0x36,
											 0x58,0x51,0x4a,0x43,0x7c,0x75,0x6e,0x67,
											 0x10,0x19,0x02,0x0b,0x34,0x3d,0x26,0x2f,
											 0x73,0x7a,0x61,0x68,0x57,0x5e,0x45,0x4c,
											 0x3b,0x32,0x29,0x20,0x1f,0x16,0x0d,0x04,
											 0x6a,0x63,0x78,0x71,0x4e,0x47,0x5c,0x55,
											 0x22,0x2b,0x30,0x39,0x06,0x0f,0x14,0x1d,
											 0x25,0x2c,0x37,0x3e,0x01,0x08,0x13,0x1a,
											 0x6d,0x64,0x7f,0x76,0x49,0x40,0x5b,0x52,
											 0x3c,0x35,0x2e,0x27,0x18,0x11,0x0a,0x03,
											 0x74,0x7d,0x66,0x6f,0x50,0x59,0x42,0x4b,
											 0x17,0x1e,0x05,0x0c,0x33,0x3a,0x21,0x28,
											 0x5f,0x56,0x4d,0x44,0x7b,0x72,0x69,0x60,
											 0x0e,0x07,0x1c,0x15,0x2a,0x23,0x38,0x31,
											 0x46,0x4f,0x54,0x5d,0x62,0x6b,0x70,0x79};*/

static unsigned short code crc16_table[256] = {
0X0000U, 0X1021U, 0X2042U, 0X3063U, 0X4084U, 0X50A5U, 0X60C6U, 0X70E7U,
0X8108U, 0X9129U, 0XA14AU, 0XB16BU, 0XC18CU, 0XD1ADU, 0XE1CEU, 0XF1EFU,
0X1231U, 0X0210U, 0X3273U, 0X2252U, 0X52B5U, 0X4294U, 0X72F7U, 0X62D6U,
0X9339U, 0X8318U, 0XB37BU, 0XA35AU, 0XD3BDU, 0XC39CU, 0XF3FFU, 0XE3DEU,
0X2462U, 0X3443U, 0X0420U, 0X1401U, 0X64E6U, 0X74C7U, 0X44A4U, 0X5485U,
0XA56AU, 0XB54BU, 0X8528U, 0X9509U, 0XE5EEU, 0XF5CFU, 0XC5ACU, 0XD58DU,
0X3653U, 0X2672U, 0X1611U, 0X0630U, 0X76D7U, 0X66F6U, 0X5695U, 0X46B4U,
0XB75BU, 0XA77AU, 0X9719U, 0X8738U, 0XF7DFU, 0XE7FEU, 0XD79DU, 0XC7BCU,
0X48C4U, 0X58E5U, 0X6886U, 0X78A7U, 0X0840U, 0X1861U, 0X2802U, 0X3823U,
0XC9CCU, 0XD9EDU, 0XE98EU, 0XF9AFU, 0X8948U, 0X9969U, 0XA90AU, 0XB92BU,
0X5AF5U, 0X4AD4U, 0X7AB7U, 0X6A96U, 0X1A71U, 0X0A50U, 0X3A33U, 0X2A12U,
0XDBFDU, 0XCBDCU, 0XFBBFU, 0XEB9EU, 0X9B79U, 0X8B58U, 0XBB3BU, 0XAB1AU,
0X6CA6U, 0X7C87U, 0X4CE4U, 0X5CC5U, 0X2C22U, 0X3C03U, 0X0C60U, 0X1C41U,
0XEDAEU, 0XFD8FU, 0XCDECU, 0XDDCDU, 0XAD2AU, 0XBD0BU, 0X8D68U, 0X9D49U,
0X7E97U, 0X6EB6U, 0X5ED5U, 0X4EF4U, 0X3E13U, 0X2E32U, 0X1E51U, 0X0E70U,
0XFF9FU, 0XEFBEU, 0XDFDDU, 0XCFFCU, 0XBF1BU, 0XAF3AU, 0X9F59U, 0X8F78U,
0X9188U, 0X81A9U, 0XB1CAU, 0XA1EBU, 0XD10CU, 0XC12DU, 0XF14EU, 0XE16FU,
0X1080U, 0X00A1U, 0X30C2U, 0X20E3U, 0X5004U, 0X4025U, 0X7046U, 0X6067U,
0X83B9U, 0X9398U, 0XA3FBU, 0XB3DAU, 0XC33DU, 0XD31CU, 0XE37FU, 0XF35EU,
0X02B1U, 0X1290U, 0X22F3U, 0X32D2U, 0X4235U, 0X5214U, 0X6277U, 0X7256U,
0XB5EAU, 0XA5CBU, 0X95A8U, 0X8589U, 0XF56EU, 0XE54FU, 0XD52CU, 0XC50DU,
0X34E2U, 0X24C3U, 0X14A0U, 0X0481U, 0X7466U, 0X6447U, 0X5424U, 0X4405U,
0XA7DBU, 0XB7FAU, 0X8799U, 0X97B8U, 0XE75FU, 0XF77EU, 0XC71DU, 0XD73CU,
0X26D3U, 0X36F2U, 0X0691U, 0X16B0U, 0X6657U, 0X7676U, 0X4615U, 0X5634U,
0XD94CU, 0XC96DU, 0XF90EU, 0XE92FU, 0X99C8U, 0X89E9U, 0XB98AU, 0XA9ABU,
0X5844U, 0X4865U, 0X7806U, 0X6827U, 0X18C0U, 0X08E1U, 0X3882U, 0X28A3U,
0XCB7DU, 0XDB5CU, 0XEB3FU, 0XFB1EU, 0X8BF9U, 0X9BD8U, 0XABBBU, 0XBB9AU,
0X4A75U, 0X5A54U, 0X6A37U, 0X7A16U, 0X0AF1U, 0X1AD0U, 0X2AB3U, 0X3A92U,
0XFD2EU, 0XED0FU, 0XDD6CU, 0XCD4DU, 0XBDAAU, 0XAD8BU, 0X9DE8U, 0X8DC9U,
0X7C26U, 0X6C07U, 0X5C64U, 0X4C45U, 0X3CA2U, 0X2C83U, 0X1CE0U, 0X0CC1U,
0XEF1FU, 0XFF3EU, 0XCF5DU, 0XDF7CU, 0XAF9BU, 0XBFBAU, 0X8FD9U, 0X9FF8U,
0X6E17U, 0X7E36U, 0X4E55U, 0X5E74U, 0X2E93U, 0X3EB2U, 0X0ED1U, 0X1EF0U
};
unsigned char code crc7_CMD52[256]={0xa1,0xb3,0x85,0x97,0xe9,0xfb,0xcd,0xdf, 
                                    0x31,0x23,0x15,0x07,0x79,0x6b,0x5d,0x4f, 
                                    0x93,0x81,0xb7,0xa5,0xdb,0xc9,0xff,0xed, 
                                    0x03,0x11,0x27,0x35,0x4b,0x59,0x6f,0x7d, 
                                    0xc5,0xd7,0xe1,0xf3,0x8d,0x9f,0xa9,0xbb, 
                                    0x55,0x47,0x71,0x63,0x1d,0x0f,0x39,0x2b, 
                                    0xf7,0xe5,0xd3,0xc1,0xbf,0xad,0x9b,0x89, 
                                    0x67,0x75,0x43,0x51,0x2f,0x3d,0x0b,0x19, 
                                    0x69,0x7b,0x4d,0x5f,0x21,0x33,0x05,0x17, 
                                    0xf9,0xeb,0xdd,0xcf,0xb1,0xa3,0x95,0x87, 
                                    0x5b,0x49,0x7f,0x6d,0x13,0x01,0x37,0x25, 
                                    0xcb,0xd9,0xef,0xfd,0x83,0x91,0xa7,0xb5, 
                                    0x0d,0x1f,0x29,0x3b,0x45,0x57,0x61,0x73, 
                                    0x9d,0x8f,0xb9,0xab,0xd5,0xc7,0xf1,0xe3, 
                                    0x3f,0x2d,0x1b,0x09,0x77,0x65,0x53,0x41, 
                                    0xaf,0xbd,0x8b,0x99,0xe7,0xf5,0xc3,0xd1, 
                                    0x23,0x31,0x70,0x15,0x6b,0x79,0x4f,0x5d, 
                                    0xb3,0xa1,0x97,0x85,0xfb,0xe9,0xdf,0xcd, 
                                    0x11,0x03,0x35,0x27,0x59,0x4b,0x7d,0x6f, 
                                    0x81,0x93,0xa5,0xb7,0xc9,0xdb,0xed,0xff, 
                                    0x47,0x55,0x63,0x71,0x0f,0x1d,0x2b,0x39, 
                                    0xd7,0xc5,0xf3,0xe1,0x9f,0x8d,0xbb,0xa9, 
                                    0x75,0x67,0x51,0x43,0x3d,0x2f,0x19,0x0b, 
                                    0xe5,0xf7,0xc1,0xd3,0xad,0xbf,0x89,0x9b, 
                                    0xeb,0xf9,0xcf,0xdd,0xa3,0xb1,0x87,0x95, 
                                    0x7b,0x69,0x5f,0x4d,0x33,0x21,0x17,0x05, 
                                    0xd9,0xcb,0xfd,0xef,0x91,0x83,0xb5,0xa7, 
                                    0x49,0x5b,0x6d,0x7f,0x01,0x13,0x25,0x37, 
                                    0x8f,0x9d,0xab,0xb9,0xc7,0xd5,0xe3,0xf1, 
                                    0x1f,0x0d,0x3b,0x29,0x57,0x45,0x73,0x61, 
                                    0xbd,0xaf,0x99,0x8b,0xf5,0xe7,0xd1,0xc3, 
                                    0x2d,0x3f,0x09,0x1b,0x65,0x77,0x41,0x53};

unsigned char code crc7_CMD53[256]={0xcd,0xdf,0xe9,0xfb,0x85,0x97,0xa1,0xb3,
                                    0x5d,0x4f,0x79,0x6b,0x15,0x7,0x31,0x23,
                                    0xff,0xed,0xdb,0xc9,0xb7,0xa5,0x93,0x81,
                                    0x6f,0x7d,0x4b,0x59,0x27,0x35,0x3,0x11,
                                    0xa9,0xbb,0x8d,0x9f,0xe1,0xf3,0xc5,0xd7,
                                    0x39,0x2b,0x1d,0xf,0x71,0x63,0x55,0x47,
                                    0x9b,0x89,0xbf,0xad,0xd3,0xc1,0xf7,0xe5,
                                    0xb,0x19,0x2f,0x3d,0x43,0x51,0x67,0x75,
                                    0x5,0x17,0x21,0x33,0x4d,0x5f,0x69,0x7b,
                                    0x95,0x87,0xb1,0xa3,0xdd,0xcf,0xf9,0xeb,
                                    0x37,0x25,0x13,0x1,0x7f,0x6d,0x5b,0x49,
                                    0xa7,0xb5,0x83,0x91,0xef,0xfd,0xcb,0xd9,
                                    0x61,0x73,0x45,0x57,0x29,0x3b,0xd,0x1f,
                                    0xf1,0xe3,0xd5,0xc7,0xb9,0xab,0x9d,0x8f,
                                    0x53,0x41,0x77,0x65,0x1b,0x9,0x3f,0x2d,
                                    0xc3,0xd1,0xe7,0xf5,0x8b,0x99,0xaf,0xbd,
                                    0x4f,0x5d,0x6b,0x79,0x7,0x15,0x23,0x31,
                                    0xdf,0xcd,0xfb,0xe9,0x97,0x85,0xb3,0xa1,
                                    0x7d,0x6f,0x59,0x4b,0x35,0x27,0x11,0x3,
                                    0xed,0xff,0xc9,0xdb,0xa5,0xb7,0x81,0x93,
                                    0x2b,0x39,0xf,0x1d,0x63,0x71,0x47,0x55,
                                    0xbb,0xa9,0x9f,0x8d,0xf3,0xe1,0xd7,0xc5,
                                    0x19,0xb,0x3d,0x2f,0x51,0x43,0x75,0x67,
                                    0x89,0x9b,0xad,0xbf,0xc1,0xd3,0xe5,0xf7,
                                    0x87,0x95,0xa3,0xb1,0xcf,0xdd,0xeb,0xf9,
                                    0x17,0x5,0x33,0x21,0x5f,0x4d,0x7b,0x69,
                                    0xb5,0xa7,0x91,0x83,0xfd,0xef,0xd9,0xcb,
                                    0x25,0x37,0x1,0x13,0x6d,0x7f,0x49,0x5b,
                                    0xe3,0xf1,0xc7,0xd5,0xab,0xb9,0x8f,0x9d,
                                    0x73,0x61,0x57,0x45,0x3b,0x29,0x1f,0xd,
                                    0xd1,0xc3,0xf5,0xe7,0x99,0x8b,0xbd,0xaf};

void delay_us(unsigned int time_count)
{
   do 
   { 
     time_count--; 
   } 
   while (time_count>1); 
}

void delay_s(unsigned int time_count)
{
 unsigned int i;
for( i=0;i<time_count;time_count++)
 delay_us(30);
}

void Oscillator_Init(void)
{
   OSCICL=0x08;                    //Internal Oscillator programme to 24MHz.
   OSCICN=0xC3;                    //Enable Internal oscilator and set dividor to 1
}

void Watchdog_close(void)
{
   PCA0MD&=~0X40;                  //COSE WATCHDOG
}

void IO_Init(void)
{
   P2MDOUT=0x08;                   //Config P2.0-P2.3(CLK,CMD,DATA0,led) as push_pull
   P1MDOUT=0x00;
   XBR1=0x60;                      //Crossbar enabled
   P1MDIN&=~0x30;
   Uart_Reg_Rv_Count=0;
   Int_Pending=0;
   Uart_Reg_IIR=0;
   Data_index=0;
   Acc_Request_Flag=0;
}

void ADC_Init(void)
{
   AMX0P=0x04;                    //P1.5    x_axis
   AMX0N=0x1F;                    //GND(ADC in single-ended mode)
   ADC0CN=0xC0;  
   ADC0CF=0x38;                   //Right ajusted
   REF0CN=0x0A;                  // Vdd used as voltage reference, internal temperature sensor off	           
}          

void Interrupts_Init()
{
   IE=0xA0;                       //Enabled T2 interrupt  enabled all
}

void ADC(void)
{
   AMX0P=0x05; 
   AD0BUSY=0X01;
   while(AD0BUSY);
   AD0BUSY=0X01;
   while(AD0BUSY);
   Data_Send[0]=ADC0H;  
   Data_Send[1]=ADC0L;  
   AMX0P=0x04;                    
   AD0BUSY=0X01;
   while(AD0BUSY);
   AD0BUSY=0X01;
   while(AD0BUSY);
   Data_Send[2]=ADC0H;  
   Data_Send[3]=ADC0L;
}

void Timer_Init(void)
{ 
   TMR2CN =0x04;                               //Timer2 enabled, clock is the system clock divided by 12                   
   TMR2RLL=0x00;
   TMR2RLH=0xc0;
   TMR2L  =0x00;
   TMR2H  =0xc0;
   timer_index=0;
}

void Timer2_ISR (void) interrupt 5 using 1
{
   
   //IE=0;
   TMR2CN&=0x7F;                              // clear inturrupt overflow flag  
   //if(++timer_index==1)
   //{
  // timer_index=0;
   SD_BUSY_LED^=1;
   //SD_BUSY_LED=0;
   //}
  ADC(); 
}

unsigned char Read_Byte_SD(void)              //MCU Data READ
{ 
   unsigned char temp=0;
   unsigned char i;
   for (i=0; i<8; i++)                        //MSB First
   {
    while(SD_CLK_PIN==1) ;                    //WAITING Clock Impuls (Low)
    temp=(temp<<1)|SD_DATA0_PIN;              //read data from master
    while(SD_CLK_PIN==0);	                  //WAITING Clock Impuls (LOW)       
   } 
   return (temp);
}

unsigned char code mask[8]={0x80,0x40,0x20,0x10,8,4,2,1};
void Write_Res_SD_CMD53(unsigned char value1,unsigned char value2)         //MCU CMD WRITE
{ 
   unsigned char i;  
   for (i=0; i<8; i++) 
   {
    while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low) 
    if((value1 & mask[i])!=0)
	SD_CMD_PIN=1;
	else SD_CMD_PIN=0;                             
	if((value2 & mask[i])!=0)
	SD_DATA0_PIN=1; 
    else SD_DATA0_PIN=0; 
    while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
   }                         
}

void Write_Byte_SD(unsigned char value)       //MCU Data WRITE
{ 
   unsigned char i;  
   for (i=0; i<8; i++) 
   { 
    while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low)
    if((value & mask[i])!=0)
	SD_DATA0_PIN=1;                           //Send bit by bit(MSB First)
    else SD_DATA0_PIN=0;
    while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
   }
}

void Write_Res_SD(unsigned char value)         //MCU CMD WRITE
{ 
   unsigned char i;  
   for (i=0; i<8; i++) 
   {
    while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low) 
    if((value&mask[i])!=0)
	SD_CMD_PIN=1;                             //Send bit by bit(MSB First)
    else SD_CMD_PIN=0; 
    while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
   }                         
}

unsigned char Read_CMD_SD(void)               //MCU CMD READ
{ 
   unsigned char temp=0;
   unsigned char i;                       
   for (i=0; i<8; i++)                        //MSB First
   {
    while(SD_CLK_PIN==1) ;                    //WAITING Clock Impuls (Low)
    temp=(temp<<1)|SD_CMD_PIN;                //read data from master
    while(SD_CLK_PIN==0);	                  //WAITING Clock Impuls (High)       
   } 
   return (temp);
}

unsigned char CRC7(unsigned char * chr, int cnt) 
{ 
   unsigned int i,a; 
   unsigned char crc_7,Data; 
   crc_7=0; 
   for(a=0;a<cnt;a++) 
   { 
     Data=chr[a]; 
     for (i=0;i<8;i++) 
    { 
      crc_7<<=1;
      if((Data&0x80)^(crc_7&0x80)) 
      crc_7^=0x09; 
      Data <<=1; 
    } 
   } 
   crc_7=(crc_7<<1)|1; 
   return(crc_7); 
}

//ITU-T V.41
//x^16 + x^12 + x^15 + 1
unsigned short
sp_crc16(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -