📄 sudu.lis
字号:
01A2 L10:
01A2 00D0 rcall pop_gset2
01A4 .dbline 0 ; func end
01A4 0895 ret
01A6 .dbend
01A6 .dbfunc e e2rom_write _e2rom_write fV
01A6 ; e2data -> R18
01A6 ; e2addr -> R16,R17
.even
01A6 _e2rom_write::
01A6 .dbline -1
01A6 .dbline 100
01A6 ;
01A6 ; void e2rom_write(uint e2addr,uchar e2data) //EEROM写数据
01A6 ; {
01A6 L12:
01A6 .dbline 101
01A6 L13:
01A6 .dbline 101
01A6 ; while(EECR & (1<<EEWE));
01A6 E199 sbic 0x1c,1
01A8 FECF rjmp L12
01AA .dbline 102
01AA ; EEAR = e2addr;
01AA 1FBB out 0x1f,R17
01AC 0EBB out 0x1e,R16
01AE .dbline 103
01AE ; EEDR = e2data;
01AE 2DBB out 0x1d,R18
01B0 .dbline 105
01B0 ;
01B0 ; EECR |= (1<<EEMWE);
01B0 E29A sbi 0x1c,2
01B2 .dbline 106
01B2 ; EECR |= (1<<EEWE);
01B2 E19A sbi 0x1c,1
01B4 .dbline -2
01B4 .dbline 107
01B4 ; }
01B4 L11:
01B4 .dbline 0 ; func end
01B4 0895 ret
01B6 .dbsym r e2data 18 c
01B6 .dbsym r e2addr 16 i
01B6 .dbend
01B6 .dbfunc e e2rom_read _e2rom_read fc
01B6 ; e2addr -> R16,R17
.even
01B6 _e2rom_read::
01B6 .dbline -1
01B6 .dbline 110
01B6 ;
01B6 ; uchar e2rom_read(uint e2addr) //EEROM读数据
01B6 ; {
01B6 L16:
01B6 .dbline 111
01B6 L17:
01B6 .dbline 111
01B6 ; while(EECR & (1<<EEWE));
01B6 E199 sbic 0x1c,1
01B8 FECF rjmp L16
01BA .dbline 112
01BA ; EEAR = e2addr;
01BA 1FBB out 0x1f,R17
01BC 0EBB out 0x1e,R16
01BE .dbline 113
01BE ; EECR |= (1<<EERE);
01BE E09A sbi 0x1c,0
01C0 .dbline 114
01C0 ; return EEDR;
01C0 0DB3 in R16,0x1d
01C2 .dbline -2
01C2 L15:
01C2 .dbline 0 ; func end
01C2 0895 ret
01C4 .dbsym r e2addr 16 i
01C4 .dbend
01C4 .dbfunc e num_read _num_read fV
.even
01C4 _num_read::
01C4 .dbline -1
01C4 .dbline 118
01C4 ; }
01C4 ;
01C4 ; void num_read(void) //从EEROM读出num
01C4 ; {
01C4 .dbline 119
01C4 ; numLL = e2rom_read(E2ADDRLL);
01C4 0027 clr R16
01C6 1127 clr R17
01C8 F6DF rcall _e2rom_read
01CA 00930F00 sts _numLL,R16
01CE .dbline 120
01CE ; numLH = e2rom_read(E2ADDRLH);
01CE 01E0 ldi R16,1
01D0 10E0 ldi R17,0
01D2 F1DF rcall _e2rom_read
01D4 00930E00 sts _numLH,R16
01D8 .dbline 121
01D8 ; numHL = e2rom_read(E2ADDRHL);
01D8 02E0 ldi R16,2
01DA 10E0 ldi R17,0
01DC ECDF rcall _e2rom_read
01DE 00930D00 sts _numHL,R16
01E2 .dbline 122
01E2 ; numHH = e2rom_read(E2ADDRHH);
01E2 03E0 ldi R16,3
01E4 10E0 ldi R17,0
01E6 E7DF rcall _e2rom_read
01E8 00930C00 sts _numHH,R16
01EC .dbline 123
01EC ; combination();
01EC .dbline -2
01EC .dbline 125
01EC ;
01EC ; }
01EC L19:
01EC .dbline 0 ; func end
01EC 55CF rjmp _combination
01EE .dbend
01EE .dbfunc e num_write _num_write fV
.even
01EE _num_write::
01EE .dbline -1
01EE .dbline 128
01EE ;
01EE ; void num_write(void) //将num写入EEROM
01EE ; {
01EE .dbline 129
01EE ; decompose();
01EE 17DF rcall _decompose
01F0 .dbline 130
01F0 ; e2rom_write(E2ADDRLL,numLL);
01F0 20910F00 lds R18,_numLL
01F4 0027 clr R16
01F6 1127 clr R17
01F8 D6DF rcall _e2rom_write
01FA .dbline 131
01FA ; e2rom_write(E2ADDRLH,numLH);
01FA 20910E00 lds R18,_numLH
01FE 01E0 ldi R16,1
0200 10E0 ldi R17,0
0202 D1DF rcall _e2rom_write
0204 .dbline 132
0204 ; e2rom_write(E2ADDRHL,numHL);
0204 20910D00 lds R18,_numHL
0208 02E0 ldi R16,2
020A 10E0 ldi R17,0
020C CCDF rcall _e2rom_write
020E .dbline 133
020E ; e2rom_write(E2ADDRHH,numHH);
020E 20910C00 lds R18,_numHH
0212 03E0 ldi R16,3
0214 10E0 ldi R17,0
0216 .dbline -2
0216 .dbline 134
0216 ; }
0216 L20:
0216 .dbline 0 ; func end
0216 C7CF rjmp _e2rom_write
0218 .dbend
0218 .dbfunc e DataTransmit _DataTransmit fV
.even
0218 _DataTransmit::
0218 .dbline -1
0218 .dbline 137
0218 ;
0218 ; void DataTransmit(void) //串行485数据发送
0218 ; {
0218 .dbline 139
0218 ; //ndata[2] = nLL;
0218 ; ndata[3] = n;
0218 20901600 lds R2,_n
021C 30901700 lds R3,_n+1
0220 20920300 sts _ndata+3,R2
0224 .dbline 140
0224 ; ndata[4] = numLL;
0224 20900F00 lds R2,_numLL
0228 20920400 sts _ndata+4,R2
022C .dbline 141
022C ; ndata[5] = numLH;
022C 20900E00 lds R2,_numLH
0230 20920500 sts _ndata+5,R2
0234 .dbline 142
0234 ; ndata[6] = numHL;
0234 20900D00 lds R2,_numHL
0238 20920600 sts _ndata+6,R2
023C .dbline 143
023C ; ndata[7] = numHH;
023C 20900C00 lds R2,_numHH
0240 20920700 sts _ndata+7,R2
0244 .dbline 144
0244 ; UCSRB|=(1<<TXCIE);
0244 569A sbi 0xa,6
0246 .dbline 145
0246 ; UDR = ndata[0];
0246 20900000 lds R2,_ndata
024A 2CB8 out 0xc,R2
024C .dbline -2
024C .dbline 147
024C ;
024C ; }
024C L21:
024C .dbline 0 ; func end
024C 0895 ret
024E .dbend
.area vector(rom, abs)
.org 26
001A 27C1 rjmp _uart0_tx_isr
.area text(rom, con, rel)
024E .dbfile sudu.c
024E .dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
024E _uart0_tx_isr::
024E 2A92 st -y,R2
0250 8A93 st -y,R24
0252 9A93 st -y,R25
0254 EA93 st -y,R30
0256 FA93 st -y,R31
0258 2FB6 in R2,0x3f
025A 2A92 st -y,R2
025C .dbline -1
025C .dbline 152
025C ;
025C ;
025C ; #pragma interrupt_handler uart0_tx_isr:iv_USART_TXC
025C ; void uart0_tx_isr(void)
025C ; {
025C .dbline 154
025C ;
025C ; if(K<7)
025C 80910B00 lds R24,_K
0260 8730 cpi R24,7
0262 68F4 brsh L28
0264 .dbline 155
0264 ; {K=K+1;
0264 .dbline 155
0264 8F5F subi R24,255 ; addi 1
0266 80930B00 sts _K,R24
026A .dbline 156
026A ; UDR=ndata[K];
026A 80E0 ldi R24,<_ndata
026C 90E0 ldi R25,>_ndata
026E E0910B00 lds R30,_K
0272 FF27 clr R31
0274 E80F add R30,R24
0276 F91F adc R31,R25
0278 2080 ldd R2,z+0
027A 2CB8 out 0xc,R2
027C .dbline 157
027C ; }
027C 04C0 rjmp L29
027E L28:
027E .dbline 160
027E .dbline 161
027E 2224 clr R2
0280 20920B00 sts _K,R2
0284 .dbline 162
0284 5698 cbi 0xa,6
0286 .dbline 163
0286 L29:
0286 .dbline -2
0286 .dbline 166
0286 ;
0286 ; else
0286 ; {
0286 ; K=0;
0286 ; UCSRB&=~(1<<TXCIE); //1?UART ?¤?é?¨a?D??
0286 ; }
0286 ;
0286 ;
0286 ; }
0286 L27:
0286 2990 ld R2,y+
0288 2FBE out 0x3f,R2
028A F991 ld R31,y+
028C E991 ld R30,y+
028E 9991 ld R25,y+
0290 8991 ld R24,y+
0292 2990 ld R2,y+
0294 .dbline 0 ; func end
0294 1895 reti
0296 .dbend
0296 .dbfunc e USART_Init _USART_Init fV
.even
0296 _USART_Init::
0296 .dbline -1
0296 .dbline 169
0296 ;
0296 ; void USART_Init(void) //串行初始化
0296 ; {
0296 .dbline 170
0296 ; UCSRB|=(1<<TXEN);//允许发送
0296 539A sbi 0xa,3
0298 .dbline 171
0298 ; UBRRL=(fosc/16/(baud+1))%256; //波特率的设置
0298 84E3 ldi R24,52
029A 89B9 out 0x9,R24
029C .dbline 172
029C ; UBRRH=(fosc/16/(baud+1))/256;
029C 2224 clr R2
029E 20BC out 0x20,R2
02A0 .dbline 173
02A0 ; UCSRC=0x86;//8 位数据+1 位STOP 位
02A0 86E8 ldi R24,134
02A2 80BD out 0x20,R24
02A4 .dbline -2
02A4 .dbline 175
02A4 ;
02A4 ; }
02A4 L30:
02A4 .dbline 0 ; func end
02A4 0895 ret
02A6 .dbend
.area vector(rom, abs)
.org 18
0012 53C1 rjmp _tim0Ovf
.area text(rom, con, rel)
02A6 .dbfile sudu.c
02A6 .dbfunc e tim0Ovf _tim0Ovf fV
.even
02A6 _tim0Ovf::
02A6 2A92 st -y,R2
02A8 8A93 st -y,R24
02AA 9A93 st -y,R25
02AC 2FB6 in R2,0x3f
02AE 2A92 st -y,R2
02B0 .dbline -1
02B0 .dbline 182
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -