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

📄 接受.lis

📁 利用MEGA8控制RF02无线芯片接收RF01发送的四路数据
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -