//Inculde Header Files----------------------------------------------- #include #include #include #include #include #include #include #include #include //Enumerations------------------------------------------------------- typedef enum {false, true} bool; typedef enum {fuse_read, fuse_write, page_read, page_write, prog_check} mode; //Constants---------------------------------------------------------- #define nibble_lo 0x0F #define nibble_hi 0xF0 #define frame_mask 0x90 //Structs------------------------------------------------------------ typedef struct { char mode; char opt_lo; char opt_hi; } cmd_t; //Protoypes---------------------------------------------------------- char * cmd_build(mode cmd_mode, char cmd_option); char * page_build(); void delay(int delay_time); //Variables---------------------------------------------------------- char cmd_arr[3]; char page_size = 0x40; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Build Command char * cmd_build(mode cmd_mode, char cmd_option){ cmd_t * cmd_ptr = (cmd_t *)malloc(sizeof(cmd_t)); (*cmd_ptr).mode = frame_mask|cmd_mode; (*cmd_ptr).opt_lo = frame_mask|(cmd_option&nibble_lo); (*cmd_ptr).opt_hi = frame_mask|((cmd_option>>4)&nibble_lo); char * frame_ptr = &((*cmd_ptr).mode); return frame_ptr; } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Delay in ms void delay(int delay_time){ clock_t time1 = clock(); while(((clock()-time1)/CLOCKS_PER_SEC)*1000 != (clock_t)delay_time); } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Build Page char * page_build(){ char page[70]; for(int i=0; i<70; i++){ page[i] = 0xFF; } char * page_ptr = &page[0]; return page_ptr; }