⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 接受.lis

📁 利用MEGA8控制RF02无线芯片接收RF01发送的四路数据
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module _接受.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\915M\接受\接受.c
                        .area data(ram, con, rel)
 0000                   .dbfile F:\915M\接受\接受.c
 0000           _count1::
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002                   .dbfile F:\915M\接受\接受.c
 0002                   .dbsym e count1 _count1 i
 0002           _count2::
 0002                   .blkb 2
                        .area idata
 0002 0000              .word 0
                        .area data(ram, con, rel)
 0004                   .dbfile F:\915M\接受\接受.c
 0004                   .dbsym e count2 _count2 i
 0004           _speed::
 0004                   .blkb 2
                        .area idata
 0004 3200              .word 50
                        .area data(ram, con, rel)
 0006                   .dbfile F:\915M\接受\接受.c
 0006                   .dbsym e speed _speed i
                        .area text(rom, con, rel)
 0000                   .dbfile F:\915M\接受\接受.c
 0000                   .dbfunc e RFXX_PORT_INIT _RFXX_PORT_INIT fV
                        .even
 0000           _RFXX_PORT_INIT::
 0000                   .dbline -1
 0000                   .dbline 58
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; #include <stdio.h>
 0000           ; #define DDR_IN  0
 0000           ; #define DDR_OUT 1
 0000           ; #define PORT_SEL  PORTB
 0000           ; #define PIN_SEL   PINB
 0000           ; #define DDR_SEL   DDRB
 0000           ; 
 0000           ; #define PORT_SDI  PORTB
 0000           ; #define PIN_SDI   PINB
 0000           ; #define DDR_SDI   DDRB
 0000           ; 
 0000           ; #define PORT_SCK  PORTB
 0000           ; #define PIN_SCK   PINB
 0000           ; #define DDR_SCK   DDRB
 0000           ; 
 0000           ; #define PORT_SDO  PORTB
 0000           ; #define PIN_SDO   PINB
 0000           ; #define DDR_SDO   DDRB
 0000           ; 
 0000           ; #define PB7        7
 0000           ; #define PB6        6
 0000           ; #define RFXX_SCK   5
 0000           ; #define RFXX_SDO   4
 0000           ; #define RFXX_SDI   3
 0000           ; #define RFXX_SEL   2
 0000           ; #define RFXX_DATA  1
 0000           ; #define PB0      0
 0000           ; 
 0000           ; #define SEL_OUTPUT()   DDR_SEL|=(1<<RFXX_SEL)
 0000           ; #define HI_SEL()       PORT_SEL|=(1<<RFXX_SEL)        
 0000           ; #define LOW_SEL()      PORT_SEL&=~(1<<RFXX_SEL)
 0000           ; 
 0000           ; #define SDI_OUTPUT()   DDR_SDI|=(1<<RFXX_SDI)
 0000           ; #define HI_SDI()       PORT_SDI|=(1<<RFXX_SDI)        
 0000           ; #define LOW_SDI()      PORT_SDI&=~(1<<RFXX_SDI)
 0000           ; 
 0000           ; #define SDO_INPUT()    DDR_SDO&=~(1<<RFXX_SDO)
 0000           ; #define SDO_HI()       PIN_SDO&=(1<<RFXX_SDO) 
 0000           ; #define SCK_OUTPUT()   DDR_SCK|=(1<<RFXX_SCK)
 0000           ; #define HI_SCK()       PORT_SCK|=(1<<RFXX_SCK)
 0000           ; #define LOW_SCK()      PORT_SCK&=~(1<<RFXX_SCK)
 0000           ; 
 0000           ; #define baud 19200
 0000           ; #define fosc 8000000
 0000           ; 
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int
 0000           ; 
 0000           ; uchar RF_RXBUF[4];
 0000           ; uchar ch0,ch1,ch2,ch3; //j,k,l,m;
 0000           ; uint count1=0,count2=0,speed=50;
 0000           ; 
 0000           ; 
 0000           ; /*接受芯片端口初始化*/
 0000           ; void RFXX_PORT_INIT(void)
 0000           ; {
 0000                   .dbline 59
 0000           ;   HI_SEL();
 0000 C29A              sbi 0x18,2
 0002                   .dbline 60
 0002           ;   HI_SDI();
 0002 C39A              sbi 0x18,3
 0004                   .dbline 61
 0004           ;   LOW_SCK();
 0004 C598              cbi 0x18,5
 0006                   .dbline 62
 0006           ;   SEL_OUTPUT();
 0006 BA9A              sbi 0x17,2
 0008                   .dbline 63
 0008           ;   SDI_OUTPUT();
 0008 BB9A              sbi 0x17,3
 000A                   .dbline 64
 000A           ;   SDO_INPUT();
 000A BC98              cbi 0x17,4
 000C                   .dbline 65
 000C           ;   SCK_OUTPUT();
 000C BD9A              sbi 0x17,5
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbend
 0010                   .dbfunc e RFXX_WRT_CMD _RFXX_WRT_CMD fV
 0010           ;           temp -> R20,R21
 0010           ;              i -> R22
 0010           ;           aCmd -> R16,R17
                        .even
 0010           _RFXX_WRT_CMD::
 0010 00D0              rcall push_xgsetF000
 0012                   .dbline -1
 0012                   .dbline 70
 0012           ; }
 0012           ; 
 0012           ; //接受芯片命令写入
 0012           ; void RFXX_WRT_CMD(uint aCmd)
 0012           ; {
 0012                   .dbline 73
 0012           ;   uchar i;
 0012           ;   uint temp;
 0012           ;   LOW_SCK();
 0012 C598              cbi 0x18,5
 0014                   .dbline 74
 0014           ;   LOW_SEL();
 0014 C298              cbi 0x18,2
 0016                   .dbline 75
 0016           ;   for(i=0;i<16;i++)
 0016 6627              clr R22
 0018 12C0              rjmp L6
 001A           L3:
 001A                   .dbline 76
 001A           ;   {
 001A                   .dbline 77
 001A           ;    temp<<=1;
 001A 440F              lsl R20
 001C 551F              rol R21
 001E                   .dbline 78
 001E           ;    if(SDO_HI())
 001E 86B3              in R24,0x16
 0020 8071              andi R24,16
 0022 86BB              out 0x16,R24
 0024 8823              tst R24
 0026 09F0              breq L7
 0028           X0:
 0028                   .dbline 79
 0028           ;      { temp|=0x0001; }
 0028                   .dbline 79
 0028 4160              ori R20,1
 002A                   .dbline 79
 002A           L7:
 002A                   .dbline 80
 002A           ;    LOW_SCK();
 002A C598              cbi 0x18,5
 002C                   .dbline 82
 002C           ;    
 002C           ;    if(aCmd&0x8000)  HI_SDI();
 002C 17FF              sbrs R17,7
 002E 02C0              rjmp L9
 0030           X1:
 0030                   .dbline 82
 0030 C39A              sbi 0x18,3
 0032 01C0              rjmp L10
 0034           L9:
 0034                   .dbline 83
 0034           ;    else  LOW_SDI();
 0034 C398              cbi 0x18,3
 0036           L10:
 0036                   .dbline 85
 0036           ;    
 0036           ;    HI_SCK();
 0036 C59A              sbi 0x18,5
 0038                   .dbline 86
 0038           ;    aCmd<<=1;
 0038 000F              lsl R16
 003A 111F              rol R17
 003C                   .dbline 87
 003C           ;   }
 003C           L4:
 003C                   .dbline 75
 003C 6395              inc R22
 003E           L6:
 003E                   .dbline 75
 003E 6031              cpi R22,16
 0040 60F3              brlo L3
 0042           X2:
 0042                   .dbline 88
 0042           ;    LOW_SCK();
 0042 C598              cbi 0x18,5
 0044                   .dbline 89
 0044           ;    HI_SEL();
 0044 C29A              sbi 0x18,2
 0046                   .dbline -2
 0046           L2:
 0046                   .dbline 0 ; func end
 0046 00C0              rjmp pop_xgsetF000
 0048                   .dbsym r temp 20 i
 0048                   .dbsym r i 22 c
 0048                   .dbsym r aCmd 16 i
 0048                   .dbend
 0048                   .dbfunc e RF01_RDFIFO _RF01_RDFIFO fc
 0048           ;         Result -> R16
 0048           ;              i -> R18
                        .even
 0048           _RF01_RDFIFO::
 0048                   .dbline -1
 0048                   .dbline 95
 0048           ;    // return(temp);
 0048           ;  }
 0048           ; 
 0048           ; /*接受数据*/
 0048           ; uchar RF01_RDFIFO(void)
 0048           ; {
 0048                   .dbline 97
 0048           ;   uchar i,Result;
 0048           ;   LOW_SCK();
 0048 C598              cbi 0x18,5
 004A                   .dbline 98
 004A           ;   LOW_SDI();
 004A C398              cbi 0x18,3
 004C                   .dbline 99
 004C           ;   LOW_SEL();
 004C C298              cbi 0x18,2
 004E                   .dbline 100
 004E           ;   for(i=0;i<16;i++)
 004E 2227              clr R18
 0050 05C0              rjmp L15
 0052           L12:
 0052                   .dbline 101
 0052           ;   {
 0052                   .dbline 102
 0052           ;     HI_SCK();
 0052 C59A              sbi 0x18,5
 0054                   .dbline 103
 0054           ;     HI_SCK();
 0054 C59A              sbi 0x18,5
 0056                   .dbline 104
 0056           ;     LOW_SCK();
 0056 C598              cbi 0x18,5
 0058                   .dbline 105
 0058           ;     LOW_SCK();
 0058 C598              cbi 0x18,5
 005A                   .dbline 106
 005A           ;    }
 005A           L13:
 005A                   .dbline 100
 005A 2395              inc R18
 005C           L15:
 005C                   .dbline 100
 005C 2031              cpi R18,16
 005E C8F3              brlo L12
 0060           X3:
 0060                   .dbline 107
 0060           ;    Result=0;
 0060 0027              clr R16
 0062                   .dbline 108
 0062           ;    for(i=0;i<8;i++)
 0062 2227              clr R18
 0064 0CC0              rjmp L19
 0066           L16:
 0066                   .dbline 109
 0066           ;    {
 0066                   .dbline 110
 0066           ;      Result<<=1;
 0066 000F              lsl R16
 0068                   .dbline 111
 0068           ;      if(SDO_HI())
 0068 86B3              in R24,0x16
 006A 8071              andi R24,16
 006C 86BB              out 0x16,R24
 006E 8823              tst R24
 0070 09F0              breq L20
 0072           X4:
 0072                   .dbline 112
 0072           ;      { Result|=1; }
 0072                   .dbline 112
 0072 0160              ori R16,1
 0074                   .dbline 112
 0074           L20:
 0074                   .dbline 113
 0074           ;      HI_SCK();
 0074 C59A              sbi 0x18,5
 0076                   .dbline 114
 0076           ;      HI_SCK();
 0076 C59A              sbi 0x18,5
 0078                   .dbline 115
 0078           ;      LOW_SCK();
 0078 C598              cbi 0x18,5
 007A                   .dbline 116
 007A           ;      LOW_SCK();
 007A C598              cbi 0x18,5
 007C                   .dbline 117
 007C           ;     }
 007C           L17:
 007C                   .dbline 108
 007C 2395              inc R18
 007E           L19:
 007E                   .dbline 108
 007E 2830              cpi R18,8
 0080 90F3              brlo L16
 0082           X5:
 0082                   .dbline 118
 0082           ;     HI_SEL();
 0082 C29A              sbi 0x18,2
 0084                   .dbline 119
 0084           ;     return(Result);
 0084                   .dbline -2
 0084           L11:
 0084                   .dbline 0 ; func end
 0084 0895              ret
 0086                   .dbsym r Result 16 c
 0086                   .dbsym r i 18 c
 0086                   .dbend
 0086                   .dbfunc e Transmit _Transmit fV
 0086           ;      Send_Data -> R16
                        .even
 0086           _Transmit::
 0086                   .dbline -1
 0086                   .dbline 124
 0086           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -