在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        S3C2440IIC中斷方式

        作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
        1. #include
        2. #include"2440addr.h"
        3. #include"2440lib.h"
        4. #include"Option.h"
        5. #include"def.h"
        6. intflag;//中斷標(biāo)志(在中斷子程序里清零,即未中斷flag=1,中斷后flag=0)
        7. void__irqIicInt(void);
        8. voidWr24C02(U32slvAddr,U32addr,U8data);
        9. voidRd24C02(U32slvAddr,U32addr,U8*data);
        10. voidMain(void)
        11. {
        12. unsignedinti,j;
        13. staticU8data[256];//用于存儲(chǔ)AT24C02讀出的數(shù)據(jù)
        14. SelectFclk(2);//設(shè)置系統(tǒng)時(shí)鐘400M
        15. ChangeClockDivider(2,1);//設(shè)置分頻1:4:8
        16. CalcBusClk();//計(jì)算總線頻率
        17. rGPHCON&=~((3<<4)|(3<<6));
        18. rGPHCON|=(2<<4)|(2<<6);//GPH2--TXD[0];GPH3--RXD[0]
        19. rGPHUP=0x00;//使能上拉功能
        20. Uart_Init(0,115200);
        21. Uart_Select(0);
        22. Uart_Printf("[IICTest(Polling)usingAT24C020]n");
        23. rGPEUP|=0xc000;//關(guān)上拉
        24. rGPECON&=~0xf0000000;
        25. rGPECON|=0xa0000000;//GPE15:IICSDA,GPE14:IICSCL
        26. pISR_IIC=(unsigned)IicInt;//設(shè)置中斷程序地址
        27. rINTMSK&=~(BIT_IIC);//開中斷源
        28. //使能應(yīng)答,IIC總線時(shí)鐘IICCLK=PCLK/16,使能中斷,發(fā)送時(shí)鐘IICCLK/16
        29. rIICCON=(1<<7)|(0<<6)|(1<<5)|(0xf);
        30. rIICADD=0x10;//2440從機(jī)地址=[7:1]
        31. rIICSTAT=0x10;//IIC總線數(shù)據(jù)輸出使能(Rx/Tx)
        32. Uart_Printf("WritetestdataintoAT24C02n");
        33. for(i=0;i<256;i++)
        34. Wr24C02(0xa0,(U8)i,i);//寫入數(shù)據(jù)到AT24C02
        35. for(i=0;i<256;i++)//數(shù)組數(shù)據(jù)清零
        36. data[i]=0;
        37. Uart_Printf("ReadtestdatafromAT24C02n");
        38. for(i=0;i<256;i++)
        39. Rd24C02(0xa0,(U8)i,&(data[i]));//讀取AT24C02的數(shù)據(jù)放入data數(shù)組中
        40. for(i=0;i<16;i++)
        41. {
        42. for(j=0;j<16;j++)
        43. Uart_Printf("%2x",data[i*16+j]);//打印從AT24C02讀出的數(shù)據(jù)
        44. Uart_Printf("n");
        45. }
        46. }
        47. voidWr24C02(U32slvAddr,U32addr,U8data)
        48. {
        49. flag=1;
        50. rIICDS=slvAddr;//從器件地址寫入數(shù)據(jù)移位寄存器
        51. rIICSTAT=0xf0;//主發(fā)模式,產(chǎn)生起始信號(hào),使能Rx/Tx
        52. rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志
        53. while(flag==1)//等待發(fā)送完成
        54. Delay(1);
        55. flag=1;
        56. rIICDS=addr;//寫入存儲(chǔ)字節(jié)的地址到數(shù)據(jù)移位寄存器
        57. rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志
        58. while(flag==1)//等待發(fā)送完成
        59. Delay(1);
        60. flag=1;
        61. rIICDS=data;//把要發(fā)送的數(shù)據(jù)寫入數(shù)據(jù)移位寄存器
        62. rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志
        63. while(flag==1)//等待發(fā)送完成
        64. Delay(1);
        65. rIICSTAT=0xd0;//禁止Rx/Tx
        66. rIICCON=0xaf;//ResumesIICoperation.
        67. Delay(1);
        68. }
        69. voidRd24C02(U32slvAddr,U32addr,U8*data)
        70. {
        71. U8temp;
        72. flag=1;
        73. rIICDS=slvAddr;//從器件地址寫入數(shù)據(jù)移位寄存器
        74. rIICSTAT=0xf0;//主發(fā)模式,產(chǎn)生起始信號(hào),使能Rx/Tx
        75. rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志
        76. while(flag==1)//等待發(fā)送完成
        77. Delay(1);
        78. flag=1;
        79. rIICDS=addr;//寫入存儲(chǔ)字節(jié)的地址到數(shù)據(jù)移位寄存器
        80. rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志
        81. while(flag==1)//等待發(fā)送完成
        82. Delay(1);
        83. flag=1;
        84. rIICDS=slvAddr;
        85. rIICSTAT=0xb0;//主接收模式,使能Rx/Tx
        86. rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志
        87. while(flag==1)//等待發(fā)送完成
        88. Delay(1);
        89. //注意:讀取下面這個(gè)字節(jié)必須進(jìn)行,因?yàn)樵诎l(fā)送帶有讀命令的從設(shè)備地址后,
        90. //AT24C02A會(huì)再返回一個(gè)從設(shè)備地址信息或從設(shè)備內(nèi)存地址信息作為應(yīng)答,所以
        91. //一定要把該字節(jié)讀取后拋棄,因?yàn)樗皇俏覀兯x取的信息;
        92. flag=1;
        93. temp=rIICDS;
        94. rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志
        95. while(flag==1)
        96. Delay(1);
        97. rIICCON=0x2f;//ResumesIICoperation.禁止應(yīng)答
        98. *data=rIICDS;
        99. Delay(1);
        100. rIICSTAT=0x90;//StopMasRxcondition
        101. rIICCON=0xaf;//ResumesIICoperation.
        102. Delay(1);//Waituntilstopcondtionisineffect.
        103. }
        104. void__irqIicInt(void)
        105. {
        106. ClearPending(BIT_IIC);
        107. flag=0;
        108. }


        關(guān)鍵詞: S3C2440IIC中斷方

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        ×

        “芯”朋友见面大会
        珠海|11.14|泰克“芯”朋友见面大会珠海站|泰克带您从测试角度看半导体的整条产业链,快来报名抢位吧>>