发射.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 + -
显示快捷键?