📄 m8sp01.lis
字号:
005E 4617 cp R20,R22
0060 5707 cpc R21,R23
0062 D0F3 brlo L12
0064 .dbline -2
0064 L11:
0064 00D0 rcall pop_gset2
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r i 20 i
0068 .dbsym r n 22 i
0068 .dbend
0068 .dbfunc e port_init _port_init fV
.even
0068 _port_init::
0068 .dbline -1
0068 .dbline 106
0068 ; {
0068 ; Delay_1ms();
0068 ; i++;
0068 ; }
0068 ; }
0068 ;
0068 ;
0068 ; void port_init(void)
0068 ; {
0068 .dbline 109
0068 ;
0068 ;
0068 ; PORTB=0xFF; //PB set to 1
0068 8FEF ldi R24,255
006A 88BB out 0x18,R24
006C .dbline 110
006C ; DDRB=0xFF;
006C 87BB out 0x17,R24
006E .dbline 112
006E ;
006E ; PORTC=0xFF; //PC set to 1
006E 85BB out 0x15,R24
0070 .dbline 113
0070 ; DDRC=0x00; //
0070 2224 clr R2
0072 24BA out 0x14,R2
0074 .dbline 115
0074 ;
0074 ; PORTD=0xFF; //PD set to 1
0074 82BB out 0x12,R24
0076 .dbline 116
0076 ; DDRD=0x12; //PD0:RXD PD1:TXD PD2:DI0 PD3:DI1
0076 82E1 ldi R24,18
0078 81BB out 0x11,R24
007A .dbline 120
007A ; //PD4:DI2 PD5:DI3
007A ; //OUTDEON;
007A ;
007A ; SFIOR&=~(1<<PUD); //OPEN UP LINK
007A 80B7 in R24,0x30
007C 8B7F andi R24,251
007E 80BF out 0x30,R24
0080 .dbline 124
0080 ; //MCUCR|=(1<<ISC11); //Down edge int1
0080 ; //GICR=(1<<INT1); //enable INT1
0080 ;
0080 ; delayXms(10); //delay 1s
0080 0AE0 ldi R16,10
0082 10E0 ldi R17,0
0084 E4DF rcall _delayXms
0086 .dbline -2
0086 L15:
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbend
0088 .dbfunc e uart_init _uart_init fV
.even
0088 _uart_init::
0088 .dbline -1
0088 .dbline 128
0088 ; }
0088 ; //////////////////////////UART INIT
0088 ; void uart_init(void)
0088 ; {
0088 .dbline 130
0088 ;
0088 ; OUTDEOFF;
0088 9498 cbi 0x12,4
008A .dbline 131
008A ; UCSRB=0x00;
008A 2224 clr R2
008C 2AB8 out 0xa,R2
008E .dbline 133
008E ; //UBRRL=0x25; //19.2kbps
008E ; UBRRL=0x1; //38.4kbps
008E 81E0 ldi R24,1
0090 89B9 out 0x9,R24
0092 .dbline 135
0092 ; //TX EN ,9Bit ,Adress init
0092 ; RXADDRESS
0092 589A sbi 0xb,0
0094 .dbline 135
0094 20920000 sts _TRADFG,R2
0098 .dbline 136
0098 ; UCSRB=((1<<RXCIE)|(1<<TXCIE)|(1<<UCSZ2));
0098 84EC ldi R24,196
009A 8AB9 out 0xa,R24
009C .dbline -2
009C L16:
009C .dbline 0 ; func end
009C 0895 ret
009E .dbend
009E .dbfunc e timer_init _timer_init fV
.even
009E _timer_init::
009E .dbline -1
009E .dbline 142
009E ; //UCSRB=((1<<TXCIE)|(1<<TXCIE)|(1<<TXEN)|(1<<TXB8));
009E ; }//void uart_init(void)
009E ;
009E ; ///////////////Timer init
009E ; void timer_init(void)
009E ; {
009E .dbline 143
009E ; ;
009E .dbline -2
009E L17:
009E .dbline 0 ; func end
009E 0895 ret
00A0 .dbend
.area vector(rom, abs)
.org 16
0010 50C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
00A0 .dbfile E:\m8com\M8SP01.c
00A0 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
00A0 _timer1_ovf_isr::
00A0 .dbline -1
00A0 .dbline 149
00A0 ; }
00A0 ;
00A0 ;
00A0 ; #pragma interrupt_handler timer1_ovf_isr:9
00A0 ; void timer1_ovf_isr(void)
00A0 ; {
00A0 .dbline 150
00A0 ; ;
00A0 .dbline -2
00A0 L18:
00A0 .dbline 0 ; func end
00A0 1895 reti
00A2 .dbend
.area vector(rom, abs)
.org 26
001A 51C0 rjmp _uart1_tx_isr
.area text(rom, con, rel)
00A2 .dbfile E:\m8com\M8SP01.c
00A2 .dbfunc e uart1_tx_isr _uart1_tx_isr fV
.even
00A2 _uart1_tx_isr::
00A2 2A92 st -y,R2
00A4 8A93 st -y,R24
00A6 9A93 st -y,R25
00A8 EA93 st -y,R30
00AA FA93 st -y,R31
00AC 2FB6 in R2,0x3f
00AE 2A92 st -y,R2
00B0 .dbline -1
00B0 .dbline 157
00B0 ;
00B0 ; }//void timer1_ovf_isr(void)
00B0 ;
00B0 ; //TR to SLAVE
00B0 ; #pragma interrupt_handler uart1_tx_isr:14
00B0 ; void uart1_tx_isr(void)
00B0 ; {
00B0 .dbline 159
00B0 ;
00B0 ; TXbufP++;
00B0 80910800 lds R24,_TXbufP
00B4 8F5F subi R24,255 ; addi 1
00B6 80930800 sts _TXbufP,R24
00BA .dbline 161
00BA ;
00BA ; if(TXbufP==TXINTMAX) //发送完成
00BA 20900300 lds R2,_TXINTMAX
00BE 8215 cp R24,R2
00C0 29F4 brne L20
00C2 .dbline 162
00C2 ; {
00C2 .dbline 163
00C2 ; OUTDEOFF;
00C2 9498 cbi 0x12,4
00C4 .dbline 164
00C4 ; SLSTEP=10;
00C4 8AE0 ldi R24,10
00C6 80930E00 sts _SLSTEP,R24
00CA .dbline 166
00CA ;
00CA ; }//if(TXbufP>TXINTMAX)
00CA 09C0 rjmp L21
00CC L20:
00CC .dbline 168
00CC .dbline 169
00CC 80E0 ldi R24,<_TXBUF
00CE 90E0 ldi R25,>_TXBUF
00D0 E0910800 lds R30,_TXbufP
00D4 FF27 clr R31
00D6 E80F add R30,R24
00D8 F91F adc R31,R25
00DA 2080 ldd R2,z+0
00DC 2CB8 out 0xc,R2
00DE .dbline 170
00DE L21:
00DE .dbline -2
00DE L19:
00DE 2990 ld R2,y+
00E0 2FBE out 0x3f,R2
00E2 F991 ld R31,y+
00E4 E991 ld R30,y+
00E6 9991 ld R25,y+
00E8 8991 ld R24,y+
00EA 2990 ld R2,y+
00EC .dbline 0 ; func end
00EC 1895 reti
00EE .dbend
.area vector(rom, abs)
.org 22
0016 77C0 rjmp _uart1_rx_isr
.area text(rom, con, rel)
00EE .dbfile E:\m8com\M8SP01.c
00EE .dbfunc e uart1_rx_isr _uart1_rx_isr fV
00EE ; TmpD -> R16
.even
00EE _uart1_rx_isr::
00EE 2A92 st -y,R2
00F0 3A92 st -y,R3
00F2 0A93 st -y,R16
00F4 8A93 st -y,R24
00F6 9A93 st -y,R25
00F8 EA93 st -y,R30
00FA FA93 st -y,R31
00FC 2FB6 in R2,0x3f
00FE 2A92 st -y,R2
0100 .dbline -1
0100 .dbline 176
0100 ; else
0100 ; {
0100 ; UDR=TXBUF[TXbufP];
0100 ; }//else
0100 ;
0100 ; }//void uart1_tx_isr(void)
0100 ;
0100 ; #pragma interrupt_handler uart1_rx_isr:12
0100 ; void uart1_rx_isr(void)
0100 ; {
0100 .dbline 177
0100 ; unsigned char TmpD=0;
0100 0027 clr R16
0102 .dbline 179
0102 ;
0102 ; TmpD=UDR;
0102 0CB1 in R16,0xc
0104 .dbline 181
0104 ;
0104 ; if(TRADFG==0)
0104 20900000 lds R2,_TRADFG
0108 2220 tst R2
010A 89F4 brne L23
010C .dbline 182
010C ; {
010C .dbline 183
010C ; if((TmpD==SlaveAdress) && (RDHIS==SlaveAdress))
010C 0530 cpi R16,5
010E 61F4 brne L25
0110 80910100 lds R24,_RDHIS
0114 8530 cpi R24,5
0116 41F4 brne L25
0118 .dbline 184
0118 ; {
0118 .dbline 185
0118 ; OUTLED2ON;
0118 C198 cbi 0x18,1
011A .dbline 186
011A ; RXDATA
011A 5898 cbi 0xb,0
011C .dbline 186
011C 81E0 ldi R24,1
011E 80930000 sts _TRADFG,R24
0122 .dbline 187
0122 ; RXbufP=0;
0122 2224 clr R2
0124 20920900 sts _RXbufP,R2
0128 .dbline 188
0128 ; }//if(TmpD==SlaveAdress && RDHIS==SlaveAdress)
0128 L25:
0128 .dbline 189
0128 ; RDHIS=TmpD;
0128 00930100 sts _RDHIS,R16
012C .dbline 190
012C ; }//if(ADFG==0)
012C 12C0 rjmp L24
012E L23:
012E .dbline 192
012E ; else
012E ; {
012E .dbline 194
012E ;
012E ; if(RXbufP<RXINTMAX)
012E 20900500 lds R2,_RXINTMAX
0132 30900900 lds R3,_RXbufP
0136 3214 cp R3,R2
0138 20F4 brsh L27
013A .dbline 195
013A ; {
013A .dbline 197
013A ;
013A ; RXbufP++;
013A 832D mov R24,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -