新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > NRF9E51讀IC卡卡號,并把讀取到的數據傳送出去

        NRF9E51讀IC卡卡號,并把讀取到的數據傳送出去

        作者: 時間:2016-11-30 來源:網絡 收藏
        /*void rst_wdog()
        { if((REGX_CTRL&0x10)!=0x10)
        { REGX_MSB=0x75;
        REGX_LSB=0x30;
        // REGX_CTRL=0x08;
        }
        }*/
        unsigned char SpiReadWrite(unsigned char b)
        {
        EXIF &= ~0x20; // Clear SPI interrupt
        SPI_DATA = b; // Move byte to send to SPI data register
        while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting
        ;
        return SPI_DATA;
        }
        void TransmitPacket()
        {
        unsigned char i;
        CE = 1;
        Delay100us(0);
        // All packets start with the receiver address:
        for(i=0;i
        SpiReadWrite(tconf.buf[ADDR_INDEX+i]);
        SpiReadWrite(array[0]);
        SpiReadWrite(array[1]);
        SpiReadWrite(array[2]);
        CE = 0;
        Delay100us(3); // Wait ~300us
        }
        ///led000000000000000000000000000000000000
        /*定時器0和定時器1的定時間是10ms*/
        void InitTimer(void)
        {
        TR0 = 0;
        TMOD &= ~0x33;
        TMOD |= 0x11; // mode 1
        CKCON |= 0x98; // T0M = 1 (/4 timer clock)
        t0lrel = 0xC0; // 1KHz tick...
        t0hrel = 0x63; // ... = 65536-16e6/(4*1e3) = F060h
        TF0 = 0; // Clear any pending Timer0 interrupts
        ET0 = 1; // Enable Timer0 interrupt
        TR1=0;
        t1lrel=0xC0;
        t1hrel=0x63;
        TF1 = 0; // Clear any pending Timer0 interrupts
        ET1 = 1;
        T2CON=0x00;
        RCAP2H=0xFE;
        RCAP2L=0x70;
        ET2=1;
        }
        void Timer0ISR (void) interrupt 1
        {
        TF0 = 0; // Clear Timer0 interrupt
        TH0 = t0hrel; // Reload Timer0 high byte
        TL0 = t0lrel; // Reload Timer0 low byte
        count0++;
        if (count0==300)
        {
        LED=0; // Led off
        TR0 = 0; // Stop timer
        }
        }
        void Timer1ISR(void) interrupt 3
        {
        TF1 = 0; // Clear Timer1 interrupt
        TH1 = t1hrel; // Reload Timer1 high byte
        TL1 = t1lrel; // Reload Timer1 low byte
        count++;
        if (count == 120)
        {
        count=0;
        over_flag=1;
        TR1=0;
        }
        }
        void Timer2ISR (void) interrupt 5 using 2
        {
        TF2 = 0;
        count1++;
        if (count1==1)
        {
        data0=1;
        data1=1;
        }
        else if(count1==11)
        { count1=0;
        over1_flag=1;
        TR2=0;
        }
        }
        void Receiver(void)
        {
        unsigned char b;
        CS = 1;
        Delay100us(0);
        for(b=0;b {
        SpiReadWrite(rconf.buf[b]);
        }
        CS = 0;
        for(;;)
        {
        CE = 1;
        while(DR1 == 0)
        { //rst_wdog();
        nop();
        }
        a[0]=SpiReadWrite(0);
        a[1]=SpiReadWrite(1);
        a[2]= SpiReadWrite(2);
        CE = 0;
        LED=1;
        count0=0;
        TR0 = 1;
        if(fsen==0)
        {
        fs();
        }
        //rst_wdog();
        }
        }
        void Transmitter(void)
        {
        unsigned char b;
        CS = 1;
        Delay100us(0);
        for(b=0;b {
        SpiReadWrite(tconf.buf[b]);
        }
        CS = 0;
        for(;;)
        { //rst_wdog();
        TransmitPacket(); // Transmit data
        over_flag=0;
        TR1=1;
        LED=1;
        while(!over_flag)
        { nop();
        }
        }
        }
        void Init(void)
        { uchar i;
        uchar j;
        P0_DIR=0x00;
        P0=0xfb;
        P1=0xff;
        SPICLK=1;
        SPI_CTRL=0x02; //連接到RADIO上
        PWR_UP = 1; // Turn on Radio on 24E1
        Delay100us(30); // Wait > 3ms
        InitTimer();
        EA = 1;
        for(j=0;j<2;j++)
        { LED=1;
        for(i=0;i<10;i++)
        { Delay100us(250);
        Delay100us(250);
        }
        LED=0;
        for(i=0;i<10;i++)
        { Delay100us(250);
        Delay100us(250);
        }
        }
        }
        void main(void)
        {
        Init();
        /*f((REGX_CTRL&0x10)!=0x10)
        {
        REGX_MSB=0x75;
        REGX_LSB=0x30;
        REGX_CTRL=0x08;
        } */
        //Receiver();
        Transmitter();
        }
        上一頁 1 2 下一頁

        關鍵詞: NRF9E51IC卡卡

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 普安县| 遵义市| 富蕴县| 东安县| 高陵县| 博白县| 永顺县| 民勤县| 台安县| 射阳县| 监利县| 防城港市| 丘北县| 涿鹿县| 鸡泽县| 宁晋县| 怀柔区| 明星| 渭源县| 额尔古纳市| 当涂县| 密云县| 桃源县| 兰考县| 米泉市| 开封市| 杭锦旗| 黔西县| 红桥区| 濮阳市| 静乐县| 邓州市| 腾冲县| 三河市| 平和县| 夏邑县| 石首市| 光山县| 华安县| 顺昌县| 池州市|