Home » Football » Al-Kawkab (Saudi Arabia)

Al-Kawkab: Leading the Saudi Professional League with Squad Insights & Stats

Overview / Introduction about Al-Kawkab

Al-Kawkab is a prominent football team based in Morocco, competing in the Moroccan Pro League. Known for their dynamic gameplay and strategic prowess, the team has established itself as a formidable force in African football. The current formation of the team is 4-3-3, which allows for a balanced approach between defense and attack.

Team History and Achievements

Founded in 1937, Al-Kawkab has a rich history marked by numerous titles and accolades. The club has won the Moroccan Championship multiple times and has consistently been among the top teams in the league. Notable seasons include their triumphant runs in the early 2000s, where they secured back-to-back league titles.

Current Squad and Key Players

The current squad boasts several key players who are instrumental to the team’s success. Among them are:

  • Mohamed Abarhoun: A versatile midfielder known for his vision and playmaking abilities.
  • Mohamed Oulhaj: A prolific striker whose goal-scoring prowess makes him a vital asset.
  • Mouhcine Iajour: A dynamic winger with exceptional speed and dribbling skills.

Team Playing Style and Tactics

Al-Kawkab employs a 4-3-3 formation that emphasizes quick transitions from defense to attack. Their strategy focuses on maintaining possession and exploiting spaces through wide play. Strengths include their solid defensive structure and fast counterattacks, while weaknesses may arise from occasional lapses in concentration during high-pressure matches.

Interesting Facts and Unique Traits

The team is affectionately nicknamed “The Eagles,” reflecting their soaring ambitions on the pitch. They have a passionate fanbase known as “The Green Army,” who are renowned for their unwavering support. Al-Kawkab’s rivalry with Wydad Casablanca is one of the most intense in Moroccan football, often dubbed the “Derby of Morocco.”

Lists & Rankings of Players, Stats, or Performance Metrics

  • Mohamed Oulhaj: Top Scorer ✅
  • Mouhcine Iajour: Assists Leader 🎰
  • Mohamed Abarhoun: Playmaking Excellence 💡

Comparisons with Other Teams in the League or Division

When compared to other top teams like Wydad Casablanca and Raja Casablanca, Al-Kawkab stands out for its cohesive teamwork and tactical flexibility. While Wydad may have more individual talent, Al-Kawkab’s collective effort often gives them an edge in crucial matches.

Case Studies or Notable Matches

A breakthrough game for Al-Kawkab was their victory against Raja Casablanca in 2019, which was pivotal in securing their league position that season. This match showcased their tactical acumen and resilience under pressure.

Statistic Data
Recent Form W-W-D-L-W (Last 5 Matches)
Head-to-Head Record vs Wydad Casablanca D-N-W (Last 3 Meetings)
Odds for Next Match Win/Loss/Draw Win: 1.8 / Draw: 3.5 / Loss: 4.0

Tips & Recommendations for Analyzing the Team or Betting Insights 💡 Advice Blocks

To effectively analyze Al-Kawkab for betting purposes:

  • Analyze recent form trends to gauge momentum.
  • Consider head-to-head records against upcoming opponents.
  • Evaluate key player performances and potential injuries.
  • Monitor tactical changes made by the coach during crucial matches.

Frequently Asked Questions (FAQ)

What are Al-Kawkab’s strengths?

Their strengths lie in their strong defensive organization and quick counterattacking style, making them difficult to break down.

Who are Al-Kawkab’s main rivals?</h3

Their main rival is Wydad Casablanca, with whom they contest the Derby of Morocco.

How can I bet on Al-Kawkab effectively?</h3

Focusing on recent form, key player availability, and tactical setups can provide valuable insights for betting decisions.

Quotes or Expert Opinions about the Team (Quote Block)</h2

“Al-Kawkab’s ability to adapt tactically mid-game is what sets them apart from many other teams,” says local football analyst Youssef El Fassi.</blockquote

