📄 接受.lis
字号:
0086 ;
0086 ; /*字符输出函数*/
0086 ; void Transmit(uchar Send_Data)
0086 ; {
0086 L23:
0086 .dbline 125
0086 ; while (!(UCSRA & (1<<UDRE)));//判断是否发送完成
0086 L24:
0086 .dbline 125
0086 5D9B sbis 0xb,5
0088 FECF rjmp L23
008A X6:
008A .dbline 126
008A ; UDR=Send_Data;//发送数据
008A 0CB9 out 0xc,R16
008C .dbline -2
008C L22:
008C .dbline 0 ; func end
008C 0895 ret
008E .dbsym r Send_Data 16 c
008E .dbend
008E .dbfunc e uart_init _uart_init fV
.even
008E _uart_init::
008E .dbline -1
008E .dbline 131
008E ; }
008E ;
008E ; /*USART初始化*/
008E ; void uart_init(void)
008E ; {
008E .dbline 132
008E ; UCSRA=0x00;
008E 2224 clr R2
0090 2BB8 out 0xb,R2
0092 .dbline 133
0092 ; UCSRB=(1<<RXEN)|(1<<TXEN);//允许发送和接收
0092 88E1 ldi R24,24
0094 8AB9 out 0xa,R24
0096 .dbline 134
0096 ; UCSRC=(1<<URSEL)|0x06;//8bit,1stop
0096 86E8 ldi R24,134
0098 80BD out 0x20,R24
009A .dbline 135
009A ; UBRRL=(fosc/baud/16-1)%256;//设置波特率寄存器低位字节
009A 89E1 ldi R24,25
009C 89B9 out 0x9,R24
009E .dbline 136
009E ; UBRRH=(fosc/baud/16-1)/256;//设置波特率寄存器高位字节
009E 20BC out 0x20,R2
00A0 .dbline -2
00A0 L26:
00A0 .dbline 0 ; func end
00A0 0895 ret
00A2 .dbend
00A2 .dbfunc e init_main _init_main fV
.even
00A2 _init_main::
00A2 .dbline -1
00A2 .dbline 141
00A2 ; }
00A2 ;
00A2 ; /*系统初始化*/
00A2 ; void init_main(void)
00A2 ; {
00A2 .dbline 142
00A2 ; uart_init();
00A2 F5DF rcall _uart_init
00A4 .dbline 143
00A4 ; DDRC|=0x30; //PORTC4,PORTC5输出高电平
00A4 84B3 in R24,0x14
00A6 8063 ori R24,48
00A8 84BB out 0x14,R24
00AA .dbline 144
00AA ; PORTC|=0x30;
00AA 85B3 in R24,0x15
00AC 8063 ori R24,48
00AE 85BB out 0x15,R24
00B0 .dbline 145
00B0 ; DDRB|=0x03; //PORTB0,PORTB1输出高电平
00B0 87B3 in R24,0x17
00B2 8360 ori R24,3
00B4 87BB out 0x17,R24
00B6 .dbline 146
00B6 ; PORTB|=0x03;
00B6 88B3 in R24,0x18
00B8 8360 ori R24,3
00BA 88BB out 0x18,R24
00BC .dbline 147
00BC ; DDRD|=0xE0; //d
00BC 81B3 in R24,0x11
00BE 806E ori R24,224
00C0 81BB out 0x11,R24
00C2 .dbline 148
00C2 ; RFXX_PORT_INIT();
00C2 9EDF rcall _RFXX_PORT_INIT
00C4 .dbline 150
00C4 ;
00C4 ; RFXX_WRT_CMD(0x0000);
00C4 0027 clr R16
00C6 1127 clr R17
00C8 A3DF rcall _RFXX_WRT_CMD
00CA .dbline 151
00CA ; RFXX_WRT_CMD(0x998A); //915BAND,134KHZ,998A
00CA 0AE8 ldi R16,39306
00CC 19E9 ldi R17,153
00CE A0DF rcall _RFXX_WRT_CMD
00D0 .dbline 152
00D0 ; RFXX_WRT_CMD(0xA7D0); //915MHZ
00D0 00ED ldi R16,42960
00D2 17EA ldi R17,167
00D4 9DDF rcall _RFXX_WRT_CMD
00D6 .dbline 153
00D6 ; RFXX_WRT_CMD(0xC847); //4.8kbps,47
00D6 07E4 ldi R16,51271
00D8 18EC ldi R17,200
00DA 9ADF rcall _RFXX_WRT_CMD
00DC .dbline 154
00DC ; RFXX_WRT_CMD(0xC69B); //AFC setting
00DC 0BE9 ldi R16,50843
00DE 16EC ldi R17,198
00E0 97DF rcall _RFXX_WRT_CMD
00E2 .dbline 155
00E2 ; RFXX_WRT_CMD(0xC42C); //Clowck recovery manuel control,Digital filter,DQD=4
00E2 0CE2 ldi R16,50220
00E4 14EC ldi R17,196
00E6 94DF rcall _RFXX_WRT_CMD
00E8 .dbline 156
00E8 ; RFXX_WRT_CMD(0xC240); //output 1.66MHz
00E8 00E4 ldi R16,49728
00EA 12EC ldi R17,194
00EC 91DF rcall _RFXX_WRT_CMD
00EE .dbline 157
00EE ; RFXX_WRT_CMD(0xC080);
00EE 00E8 ldi R16,49280
00F0 10EC ldi R17,192
00F2 8EDF rcall _RFXX_WRT_CMD
00F4 .dbline 158
00F4 ; RFXX_WRT_CMD(0xCE88); //
00F4 08E8 ldi R16,52872
00F6 1EEC ldi R17,206
00F8 8BDF rcall _RFXX_WRT_CMD
00FA .dbline 159
00FA ; RFXX_WRT_CMD(0xCE8B); //use FIFO
00FA 0BE8 ldi R16,52875
00FC 1EEC ldi R17,206
00FE 88DF rcall _RFXX_WRT_CMD
0100 .dbline 160
0100 ; RFXX_WRT_CMD(0xC081); //open RX
0100 01E8 ldi R16,49281
0102 10EC ldi R17,192
0104 85DF rcall _RFXX_WRT_CMD
0106 .dbline 162
0106 ;
0106 ; DDRB|=(1<<RFXX_DATA);
0106 B99A sbi 0x17,1
0108 .dbline 163
0108 ; DDRD&=~(1<<2);
0108 8A98 cbi 0x11,2
010A .dbline 165
010A ;
010A ; MCUCR=0x00;
010A 2224 clr R2
010C 25BE out 0x35,R2
010E .dbline 166
010E ; GICR=0x00;
010E 2BBE out 0x3b,R2
0110 .dbline -2
0110 L27:
0110 .dbline 0 ; func end
0110 0895 ret
0112 .dbend
0112 .dbfunc e Delay_ms _Delay_ms fV
0112 ; i -> R10
0112 ; p -> R20
0112 ; amS -> R16
.even
0112 _Delay_ms::
0112 AA92 st -y,R10
0114 4A93 st -y,R20
0116 .dbline -1
0116 .dbline 171
0116 ; }
0116 ;
0116 ; /*延时*/
0116 ; void Delay_ms(uchar amS)
0116 ; {
0116 .dbline 173
0116 ; uchar i,p;
0116 ; for(i=0;i<amS;i++)
0116 AA24 clr R10
0118 06C0 rjmp L32
011A L29:
011A .dbline 174
011A ; for(p=0;p<200;p++)
011A 4427 clr R20
011C 01C0 rjmp L36
011E L33:
011E .dbline 175
011E ; ;
011E L34:
011E .dbline 174
011E 4395 inc R20
0120 L36:
0120 .dbline 174
0120 483C cpi R20,200
0122 E8F3 brlo L33
0124 X7:
0124 L30:
0124 .dbline 173
0124 A394 inc R10
0126 L32:
0126 .dbline 173
0126 A016 cp R10,R16
0128 C0F3 brlo L29
012A X8:
012A .dbline -2
012A L28:
012A .dbline 0 ; func end
012A 4991 ld R20,y+
012C A990 ld R10,y+
012E 0895 ret
0130 .dbsym r i 10 c
0130 .dbsym r p 20 c
0130 .dbsym r amS 16 c
0130 .dbend
0130 .dbfunc e main _main fV
0130 ; counter -> R10,R11
0130 ; temp -> R10,R11
0130 ; i -> R20,R21
0130 ; p -> R22,R23
0130 ; q -> R10,R11
.even
0130 _main::
0130 .dbline -1
0130 .dbline 180
0130 ; }
0130 ;
0130 ; /*主程序*/
0130 ; void main(void)
0130 ; {
0130 .dbline 181
0130 ; uint i,p,q,counter=0,temp;
0130 AA24 clr R10
0132 BB24 clr R11
0134 .dbline 183
0134 ;
0134 ; for(p=0;p<10000;p++)
0134 6627 clr R22
0136 7727 clr R23
0138 0DC0 rjmp L41
013A L38:
013A .dbline 184
013A ; for(q=0;q<123;q++)
013A AA24 clr R10
013C BB24 clr R11
013E 03C0 rjmp L45
0140 L42:
0140 .dbline 185
0140 ; ;
0140 L43:
0140 .dbline 184
0140 C501 movw R24,R10
0142 0196 adiw R24,1
0144 5C01 movw R10,R24
0146 L45:
0146 .dbline 184
0146 C501 movw R24,R10
0148 8B37 cpi R24,123
014A E0E0 ldi R30,0
014C 9E07 cpc R25,R30
014E C0F3 brlo L42
0150 X9:
0150 L39:
0150 .dbline 183
0150 6F5F subi R22,255 ; offset = 1
0152 7F4F sbci R23,255
0154 L41:
0154 .dbline 183
0154 6031 cpi R22,16
0156 E7E2 ldi R30,39
0158 7E07 cpc R23,R30
015A 78F3 brlo L38
015C X10:
015C .dbline 187
015C ;
015C ; init_main();
015C A2DF rcall _init_main
015E .dbline 189
015E ;
015E ; i=0;
015E 4427 clr R20
0160 5527 clr R21
0162 D1C0 rjmp L47
0164 L49:
0164 .dbline 193
0164 ; while(1)
0164 ; {
0164 ; while(!(PIND&(1<<2)))
0164 ; RF_RXBUF[i++]=RF01_RDFIFO();//read FIFO data
0164 1A01 movw R2,R20
0166 4F5F subi R20,255 ; offset = 1
0168 5F4F sbci R21,255
016A 2F92 push R2
016C 3F92 push R3
016E 6CDF rcall _RF01_RDFIFO
0170 3F90 pop R3
0172 2F90 pop R2
0174 80E0 ldi R24,<_RF_RXBUF
0176 90E0 ldi R25,>_RF_RXBUF
0178 F101 movw R30,R2
017A E80F add R30,R24
017C F91F adc R31,R25
017E 0083 std z+0,R16
0180 L50:
0180 .dbline 192
0180 829B sbis 0x10,2
0182 F0CF rjmp L49
0184 X11:
0184 .dbline 194
0184 ; if(i==5) //更新数据
0184 4530 cpi R20,5
0186 E0E0 ldi R30,0
0188 5E07 cpc R21,R30
018A 09F0 breq X24
018C 38C0 rjmp L52
018E X24:
018E X12:
018E .dbline 195
018E ; {
018E .dbline 196
018E ; i=0;
018E 4427 clr R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -