www.pudn.com > M8_cc1100_receive.rar > main.s
.module main.c .area data(ram, con, rel) _PaTabel:: .blkb 2 .area idata .byte 192,192 .area data(ram, con, rel) .blkb 2 .area idata .byte 192,192 .area data(ram, con, rel) .blkb 2 .area idata .byte 192,192 .area data(ram, con, rel) .blkb 2 .area idata .byte 192,192 .area data(ram, con, rel) .dbfile E:\学习基地\IMPORT~1\CC1100-RF-Design\M8_RF_CC1100开发系统光盘\驱动程序\M8_cc1100_receive\main.c .dbsym e PaTabel _PaTabel A[8:8]c .area text(rom, con, rel) .dbfile E:\学习基地\IMPORT~1\CC1100-RF-Design\M8_RF_CC1100开发系统光盘\驱动程序\M8_cc1100_receive\main.c .dbfunc e main _main fV .even _main:: sbiw R28,1 .dbline -1 .dbline 50 ; /*C************************************************************************** ; * NAME: main.c ; *---------------------------------------------------------------------------- ; * Copyright (c) 2006 endylu ; *---------------------------------------------------------------------------- ; * RELEASE: M8-cc1100 ; * REVISION: 1.0 ; *---------------------------------------------------------------------------- ; * PURPOSE: ; * This is the demonstration software for MAGE8L ; *****************************************************************************/ ; ; /*_____ I N C L U D E S ____________________________________________________*/ ; ; #include; #include ; #include "main.h" ; ; ; /*_____ M A C R O S ________________________________________________________*/ ; ; ; /*_____ D E F I N I T I O N ________________________________________________*/ ; ; INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0}; ; INT8U arrRx[50]; ; ; INT8U length; ; INT8U flag_receive; ; /*_____ D E C L A R A T I O N ______________________________________________*/ ; ; ; /*F************************************************************************** ; * NAME: main ; *---------------------------------------------------------------------------- ; * PARAMS: ; * ; * return: ; *---------------------------------------------------------------------------- ; * PURPOSE: ; * Main user routine ; *---------------------------------------------------------------------------- ; * EXAMPLE: ; *---------------------------------------------------------------------------- ; * NOTE: ; *---------------------------------------------------------------------------- ; * REQUIREMENTS: ; *****************************************************************************/ ; void main (void) ; { .dbline 51 ; PORTD|=0X04; //GDO0上拉 sbi 0x12,2 .dbline 53 ; ; DDRB|=1< _PaTabel ldi R16,62 rcall _halSpiWriteBurstReg .dbline 60 ; PORTB&=~(1< y+1 ; i -> R20 .even _int0:: rcall push_lset rcall push_gset1 sbiw R28,3 .dbline -1 .dbline 91 ; } ; ; ; //***************************************************************************************** ; //函数名: ; //输入: ; //输出: ; //功能描述:中断接收 ; //***************************************************************************************** ; #pragma interrupt_handler int0:2 ; void int0(void) ; { .dbline 95 ; uint8 i; ; uint8 status[2]; ; ; flag_receive=RECEIVE_error; ldi R24,2 sts _flag_receive,R24 .dbline 96 ; if(halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)//如果接的字节数不为0 ldi R16,59 rcall _halSpiReadStatus mov R24,R16 andi R24,127 breq L7 .dbline 97 ; { .dbline 98 ; length = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度 ldi R16,63 rcall _halSpiReadReg sts _length,R16 .dbline 99 ; halSpiReadBurstReg(CCxxx0_RXFIFO, arrRx, length); //读出所有接收到的数据 mov R2,R16 std y+0,R2 ldi R18,<_arrRx ldi R19,>_arrRx ldi R16,63 rcall _halSpiReadBurstReg .dbline 100 ; halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); //读出CRC校验位 ldi R24,2 std y+0,R24 movw R18,R28 subi R18,255 ; offset = 1 sbci R19,255 ldi R16,63 rcall _halSpiReadBurstReg .dbline 102 ; ; if(status[1] & CRC_OK) ldd R2,y+2 sbrs R2,7 rjmp L9 .dbline 103 ; { .dbline 104 ; flag_receive=RECEIVE_OK; ldi R24,1 sts _flag_receive,R24 .dbline 106 ; ; PORTB|=1< _arrRx mov R30,R20 clr R31 add R30,R24 adc R31,R25 ldd R16,z+0 clr R17 rcall _putchar .dbline 110 L13: .dbline 107 inc R20 L15: .dbline 107 lds R2,_length cp R20,R2 brlo L12 .dbline 111 ; { ; putchar(arrRx[i]); ; } ; Delay_ms(100); ldi R16,100 ldi R17,0 rcall _Delay_ms .dbline 112 ; PORTB&=~(1< R16,R17 .even _Delay_us:: .dbline -1 .dbline 120 L17: .dbline 120 L18: .dbline 120 ; } ; ; void Delay_us(uint16 time) //set time 120 to 100us,set 1 to 3.5us; ; {while (time--); movw R2,R16 subi R16,1 sbci R17,0 tst R2 brne L17 tst R3 brne L17 X1: .dbline 121 ; _WDR(); wdr .dbline -2 L16: .dbline 0 ; func end ret .dbsym r time 16 i .dbend .dbfunc e Delay_ms _Delay_ms fV ; time -> R20,R21 .even _Delay_ms:: rcall push_gset1 movw R20,R16 .dbline -1 .dbline 124 ; } ; void Delay_ms(uint16 time) ; {while (time--) rjmp L22 L21: .dbline 125 ldi R16,1200 ldi R17,4 rcall _Delay_us L22: .dbline 124 movw R2,R20 subi R20,1 sbci R21,0 tst R2 brne L21 tst R3 brne L21 X2: .dbline -2 L20: rcall pop_gset1 .dbline 0 ; func end ret .dbsym r time 20 i .dbend .area bss(ram, con, rel) .dbfile E:\学习基地\IMPORT~1\CC1100-RF-Design\M8_RF_CC1100开发系统光盘\驱动程序\M8_cc1100_receive\main.c _flag_receive:: .blkb 1 .dbsym e flag_receive _flag_receive c _length:: .blkb 1 .dbsym e length _length c _arrRx:: .blkb 50 .dbsym e arrRx _arrRx A[50:50]c