发射.lis

来自「使用MEGA8控制RF01芯片,用射频915MHz发送四路AD采样的信号」· LIS 代码 · 共 911 行 · 第 1/3 页

LIS
911
字号
 00AE           L20:
 00AE                   .dbline 114
 00AE           ;    LOW_SCK();
 00AE C598              cbi 0x18,5
 00B0                   .dbline 115
 00B0           ;    if(aCmd&0x8000) HI_SDI();
 00B0 17FF              sbrs R17,7
 00B2 02C0              rjmp L22
 00B4           X4:
 00B4                   .dbline 115
 00B4 C39A              sbi 0x18,3
 00B6 01C0              rjmp L23
 00B8           L22:
 00B8                   .dbline 116
 00B8           ;    else  LOW_SDI();
 00B8 C398              cbi 0x18,3
 00BA           L23:
 00BA                   .dbline 117
 00BA           ;     HI_SCK();
 00BA C59A              sbi 0x18,5
 00BC                   .dbline 118
 00BC           ;     aCmd<<=1;
 00BC 000F              lsl R16
 00BE 111F              rol R17
 00C0                   .dbline 119
 00C0           ;   }
 00C0           L17:
 00C0                   .dbline 109
 00C0 6395              inc R22
 00C2           L19:
 00C2                   .dbline 109
 00C2 6031              cpi R22,16
 00C4 60F3              brlo L16
 00C6           X5:
 00C6                   .dbline 120
 00C6           ;    LOW_SCK();
 00C6 C598              cbi 0x18,5
 00C8                   .dbline 121
 00C8           ;    HI_SEL();
 00C8 C29A              sbi 0x18,2
 00CA                   .dbline -2
 00CA           L15:
 00CA                   .dbline 0 ; func end
 00CA 00C0              rjmp pop_xgsetF000
 00CC                   .dbsym r temp 20 i
 00CC                   .dbsym r i 22 c
 00CC                   .dbsym r aCmd 16 i
 00CC                   .dbend
 00CC                   .dbfunc e RF02_SEND _RF02_SEND fV
 00CC           ;              i -> R20
 00CC           ;          aByte -> R16
                        .even
 00CC           _RF02_SEND::
 00CC 4A93              st -y,R20
 00CE                   .dbline -1
 00CE                   .dbline 126
 00CE           ;  }
 00CE           ;   
 00CE           ; /*发射数据*/
 00CE           ; void RF02_SEND(uchar aByte)
 00CE           ; { 
 00CE                   .dbline 128
 00CE           ;   uchar i;
 00CE           ;   for(i=0;i<8;i++)
 00CE 4427              clr R20
 00D0 0BC0              rjmp L28
 00D2           L29:
 00D2                   .dbline 130
 00D2           ;   {
 00D2           ;     while(PINB&(1<<RFXX_SDO));
 00D2           L30:
 00D2                   .dbline 130
 00D2 B499              sbic 0x16,4
 00D4 FECF              rjmp L29
 00D6           X6:
 00D6           L32:
 00D6                   .dbline 131
 00D6           ;     while(!(PINB&(1<<RFXX_SDO)));
 00D6           L33:
 00D6                   .dbline 131
 00D6 B49B              sbis 0x16,4
 00D8 FECF              rjmp L32
 00DA           X7:
 00DA                   .dbline 132
 00DA           ;     if(aByte&0x80) PORTB|=(1<<RFXX_DATA);
 00DA 07FF              sbrs R16,7
 00DC 02C0              rjmp L35
 00DE           X8:
 00DE                   .dbline 132
 00DE C19A              sbi 0x18,1
 00E0 01C0              rjmp L36
 00E2           L35:
 00E2                   .dbline 133
 00E2           ;     else  PORTB&=~(1<<RFXX_DATA);
 00E2 C198              cbi 0x18,1
 00E4           L36:
 00E4                   .dbline 134
 00E4           ;     aByte<<=1;
 00E4 000F              lsl R16
 00E6                   .dbline 135
 00E6           ;   }
 00E6           L26:
 00E6                   .dbline 128
 00E6 4395              inc R20
 00E8           L28:
 00E8                   .dbline 128
 00E8 4830              cpi R20,8
 00EA 98F3              brlo L30
 00EC           X9:
 00EC                   .dbline -2
 00EC           L24:
 00EC                   .dbline 0 ; func end
 00EC 4991              ld R20,y+
 00EE 0895              ret
 00F0                   .dbsym r i 20 c
 00F0                   .dbsym r aByte 16 c
 00F0                   .dbend
 00F0                   .dbfunc e Transmit _Transmit fV
 00F0           ;      Send_Data -> R16
                        .even
 00F0           _Transmit::
 00F0                   .dbline -1
 00F0                   .dbline 140
 00F0           ; }
 00F0           ; 
 00F0           ; /*字符输出函数*/
 00F0           ; void Transmit(uchar Send_Data)
 00F0           ; {
 00F0           L38:
 00F0                   .dbline 141
 00F0           ;   while (!(UCSRA & (1<<UDRE)));//判断是否发送完成
 00F0           L39:
 00F0                   .dbline 141
 00F0 5D9B              sbis 0xb,5
 00F2 FECF              rjmp L38
 00F4           X10:
 00F4                   .dbline 142
 00F4           ;     UDR=Send_Data;//发送数据
 00F4 0CB9              out 0xc,R16
 00F6                   .dbline -2
 00F6           L37:
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r Send_Data 16 c
 00F8                   .dbend
 00F8                   .dbfunc e TIM0_init _TIM0_init fV
                        .even
 00F8           _TIM0_init::
 00F8                   .dbline -1
 00F8                   .dbline 147
 00F8           ; }
 00F8           ; 
 00F8           ; /*T0初始化*/
 00F8           ; void TIM0_init(void)
 00F8           ; {
 00F8                   .dbline 148
 00F8           ;  _CLI();//关全局中断
 00F8 F894              cli
 00FA                   .dbline 149
 00FA           ;  TCCR0=0x00;
 00FA 2224              clr R2
 00FC 23BE              out 0x33,R2
 00FE                   .dbline 150
 00FE           ;  TCNT0=0xE0; //4us定时
 00FE 80EE              ldi R24,224
 0100 82BF              out 0x32,R24
 0102                   .dbline 151
 0102           ;  TCCR0|=0x01;//开定时器,无预分频
 0102 83B7              in R24,0x33
 0104 8160              ori R24,1
 0106 83BF              out 0x33,R24
 0108                   .dbline 152
 0108           ;  TIMSK|=0x01;//T0中断
 0108 89B7              in R24,0x39
 010A 8160              ori R24,1
 010C 89BF              out 0x39,R24
 010E                   .dbline 153
 010E           ;  SREG|=0x80;//开全局中断
 010E 7894              bset 7
 0110                   .dbline -2
 0110           L41:
 0110                   .dbline 0 ; func end
 0110 0895              ret
 0112                   .dbend
 0112                   .dbfunc e TIM0_ovf _TIM0_ovf fV
                        .even
 0112           _TIM0_ovf::
 0112 0A92              st -y,R0
 0114 1A92              st -y,R1
 0116 2A92              st -y,R2
 0118 3A92              st -y,R3
 011A 4A92              st -y,R4
 011C 5A92              st -y,R5
 011E 6A92              st -y,R6
 0120 7A92              st -y,R7
 0122 8A92              st -y,R8
 0124 9A92              st -y,R9
 0126 0A93              st -y,R16
 0128 1A93              st -y,R17
 012A 2A93              st -y,R18
 012C 3A93              st -y,R19
 012E 8A93              st -y,R24
 0130 9A93              st -y,R25
 0132 AA93              st -y,R26
 0134 BA93              st -y,R27
 0136 EA93              st -y,R30
 0138 FA93              st -y,R31
 013A 0FB6              in R0,0x3f
 013C 0A92              st -y,R0
 013E                   .dbline -1
 013E                   .dbline 158
 013E           ; }
 013E           ; 
 013E           ; /*T020ms中断程序*/
 013E           ; void TIM0_ovf(void)
 013E           ; {
 013E                   .dbline 159
 013E           ;  TCCR0=0x00;//关定时器
 013E 2224              clr R2
 0140 23BE              out 0x33,R2
 0142                   .dbline 160
 0142           ;  TCNT0=0xE0;
 0142 80EE              ldi R24,224
 0144 82BF              out 0x32,R24
 0146                   .dbline 161
 0146           ;  if(++n==5000)
 0146 80910000          lds R24,_n
 014A 90910100          lds R25,_n+1
 014E 0196              adiw R24,1
 0150 1C01              movw R2,R24
 0152 30920100          sts _n+1,R3
 0156 20920000          sts _n,R2
 015A 8838              cpi R24,136
 015C E3E1              ldi R30,19
 015E 9E07              cpc R25,R30
 0160 09F0              breq X12
 0162 31C0              rjmp L43
 0164           X12:
 0164           X11:
 0164                   .dbline 162
 0164           ;    {
 0164                   .dbline 163
 0164           ;     n=0;
 0164 2224              clr R2
 0166 3324              clr R3
 0168 30920100          sts _n+1,R3
 016C 20920000          sts _n,R2
 0170                   .dbline 164
 0170           ;     RFXX_WRT_CMD(0xC039);//启动发射
 0170 09E3              ldi R16,49209
 0172 10EC              ldi R17,192
 0174 8FDF              rcall _RFXX_WRT_CMD
 0176                   .dbline 166
 0176           ;     
 0176           ;     RF02_SEND(0xAA);//PREAMBLE
 0176 0AEA              ldi R16,170
 0178 A9DF              rcall _RF02_SEND
 017A                   .dbline 167
 017A           ;     RF02_SEND(0xAA);//PREAMBLE
 017A 0AEA              ldi R16,170
 017C A7DF              rcall _RF02_SEND
 017E                   .dbline 168
 017E           ;     RF02_SEND(0xAA);//PREAMBLE
 017E 0AEA              ldi R16,170
 0180 A5DF              rcall _RF02_SEND
 0182                   .dbline 169
 0182           ;     RF02_SEND(0x2D);//SYNC HI BYTE
 0182 0DE2              ldi R16,45
 0184 A3DF              rcall _RF02_SEND
 0186                   .dbline 170
 0186           ;     RF02_SEND(0xD4);//SYNC LOW BYTE
 0186 04ED              ldi R16,212
 0188 A1DF              rcall _RF02_SEND
 018A                   .dbline 172
 018A           ;       
 018A           ;     RF02_SEND(ch0);//DATA BYTE 0
 018A 00910400          lds R16,_ch0
 018E 9EDF              rcall _RF02_SEND
 0190                   .dbline 173
 0190           ;     RF02_SEND(ch1);//DATA BYTE 1
 0190 00910300          lds R16,_ch1
 0194 9BDF              rcall _RF02_SEND
 0196                   .dbline 174
 0196           ;     RF02_SEND(ch2);//DATA BYTE 2
 0196 00910200          lds R16,_ch2
 019A 98DF              rcall _RF02_SEND
 019C                   .dbline 175
 019C           ;     RF02_SEND(ch3);//DATA BYTE 3
 019C 00910100          lds R16,_ch3
 01A0 95DF              rcall _RF02_SEND
 01A2                   .dbline 177
 01A2           ;     
 01A2           ;     RF02_SEND(0xAA);//Dummpy byte
 01A2 0AEA              ldi R16,170
 01A4 93DF              rcall _RF02_SEND
 01A6                   .dbline 179
 01A6           ;     
 01A6           ;     RFXX_WRT_CMD(0xC001);
 01A6 01E0              ldi R16,49153
 01A8 10EC              ldi R17,192
 01AA 74DF              rcall _RFXX_WRT_CMD
 01AC                   .dbline 181
 01AC           ;       
 01AC           ;       Transmit(ch0);

⌨️ 快捷键说明

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