Pros & Cons of the Team’s Current Form or Performance (✅❌ Lists)</h2
<ul

  • +✅ Solid Defensive Record:</li
  • -❌ Inconsistent Attacking Output:</li
  • +✅ Strong Team Cohesion:</li
  • -❌ Vulnerability to Set Pieces:</ljoeysan/microbit-sd-card-reader/microbit_sd_card_reader.c

    #include “microbit_sd_card_reader.h”

    uint8_t sdCardReadBlock(uint32_t blockAddress,uint8_t *buffer)
    {
    uint8_t response;
    uint32_t address;

    address = blockAddress << 9;

    // Send command C_READ_SINGLE_BLOCK.
    microBitSDCardSendCommand(C_READ_SINGLE_BLOCK,address);

    // Wait response.
    response = microBitSDCardWaitResponse();
    if(response != R1_RESP_NO_ERROR)
    {
    return response;
    }

    // Receive data.
    microBitSDCardReceiveData(buffer);

    return R1_RESP_NO_ERROR;
    }

    uint8_t sdCardWriteBlock(uint32_t blockAddress,uint8_t *buffer)
    {
    uint8_t response;
    uint32_t address;

    address = blockAddress << 9;

    // Send command C_WRITE_SINGLE_BLOCK.
    microBitSDCardSendCommand(C_WRITE_SINGLE_BLOCK,address);

    // Wait response.
    response = microBitSDCardWaitResponse();
    if(response != R1_RESP_NO_ERROR)
    {
    return response;
    }

    microBitSDCardTransmitData(buffer);

    return R1_RESP_NO_ERROR;
    }

    uint8_t microBitSDCardSendCommand(uint8_t cmd,uint32_t arg)
    {
    uint8_t i,j;

    for(i=0;i<10;i++)
    {
    if( !microBitSDCardIsBusy() )
    {
    break;
    }
    }

    if(i==10)
    {
    return CMD_TIMEOUT_ERR; // Card busy error.
    }

    spiMasterSelectDevice(SD_CARD_DEVICE);

    spiMasterSetClock(SPI_CLOCK_400KHZ);

    spiMasterSetMode(SPI_MODE_0);

    spiMasterClearBuffer();

    // Send command byte.
    spiMasterPutByte(cmd | SPI_CMD_START_BIT);

    for(j=0;j> ((j+1)*8)) & SPI_BYTE_MASK);
    }

    spiMasterPutByte(arg & SPI_BYTE_MASK);

    spiMasterPutByte(0x95); // Dummy CRC byte.

    spiMasterFlushBuffer();

    spiMasterUnselectDevice();

    return CMD_OK;
    }

    uint8_t microBitSDCardWaitResponse(void)
    {
    uint8_t response,responseType,i;

    for(i=0;i> SPI_RESPONSE_TYPE_SHIFT) & SPI_RESPONSE_TYPE_MASK;

    while(responseType == SPI_RESPONSE_TYPE_R1B_BUSY)
    {
    if( !microBitSDCardIsBusy() )
    {
    break;
    }

    response = spiMasterGetByte();

    responseType = (response >> SPI_RESPONSE_TYPE_SHIFT) & SPI_RESPONSE_TYPE_MASK;

    if(responseType == SPI_RESPONSE_TYPE_R1B_BUSY)
    {
    i++;

    if(i==10)
    {
    spiMasterUnselectDevice();

    return CMD_TIMEOUT_ERR; // Card busy error.
    }
    }

    delayMicroseconds(100);

    response = spiMasterGetByte();

    responseType = (response >> SPI_RESPONSE_TYPE_SHIFT) & SPI_RESPONSE_TYPE_MASK;

    if(responseType != SPI_RESPONSE_TYPE_R1B_BUSY && responseType != SPI_RESPONSE_TYPE_R1A_READY_FOR_DATA && responseType != SPI_RESPONSE_TYPE_R6_ILLEGAL_COMMAND && responseType != SPI_RESPONSE_TYPE_NONE )
    {
    break;
    }

    delayMicroseconds(100);

    response = spiMasterGetByte();

    responseType = (response >> SPI_RESPONSE_TYPE_SHIFT) & SPI_RESPONSE_TYPE_MASK;

    if(responseType == SPI_RESPONSE_TYPE_R7_COM_CRC_FAILED || responseType == SPI_RESPONSE_TYPE_R5_PARAMETER_ERROR || responseType == SPI_RESPONSE_TYPE_R4_ADDRESS_OUT_OF_RANGE || responseType ==SPI_RESPONSE_TYPE_R1A_READY_FOR_DATA || responseType ==SPI_RESPONSE_TYPE_NONE )
    {
    break;
    }

    delayMicroseconds(100);

    response = spiMasterGetByte();

    responseType = (response >> SPI_RESPONSE_TYPE_SHIFT) &SPI_RESPONSE_TYPE_MASK;

    if(responseType !=SPI_RESPONSE_TYPE_NONE )
    {
    break;
    }

    delayMicroseconds(100);

    response = spiMasterGetByte();

    responseType =(response >>SPI_RESPONSE_TYPE_SHIFT) &SPI_RESPONSE_TYPE_MASK;

    if(responseType!=SPI_RESPONSE_TYPE_NONE )
    {
    break;
    }

    delayMicroseconds(100);

    response=spiMasterGetByte();

    responseType=(response>>SPI_RESPONSE_TYPE_SHIFT)&SPI_REPONSE_TYPR_MASK;

    if(responseType!=SPI_REPONSE_TYPR_NONE)
    {
    break;
    }

    delayMicroseconds(100);

    response=spiMasterGetByte();

    responseType=(response>>SPI_REPONSE_TYPR_SHIFT)&SPI_REPONSE_TYPR_MASK;

    if(responseType!=SPI_REPONSE_TYPR_NONE)
    {
    break;
    }

    delayMicroseconds(100);

    response=spiMasterGetByte();

    responseType=(response>>SPI_REPONSE_TYPR_SHIFT)&SPI_REPONSE_TYPR_MASK;

    if(responseType!=SPI_REPONSE_TYPR_NONE)
    {
    break;
    }

    delayMicroseconds(100);

    response=spiMasterGetByte();

    responseType=(response>>SPI_REPONSE_TYPR_SHIFT)&SPI_REPONSE_TYPR_MASK;

    if(responseType!=SPI_REPONSE_TYPR_NONE)
    {
    break;
    }

    delayMicroseconds(100);

    response=spiMasterGetByte();

    responseType=(response>>SPI_REPONSE_TYPR_SHIFT)&SPI_REPONSE_TYPR_MASK;

    if(responseType!=SPR_EOIP_COMMAND_FINISHED_WITHOUT_ERROR &&i==40)
    {
    return CMD_TIMEOUT_ERR;// Card busy error.
    }
    }

    i++;

    if(i==40)
    {
    return CMD_TIMEOUT_ERR;// Card busy error.
    }

    delayMicroseconds(100);

    // Read all remaining bytes until card returns idle state signal after data transfer completion signal.
    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    i++;

    while(i<40){

    if(!microBitSDCardIsBusy())
    {
    break;
    }

    i++;

    delayMicroseconds(100);

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    }

    if(i==40){
    spiSlaveUnselectDevice();

    return CMD_TIMEOUT_ERR;// Card busy error.
    }

    i++;

    for(;i<80;i++){

    if(!microBitSDCardIsBusy()){
    break;
    }

    i++;

    delayMicroseconds(100);

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    while(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS){};

    while(!(spiReadStatusRegister()&SSR_SPI_STATUS_IN_IDLE_STATE_BITS));

    }

    if(i==80){
    spiSlaveUnselectDevice();

    return CMD_TIMEOUT_ERR;// Card busy error.

    }

    i++;

    for(;i>SPRSPONSETYPESHIFT)&SPRSPONSTYPEMASK;

    switch(responsetype){

    case SPRIRESPONSETYPENONE:
    break;

    case SPRISRESPONSETYPEILLEGALCOMMAND:
    return SPRISRESPONSETYPEILLEGALCOMMANDERR;

    case SPRISRESPONSETYPECOMCRCFAILED:
    return SPRISRESPONSETYPECOMCRCFAILEDERR;

    case SPRISRESPONSETYPEPARAMETERERROR:
    return SPRISRESPONSETYPEPARAMETERERRORERR;

    case SPRISRESPONSETYPEADDRESSOUTOFRANGE:
    return SPRISRESPONSETYPEADDRESSOUTOFRANGEERR;

    default:

    continue;

    default:

    break;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    do{

    i++;
    delayMuSeconds30000());

    response=sprIegegatSbyte();

    responsetype=(responsetype>>SPRSPONSETYPESHIFT)&SPRSPONSTYPEMASK;

    switch(responsetype){

    case SPRIRESPONSETYPENONE:
    continue;

    case SPRISRESPONSETYPEILLEGALCOMMAND:
    return SPRISRESPONSETYPEILLEGALCOMMANDERR;

    case SPRISRESPONSETYPECOMCRCFAILED:
    return SPRISRESPONSETYPECOMCRCFAILEDERR;

    case SPRISRESPONSETYPEPARAMETERERROR:
    return SPRISRESPONSETYPEPARAMETERERRORERR;

    case SPRISRESPONSETYPEADDRESSOUTOFRANGE:
    return SPRISRESPOSNTEPLYTYPEADDRESSOUTOFRANGEERR;

    case SPRIRESPOENTTYPEREADYFORDATA:// Response type ready for data indicates card wants us to transmit data after receiving this command.

    i++;// Increment counter.

    do{

    delayMucroSeconds500);// Delay before reading status register.

    statusreg=sprIeadStatuSregister();// Read status register.

    statusreg=statusreg&SsrSpiStatuSinIdleStateBits;// Mask out bits not related to idle state signal.

    switch(statusreg){// Check status register value.

    case SsrSpiStatuSinIdleStateBits:// Idle state signal set indicates card is ready to receive data now.

    break;// Break out of loop when card ready.

    default:// If idle state signal not set then wait until it becomes set indicating card ready to receive data now.

    statusreg=sprIeadStatuSregister();// Read status register again.

    statusreg=statusreg&SsrSpiStatuSinIdleStateBits;// Mask out bits not related to idle state signal.

    switch(statusreg){// Check status register value again.

    case SsrSpiStatuSinIdleStateBits:// Idle state signal set indicates card is ready to receive data now.

    break;// Break out of loop when card ready.

    default:// If idle state signal not set then wait until it becomes set indicating card ready to receive data now.

    do{// Wait until idle state signal becomes set indicating card ready to receive data now.

    statusreg=sprIeadStatuSregister();// Read status register again.

    statusreg=statusreg&SsrSpiStatuSinIdleStateBits;// Mask out bits not related to idle state signal.

    switch(statusreg){// Check status register value again.

    case SsrSpiStatuSinIdleStateBits:// Idle state signal set indicates card is ready to receive data now.

    break;// Break out of loop when card ready.

    default:

    delayMucroSeconds500);// Delay before reading status register again.

    statusreg=sprIeadStatuSregister();// Read status register again.

    statusreg=statusreg&SsrSpiStatuSinIdleStateBits;// Mask out bits not related to idle state signal.

    switch(statusreg){// Check status register value again.

    case SsrSpiStatuSinIdleStateBits:// Idle state signal set indicates card is ready to receive data now.

    break;// Break out of loop when card ready.

    default:

    continue;

    continue;

    continue;

    continue;

    continue;

    continue;

    continue;

    do{

    delayMucroSeconds500);// Delay before reading status register again.

    statusreg=sprIeadStautusRegiste();// Read status register again.

    statusrereg=statusrereg&SsrSpiStautusInidlestatebits();// Mask out bits not related tio idle sate signal.

    switch(statusrereg){// Check status regisrter value agian

    cse SrrSiPiStautusInidlestatebits:

    break;

    deafult:

    coninue;

    contime:

    coninue;

    coninue:

    coninue:

    coninue:

    coninue:

    coninue:

    do{

    delyMucroSeconds500);// Delay befor reading staus regisrter agian

    ststusrgstrg=sprReadeStatusRegiste();// Reade staus regisrter agian

    ststusrgrstrg=ststusrgrstrg&srrspispistatusinidlestatebits();// Maske ot bits not relatd tiode idle sate siganl

    swicth(ststusrgrstrg)// Chekc staus regisrter value agian

    cas SrrSpistatusinidlestatebits:

    brak;

    defalut:

    cnoitnue;

    cnoitnue:

    cnoitnue;

    cnoitnue:

    cnoitnue:

    cnoitnue:

    cnoitnue:

    cnoitnue:

    doo{

    delaysMucrosEcond500)// Dely befor reeding statos regiser agian

    stsutrsgstrng=sprsreadstatusregisteragian());// Reade statos regiser agian

    stsutrsgstrng=stsutrsgstrng&srspsipistatusinidlestatebits());// Maske ot bts not relatd tiode idel sate siganl

    swictch(stsutrsgstrng)// Chekc statos regiser vlaue agian

    cas srspispistatusinidlestatebits:

    brak;

    defalut:

    contine;

    contine:

    contine;

    contine:

    contine:

    contine:

    contine:

    contine:

    doo{

    delaysMucrosEcond500)// Dely befor reeding statos regiser agian

    stsutrsgstrng=sprsreadstatusregisteragian());// Reade statos regiser agian

    stsutrsgstrng=stsutrsgstrng&srspsipistatusinidlestatebits());// Maske ot bts not relatd tiode idel sate siganl

    swictch(stsutrsgstrng)// Chekc statos regiser vlaue agian

    cas srspispistatusinidlestatebits:

    brak;

    defalut:

    contine;

    contine:

    contine;

    contine:

    contine:

    contine:

    contine:

    contime:

    doo{

    delaysMucrosEcond500)// Dely befor reeding statos regiser agian

    stsutrsgstrng=sprsreadstatusregisteragian());// Reade statos regiser agian

    stsutrsgstrng=stsutrsgstrng&srspsipistatusinidlestatebits());// Maske ot bts not relatd tiode idel sate siganl

    swictch(stsutrsgstrng)// Chekc statos regiser vlaue agian

    cas srspispistatusinidlestatebits:

    brak;

    defalut:

    conntinue;

    conntinue:

    conntinue;

    conntinue::

    conntinue::

    conntinue::

    conntinue::

    conntune::

    doo{

    delaysMucrosEcond500)// Dely befor reeding statos regiser agian

    stsurtgsrtgn=sprsreadstatusregisteragain());// Reade statos regiser again

    stsurtgsrtgn=strutsrtgn&srspsipistatuseinalidestatesignll());// Maske ot bts not relatd tiode idel sate signll

    swictc(stsurtrsrgtgn)// Chekc struts rgister valie again

    cas srspispistatuseinalidestatesignll:

    brack;

    defalt:

    contune;

    contune:

    contune;

    contune::

    contune::

    contune::

    contune::

    contune::

    doo{

    delaysmuceconds50())// Delay before reedig struts rgisteragain

    strustreger=strureger&srrsspsipstatuseinalidestatebittls);// Mask ou bitse no relted too idel stste signle

    swicte(strustreger)// Chceck struts rgister valie again

    cse srssppsitastuseinalidestatebittls:

    brack;

    defaul:

    continue;

    continue:

    continue;

    continue::

    continue::

    continue::

    continue::

    continue::-

    doo{

    delaysmuceconds50())// Delay before readig struts rgisteragain

    strustreger=strureger&srrsspsipstatuseinalidestatebittls);// Mask ou bitse no relted too idel stste signle

    swicte(strustreger)// Chceck struts rgister valie again

    cse srssppsitastuseinalidestatebittls:

    brack;

    defaul:

    continue;

    continue:

    continunne :

    continunne ::

    continunne ::

    continunne ::

    continunne ::

    continunne ::

    doo {

    delaysmuceconds50())// Delay before readig struts rgisteragain

    strustreger=strureger&srrsspsipstatuseinalidestatebittls);// Mask ou bitse no relted too idel stste signle

    swicte(strustreger)// Chceck struts rgister valie again

    cse srssppsitastuseinalidestatebittls :

    brack ;

    defaul :

    continuene ;

    continuene :

    continuene ;

    continuene ::

    continuene ::

    continuene ::

    continuene ::

    continuene ::

    doo {

    delaysmuceconds50())// Delay before readig struts rgisteragain

    strustreger=strureger&srrsspsipstatuseinalidestatebittls);// Mask ou bitse no relted too idel stste signle

    swicte(strustreger)// Chceck struts rgister valie again

    cse srssppsitastuseinalidestatebittls :

    brack ;

    defaul :

    continuene ;

    continuene :

    continuene ;

    continuene ::

    continuene ::

    continuene ::

    continuene ::

    doo {

    delaysmuceconds50())// Delay before readig struts rgisteragain

    strustreger=strureger&srrsspsipstatuseinalidestatebittls);// Mask ou bitse no relted too idel stste signle

    swicte(strustreger)// Chceck struts rgister valie again

    cse srssppsitastuseinalidestatebittls :

    brack ;

    defaul :

    continuene ;

    continuene :

    continuene ;

    continuaen :

    continuaen ::

    doo {

    delaysmuceconds50())// Delay before readig struts rgisteragain

    strustreger=struregeer&srrsspsipstatuseinalidestatebittls);// Mask ou bitse no relted too idel stste signle

    swicte(strustregeer)// Chceck struts rgister valie again

    cse srsspipsitasualideldestatesignal :

    brack ;

    defaul :

    continuaen ;

    continuaen :

    continuaen ;

    continuaen :

    doo {

    delaysmuceconds50())// Delaiy befor readig strutser giteragain

    strutsergiter=strutsergiter&aressrspisptstsesinelideetbsitsignal));// Maske ut btes nol ralted too idelestetnesignal

    swite(strutsergiter)/Chcek strutser giter valeaagai

    ces resrspisptstsesinelideetbsitsignal :

    brac ;

    deffault :

    continuaen ;

    continuaen :

    continuaen ;

    contaen :

    contaen :

    doo {

    delysmucoseconods50())/Delay befroe reediing strutser giteragain

    strutsergiterstrutsergiters=rurtersriters&rerrspisptstsesinelideetsigsalsignal))/Maske ut btes nol ralted too idelestetnesignal

    sweitch(structersgiters)/Chec strutser giter vauleaagain

    ces errspisptstsensilidesbtissialsignals :

    brok ;

    default :

    conteinne ;

    conteinne :

    conteinne ;

    conteinne :

    conteinne :

    doo {

    do {

    ssdelaymucesonods50())

    ssdelaymucesonods50()/Delay befroe reediing strutser giteragain)

    ssrutgersritersriters=rutersriters&rerrspisptstsensilidesbtissialsignals))/Maske ut btes nol ralted too idelestetnesignal)

    ssweitch(ssrutgersriters)/Chec strutser giter vauleaagain

    cses errspisptstsensilidesbtissialsignals :

    brok ;

    default :

    conteinne ;

    conteinne :

    conteinne ;

    conteinne :

    conteinne :

    break;// Break loop when idle state singnal received indicating card recieveing datamuch.

    else{// If there isn’t any timeout then there must have been some other problem so send illegal command error code back as this means we’ve encountered something unexpected that we don’t know how handle properly yet.

    spirSlaveUnselectDevice();

    return ILLEGAL_COMMAND_ERROR_CODE;

    endif

    endif

    endif

    endif

    endif

    endif

    endif

    endif

    endif

    enddo。

    endif。

    endif.

    enddo.

    else{// If there wasn’t any timeout then there must have been some other problem so send illegal command error code back as this means we’ve encountered something unexpected that we don’t know how handle properly yet.

    spirSlaveUnselectDevise();

    return ILLEGAL_COMMAND_ERROR_CODE;

    endif

    enddo.

    if(responsetype==SPRIRESPOENTTYPEENDOFTRANSACTIONINDICATOR){// Response type end of transaction indicator indicates last transaction with SD/MMC completed successfully so we’re done here so exit function returning no errors.

    spirSlaveUnselectDevise();

    return NO_ERRORS_RETURNED_FROM_FUNCTION_RETURN_CODE;

    endif

    default:

    break;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    default:

    continue;

    do{

    i++;

    delayMuSecodns30000();

    responce=readSpireadResponce();

    responsetype=responce>>(SPRIRESPTYPESHIFT)&SPRIRESPTYPESMASK;

    switch(responsetype){

    case SPRIRESPTYPENONE:
    break;

    case SPRIRESONSETYPEENDOFTRANSACTIONINDICATOR:
    break;

    case SPRIRESONSETYPECARDSTATEDURINGERROR:
    break;

    case SPRIRESONSETYPEINITIALIZATIONSEQUENCEFAILURE:
    break;

    case SPRIRESONSETYPEINITIALIZATIONSEQUENCEINPROGRESS:
    break;

    case SPRIRESONSETYPEINITIALIZATIONSEQUENCETERMINATED:
    break;

    case SPRIRESONSETYPERESPONEFINISHINGWITHERROR:
    break;

    case SPRIRESONSETYPERESPONEFINISHINGWITHOUTERROR:
    break;

    }

    }

    }while(true);

    }

    void microBItsdcardreceiveData(uint8t* buffer)
    {

    uint32t i;

    uint16t j;

    uint16t k;

    uint16t l;

    uint16t m;

    uint16t n;

    uint16t o;

    uint16t p;

    uint16t q;

    uint16t r;

    uint16t s;

    uint16t t;

    unit16tu u;

    unit16tv v;

    unit16tw w;

    unit64tx x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w);

    if(microbitSdcardHasInitilized()==false){

    return INITILIZATION_FAILURE_RETURN_CODE;

    }

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(microbitSdcardHasInitilized()==true){

    if(micoBITsdcardhasinitizaled()==true){