📄 sudu.s
字号:
.dbline -1
.dbline 137
;
; void DataTransmit(void) //串行485数据发送
; {
.dbline 139
; //ndata[2] = nLL;
; ndata[3] = n;
lds R2,_n
lds R3,_n+1
sts _ndata+3,R2
.dbline 140
; ndata[4] = numLL;
lds R2,_numLL
sts _ndata+4,R2
.dbline 141
; ndata[5] = numLH;
lds R2,_numLH
sts _ndata+5,R2
.dbline 142
; ndata[6] = numHL;
lds R2,_numHL
sts _ndata+6,R2
.dbline 143
; ndata[7] = numHH;
lds R2,_numHH
sts _ndata+7,R2
.dbline 144
; UCSRB|=(1<<TXCIE);
sbi 0xa,6
.dbline 145
; UDR = ndata[0];
lds R2,_ndata
out 0xc,R2
.dbline -2
.dbline 147
;
; }
L21:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 26
rjmp _uart0_tx_isr
.area text(rom, con, rel)
.dbfile sudu.c
.dbfunc e uart0_tx_isr _uart0_tx_isr fV
.even
_uart0_tx_isr::
st -y,R2
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 152
;
;
; #pragma interrupt_handler uart0_tx_isr:iv_USART_TXC
; void uart0_tx_isr(void)
; {
.dbline 154
;
; if(K<7)
lds R24,_K
cpi R24,7
brsh L28
.dbline 155
; {K=K+1;
.dbline 155
subi R24,255 ; addi 1
sts _K,R24
.dbline 156
; UDR=ndata[K];
ldi R24,<_ndata
ldi R25,>_ndata
lds R30,_K
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0xc,R2
.dbline 157
; }
rjmp L29
L28:
.dbline 160
.dbline 161
clr R2
sts _K,R2
.dbline 162
cbi 0xa,6
.dbline 163
L29:
.dbline -2
.dbline 166
;
; else
; {
; K=0;
; UCSRB&=~(1<<TXCIE); //1?UART ?¤?é?¨a?D??
; }
;
;
; }
L27:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e USART_Init _USART_Init fV
.even
_USART_Init::
.dbline -1
.dbline 169
;
; void USART_Init(void) //串行初始化
; {
.dbline 170
; UCSRB|=(1<<TXEN);//允许发送
sbi 0xa,3
.dbline 171
; UBRRL=(fosc/16/(baud+1))%256; //波特率的设置
ldi R24,52
out 0x9,R24
.dbline 172
; UBRRH=(fosc/16/(baud+1))/256;
clr R2
out 0x20,R2
.dbline 173
; UCSRC=0x86;//8 位数据+1 位STOP 位
ldi R24,134
out 0x20,R24
.dbline -2
.dbline 175
;
; }
L30:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 18
rjmp _tim0Ovf
.area text(rom, con, rel)
.dbfile sudu.c
.dbfunc e tim0Ovf _tim0Ovf fV
.even
_tim0Ovf::
st -y,R2
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 182
;
;
; //定时器0溢出中断
; #pragma interrupt_handler tim0Ovf:10 // vector #
; //测量时间定时
; void tim0Ovf(void)
; {
.dbline 183
; TCCR0 = 0x00; //停止TC0
clr R2
out 0x33,R2
.dbline 185
; //INT0中断关
; GICR = 0x00;
out 0x3b,R2
.dbline 187
;
; m += 1;
lds R24,_m
lds R25,_m+1
adiw R24,1
sts _m+1,R25
sts _m,R24
.dbline 188
; TCNT0 = TIME50ms;
ldi R24,174
out 0x32,R24
.dbline 189
; TCCR0 = 0x05; // Timer on //1024分频
ldi R24,5
out 0x33,R24
.dbline 194
;
; //PORTB |= (1<<PORTB1);
; //PORTB &= ~(1<<PORTB1);
;
; if(GIFR& 0x40)
in R2,0x3a
sbrs R2,6
rjmp L32
.dbline 195
; GIFR = 0x40; //清除INT0中断标志
ldi R24,64
out 0x3a,R24
L32:
.dbline 196
; SEI();
sei
.dbline 198
; //INT0中断开
; GICR = 0x40;
ldi R24,64
out 0x3b,R24
.dbline -2
.dbline 200
;
; }
L31:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.area vector(rom, abs)
.org 2
rjmp _INT_0
.area text(rom, con, rel)
.dbfile sudu.c
.dbfunc e INT_0 _INT_0 fV
.even
_INT_0::
rcall push_lset
.dbline -1
.dbline 205
; //INT0中断服务子程序
; #pragma interrupt_handler INT_0:2 // vector #
;
; void INT_0(void)
; {
.dbline 206
; n = m;
lds R2,_m
lds R3,_m+1
sts _n+1,R3
sts _n,R2
.dbline 215
; /*
; while(1)
; {
; PORTD |= (1<<PORTD3);
; PORTD &= ~(1<<PORTD3);
; delay(500);
; }
; */
; num_read(); //从EEROM读出num
rcall _num_read
.dbline 216
; num += m ;
lds R2,_m
lds R3,_m+1
clr R4
clr R5
lds R8,_num+2
lds R9,_num+2+1
lds R6,_num
lds R7,_num+1
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
sts _num+1,R7
sts _num,R6
sts _num+2+1,R9
sts _num+2,R8
.dbline 217
; num_write(); //将num写入EEROM
rcall _num_write
.dbline 218
; DataTransmit(); //串行485数据发送
rcall _DataTransmit
.dbline 219
; m = 0;
clr R2
clr R3
sts _m+1,R3
sts _m,R2
.dbline 220
; TCNT0 = TIME50ms;
ldi R24,174
out 0x32,R24
.dbline 221
; TCCR0 = 0x05; //Timer on //1024分频
ldi R24,5
out 0x33,R24
.dbline -2
.dbline 224
;
;
; }
L34:
rcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 228
;
;
; void main(void)
; {
.dbline 229
; delay(200);
ldi R16,200
rcall _delay
.dbline 230
; OSCCAL=e2rom_read(osccal_addr);
ldi R16,511
ldi R17,1
rcall _e2rom_read
out 0x31,R16
.dbline 233
; //OSCCAL=osccal;
;
; PORTD|=(1<<PORTD3);
sbi 0x12,3
.dbline 235
;
; MCUCR = 0x02; //INT0下降沿
ldi R24,2
out 0x35,R24
.dbline 236
; TIMSK = 0x01; //TC0溢出中断允许
ldi R24,1
out 0x39,R24
.dbline 239
;
; //定时器0中断设置
; TCCR0 = 0x00; //停止TC0
clr R2
out 0x33,R2
.dbline 240
; TCNT0 = TIME50ms; //初装值
ldi R24,174
out 0x32,R24
.dbline 242
;
; USART_Init();
rcall _USART_Init
.dbline 244
;
; DDRD=0xfb;
ldi R24,251
out 0x11,R24
.dbline 246
;
; SEI();
sei
.dbline 248
;
; GICR = 0x40; //INT0中断开
ldi R24,64
out 0x3b,R24
.dbline 249
; m = 0;
clr R2
clr R3
sts _m+1,R3
sts _m,R2
.dbline 250
; TCCR0 = 0x05; //Timer on //1024分频
ldi R24,5
out 0x33,R24
rjmp L37
L36:
.dbline 254
; //主循环...
;
; while(1)
; {
.dbline 260
; /*测试程序段,已屏蔽*/
; /*PORTB &= ~(1<<PORTB2);
; delay(1);
; PORTB |= (1<<PORTB2);
; */
; DataTransmit();
rcall _DataTransmit
.dbline 261
; for(k=1;k<100;k++)
ldi R24,1
ldi R25,0
sts _k+1,R25
sts _k,R24
rjmp L42
L39:
.dbline 262
ldi R16,200
rcall _delay
L40:
.dbline 261
lds R24,_k
lds R25,_k+1
adiw R24,1
sts _k+1,R25
sts _k,R24
L42:
.dbline 261
lds R24,_k
lds R25,_k+1
cpi R24,100
ldi R30,0
cpc R25,R30
brlo L39
.dbline 265
L37:
.dbline 253
rjmp L36
X0:
.dbline -2
.dbline 268
; delay(200);
;
;
; }
;
;
; }
L35:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile sudu.c
_data_receive::
.blkb 3
.dbsym e data_receive _data_receive A[3:3]c
_xxx::
.blkb 3
.dbsym e xxx _xxx A[3:3]c
_cx::
.blkb 1
.dbsym e cx _cx c
_i::
.blkb 1
.dbsym e i _i c
_flag_receive::
.blkb 1
.dbsym e flag_receive _flag_receive c
_nLH::
.blkb 1
.dbsym e nLH _nLH c
_nLL::
.blkb 1
.dbsym e nLL _nLL c
_K::
.blkb 1
.dbsym e K _K c
_numHH::
.blkb 1
.dbsym e numHH _numHH c
_numHL::
.blkb 1
.dbsym e numHL _numHL c
_numLH::
.blkb 1
.dbsym e numLH _numLH c
_numLL::
.blkb 1
.dbsym e numLL _numLL c
_num::
.blkb 4
.dbsym e num _num l
_k::
.blkb 2
.dbsym e k _k i
_n::
.blkb 2
.dbsym e n _n i
_m::
.blkb 2
.dbsym e m _m i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -