📄 m8mp01.lis
字号:
0088 .dbline 127
0088 ;
0088 ; OUTDEOFF;
0088 9498 cbi 0x12,4
008A .dbline 128
008A ; UCSRB=0x00;
008A 2224 clr R2
008C 2AB8 out 0xa,R2
008E .dbline 130
008E ; //UBRRL=0x25; //19.2kbps
008E ; UBRRL=0x1; //38.4kbps
008E 81E0 ldi R24,1
0090 89B9 out 0x9,R24
0092 .dbline 132
0092 ; //TX EN ,9Bit ,Adress init
0092 ; UCSRB=((1<<RXCIE)|(1<<TXCIE)|(1<<TXEN)|(1<<UCSZ2)|(1<<TXB8));
0092 8DEC ldi R24,205
0094 8AB9 out 0xa,R24
0096 .dbline -2
0096 L16:
0096 .dbline 0 ; func end
0096 0895 ret
0098 .dbend
0098 .dbfunc e timer_init _timer_init fV
.even
0098 _timer_init::
0098 .dbline -1
0098 .dbline 138
0098 ; //UCSRB=((1<<TXCIE)|(1<<TXCIE)|(1<<TXEN)|(1<<TXB8));
0098 ; }//void uart_init(void)
0098 ;
0098 ; ///////////////Timer init
0098 ; void timer_init(void)
0098 ; {
0098 .dbline 139
0098 ; ;
0098 .dbline -2
0098 L17:
0098 .dbline 0 ; func end
0098 0895 ret
009A .dbend
.area vector(rom, abs)
.org 16
0010 4DC0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
009A .dbfile E:\m8com\M8MP01.c
009A .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
009A _timer1_ovf_isr::
009A .dbline -1
009A .dbline 145
009A ; }
009A ;
009A ;
009A ; #pragma interrupt_handler timer1_ovf_isr:9
009A ; void timer1_ovf_isr(void)
009A ; {
009A .dbline 146
009A ; ;
009A .dbline -2
009A L18:
009A .dbline 0 ; func end
009A 1895 reti
009C .dbend
.area vector(rom, abs)
.org 26
001A 4EC0 rjmp _uart1_tx_isr
.area text(rom, con, rel)
009C .dbfile E:\m8com\M8MP01.c
009C .dbfunc e uart1_tx_isr _uart1_tx_isr fV
.even
009C _uart1_tx_isr::
009C 2A92 st -y,R2
009E 8A93 st -y,R24
00A0 9A93 st -y,R25
00A2 EA93 st -y,R30
00A4 FA93 st -y,R31
00A6 2FB6 in R2,0x3f
00A8 2A92 st -y,R2
00AA .dbline -1
00AA .dbline 153
00AA ;
00AA ; }//void timer1_ovf_isr(void)
00AA ;
00AA ; //TR to SLAVE
00AA ; #pragma interrupt_handler uart1_tx_isr:14
00AA ; void uart1_tx_isr(void)
00AA ; {
00AA .dbline 155
00AA ;
00AA ; TXbufP++;
00AA 80910700 lds R24,_TXbufP
00AE 8F5F subi R24,255 ; addi 1
00B0 80930700 sts _TXbufP,R24
00B4 .dbline 156
00B4 ; if(TXbufP<14)
00B4 8E30 cpi R24,14
00B6 A0F4 brsh L20
00B8 .dbline 157
00B8 ; {
00B8 .dbline 159
00B8 ;
00B8 ; if(TXbufP==2 )
00B8 8230 cpi R24,2
00BA 41F4 brne L22
00BC .dbline 160
00BC ; {
00BC .dbline 161
00BC ; OUTLED3Pulse;
00BC 84E0 ldi R24,4
00BE 28B2 in R2,0x18
00C0 2826 eor R2,R24
00C2 28BA out 0x18,R2
00C4 .dbline 162
00C4 ; TXDATA;
00C4 5098 cbi 0xa,0
00C6 .dbline 162
00C6 81E0 ldi R24,1
00C8 80930000 sts _TXADFG,R24
00CC .dbline 162
00CC .dbline 164
00CC ;
00CC ; }//if(TXbufP>1)
00CC L22:
00CC .dbline 165
00CC ; UDR=TXBUF[TXbufP];
00CC 80E0 ldi R24,<_TXBUF
00CE 90E0 ldi R25,>_TXBUF
00D0 E0910700 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 166
00DE ; }
00DE 04C0 rjmp L21
00E0 L20:
00E0 .dbline 168
00E0 .dbline 169
00E0 9498 cbi 0x12,4
00E2 .dbline 170
00E2 C098 cbi 0x18,0
00E4 .dbline 171
00E4 5398 cbi 0xa,3
00E6 .dbline 171
00E6 549A sbi 0xa,4
00E8 .dbline 172
00E8 L21:
00E8 .dbline -2
00E8 L19:
00E8 2990 ld R2,y+
00EA 2FBE out 0x3f,R2
00EC F991 ld R31,y+
00EE E991 ld R30,y+
00F0 9991 ld R25,y+
00F2 8991 ld R24,y+
00F4 2990 ld R2,y+
00F6 .dbline 0 ; func end
00F6 1895 reti
00F8 .dbend
.area vector(rom, abs)
.org 22
0016 7CC0 rjmp _uart1_rx_isr
.area text(rom, con, rel)
00F8 .dbfile E:\m8com\M8MP01.c
00F8 .dbfunc e uart1_rx_isr _uart1_rx_isr fV
00F8 ; TmpD -> R16
.even
00F8 _uart1_rx_isr::
00F8 2A92 st -y,R2
00FA 3A92 st -y,R3
00FC 0A93 st -y,R16
00FE 8A93 st -y,R24
0100 9A93 st -y,R25
0102 EA93 st -y,R30
0104 FA93 st -y,R31
0106 2FB6 in R2,0x3f
0108 2A92 st -y,R2
010A .dbline -1
010A .dbline 179
010A ; else
010A ; {
010A ; OUTDEOFF;
010A ; OUTLED1ON;
010A ; RXENABLE
010A ; }//else
010A ;
010A ;
010A ; }//void uart1_tx_isr(void)
010A ;
010A ; #pragma interrupt_handler uart1_rx_isr:12
010A ; void uart1_rx_isr(void)
010A ; {
010A .dbline 180
010A ; unsigned char TmpD=0;
010A 0027 clr R16
010C .dbline 181
010C ; TmpD=UDR;
010C 0CB1 in R16,0xc
010E .dbline 182
010E ; if(RXbufP<RXINTMAX)
010E 20900400 lds R2,_RXINTMAX
0112 30900800 lds R3,_RXbufP
0116 3214 cp R3,R2
0118 20F4 brsh L25
011A .dbline 183
011A ; {
011A .dbline 184
011A ; RXbufP++;
011A 832D mov R24,R3
011C 8F5F subi R24,255 ; addi 1
011E 80930800 sts _RXbufP,R24
0122 .dbline 185
0122 ; }
0122 L25:
0122 .dbline 186
0122 ; RXBUF[RXbufP]=UDR;
0122 80E0 ldi R24,<_RXBUF
0124 90E0 ldi R25,>_RXBUF
0126 E0910800 lds R30,_RXbufP
012A FF27 clr R31
012C E80F add R30,R24
012E F91F adc R31,R25
0130 2CB0 in R2,0xc
0132 2082 std z+0,R2
0134 .dbline 187
0134 ; OUTLED2Pulse;
0134 82E0 ldi R24,2
0136 28B2 in R2,0x18
0138 2826 eor R2,R24
013A 28BA out 0x18,R2
013C .dbline -2
013C L24:
013C 2990 ld R2,y+
013E 2FBE out 0x3f,R2
0140 F991 ld R31,y+
0142 E991 ld R30,y+
0144 9991 ld R25,y+
0146 8991 ld R24,y+
0148 0991 ld R16,y+
014A 3990 ld R3,y+
014C 2990 ld R2,y+
014E .dbline 0 ; func end
014E 1895 reti
0150 .dbsym r TmpD 16 c
0150 .dbend
0150 .dbfunc e TXbufRDY _TXbufRDY fV
.even
0150 _TXbufRDY::
0150 .dbline -1
0150 .dbline 191
0150 ;
0150 ; }//void uart1_rx_isr(void)
0150 ; void TXbufRDY(void)
0150 ; {
0150 .dbline 192
0150 ; TXBUF[0]=SlaveCR;
0150 20900100 lds R2,_SlaveCR
0154 20921E00 sts _TXBUF,R2
0158 .dbline 193
0158 ; TXBUF[1]=SlaveCR;
0158 20921F00 sts _TXBUF+1,R2
015C .dbline 194
015C ; TXBUF[2]=TRFG0;
015C 8EEF ldi R24,254
015E 80932000 sts _TXBUF+2,R24
0162 .dbline 195
0162 ; TXBUF[3]=TRFG1;
0162 8DEF ldi R24,253
0164 80932100 sts _TXBUF+3,R24
0168 .dbline 196
0168 ; TXBUF[4]=SlaveCR;
0168 20922200 sts _TXBUF+4,R2
016C .dbline 197
016C ; TXBUF[5]=0xFF;
016C 8FEF ldi R24,255
016E 80932300 sts _TXBUF+5,R24
0172 .dbline 198
0172 ; TXBUF[12]=TRFG2;
0172 81EF ldi R24,241
0174 80932A00 sts _TXBUF+12,R24
0178 .dbline 199
0178 ; TXBUF[13]=TRFG3;
0178 80EF ldi R24,240
017A 80932B00 sts _TXBUF+13,R24
017E .dbline -2
017E L27:
017E .dbline 0 ; func end
017E 0895 ret
0180 .dbend
0180 .dbfunc e RXBUFCLR _RXBUFCLR fV
0180 ; i -> R16
.even
0180 _RXBUFCLR::
0180 .dbline -1
0180 .dbline 203
0180 ; }//void TXbufRDY(void)
0180 ;
0180 ; void RXBUFCLR(void)
0180 ; {
0180 .dbline 204
0180 ; unsigned char i=0;
0180 0027 clr R16
0182 .dbline 205
0182 ; for(i=0;i<RXINTMAX;i++)
0182 09C0 rjmp L39
0184 L36:
0184 .dbline 206
0184 80E0 ldi R24,<_RXBUF
0186 90E0 ldi R25,>_RXBUF
0188 E02F mov R30,R16
018A FF27 clr R31
018C E80F add R30,R24
018E F91F adc R31,R25
0190 2224 clr R2
0192 2082 std z+0,R2
0194 L37:
0194 .dbline 205
0194 0395 inc R16
0196 L39:
0196 .dbline 205
0196 20900400 lds R2,_RXINTMAX
019A 0215 cp R16,R2
019C 98F3 brlo L36
019E .dbline -2
019E L35:
019E .dbline 0 ; func end
019E 0895 ret
01A0 .dbsym r i 16 c
01A0 .dbend
01A0 .dbfunc e RXRCK _RXRCK fV
.even
01A0 _RXRCK::
01A0 00D0 rcall push_gset2
01A2 .dbline -1
01A2 .dbline 210
01A2 ; RXBUF[i]=0;
01A2 ; }//void RXBUFCLR(void)
01A2 ;
01A2 ; void RXRCK(void) //检查收到的数据是否有效
01A2 ; {
01A2 .dbline 211
01A2 ; if(RXbufP>RXbufPmax)
01A2 20900900 lds R2,_RXbufPmax
01A6 30900800 lds R3,_RXbufP
01AA 2314 cp R2,R3
01AC B0F5 brsh L41
01AE .dbline 212
01AE ; {
01AE .dbline 214
01AE ;
01AE ; RXERROR=2;
01AE 82E0 ldi R24,2
01B0 80930A00 sts _RXERROR,R24
01B4 .dbline 215
01B4 ; if(RXBUF[12]==TRFG3 & RXBUF[11]==TRFG2 & RXBUF[1]==TRFG0 & RXBUF[2]==TRFG1)
01B4 80910C00 lds R24,_RXBUF+12
01B8 803F cpi R24,240
01BA 19F4 brne L49
01BC 61E0 ldi R22,1
01BE 70E0 ldi R23,0
01C0 02C0 rjmp L50
01C2 L49:
01C2 6627 clr R22
01C4 7727 clr R23
01C6 L50:
01C6 80910B00 lds R24,_RXBUF+11
01CA 813F cpi R24,241
01CC 19F4 brne L51
01CE 41E0 ldi R20,1
01D0 50E0 ldi R21,0
01D2 02C0 rjmp L52
01D4 L51:
01D4 4427 clr R20
01D6 5527 clr R21
01D8 L52:
01D8 80910100 lds R24,_RXBUF+1
01DC 8E3F cpi R24,254
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -