📄 zong.lis
字号:
0192 .dbline 183
0192 86E0 ldi R24,6
0194 90E0 ldi R25,0
0196 8A93 st -y,R24
0198 8101 movw R16,R2
019A 9201 movw R18,R4
019C 0E940000 xcall lsr32
01A0 10930300 sts _T1_NUM+1,R17
01A4 00930200 sts _T1_NUM,R16
01A8 30930500 sts _T1_NUM+2+1,R19
01AC 20930400 sts _T1_NUM+2,R18
01B0 .dbline 184
01B0 41E1 ldi R20,17
01B2 57E2 ldi R21,39
01B4 60E0 ldi R22,0
01B6 70E0 ldi R23,0
01B8 1801 movw R2,R16
01BA 2901 movw R4,R18
01BC 241A sub R2,R20
01BE 350A sbc R3,R21
01C0 460A sbc R4,R22
01C2 570A sbc R5,R23
01C4 30920300 sts _T1_NUM+1,R3
01C8 20920200 sts _T1_NUM,R2
01CC 50920500 sts _T1_NUM+2+1,R5
01D0 40920400 sts _T1_NUM+2,R4
01D4 .dbline 185
01D4 4AE0 ldi R20,10
01D6 50E0 ldi R21,0
01D8 60E0 ldi R22,0
01DA 70E0 ldi R23,0
01DC 7A93 st -y,R23
01DE 6A93 st -y,R22
01E0 5A93 st -y,R21
01E2 4A93 st -y,R20
01E4 8101 movw R16,R2
01E6 9201 movw R18,R4
01E8 0E940000 xcall div32u
01EC 10930100 sts _VIN+1,R17
01F0 00930000 sts _VIN,R16
01F4 .dbline 186
01F4 13D0 xcall _data_display
01F6 .dbline 188
01F6 2224 clr R2
01F8 3324 clr R3
01FA 30920200 sts _T1OVF_NUM+1,R3
01FE 20920100 sts _T1OVF_NUM,R2
0202 .dbline 189
0202 3DBC out 0x2d,R3
0204 2CBC out 0x2c,R2
0206 .dbline 190
0206 85B7 in R24,0x35
0208 8360 ori R24,3
020A 85BF out 0x35,R24
020C .dbline 191
020C 20920000 sts _N,R2
0210 .dbline 192
0210 C098 cbi 0x18,0
0212 .dbline 194
0212 L27:
0212 .dbline -2
0212 L25:
0212 0E940000 xcall pop_gset2
0216 0E940000 xcall pop_lset
021A .dbline 0 ; func end
021A 1895 reti
021C .dbend
021C .dbfunc e data_display _data_display fV
021C ; temp -> y+0
021C ; i -> R20
021C ; data -> R20,R21
.even
021C _data_display::
021C 0E940000 xcall push_gset1
0220 A801 movw R20,R16
0222 2497 sbiw R28,4
0224 .dbline -1
0224 .dbline 215
0224 ; else
0224 ; {
0224 ; TCCR1B=0X00;//定时器t1停止工作
0224 ; CLI();//关中断,进行数据处理
0224 ; //数据处理
0224 ; T1_NUM=T1OVF_NUM;
0224 ; T1_NUM=(T1_NUM*65536+TCNT1);
0224 ; T1_NUM/=64;
0224 ; T1_NUM-=10001;
0224 ; VIN=T1_NUM/10;
0224 ; data_display(VIN);
0224 ; //数据处理结束
0224 ; T1OVF_NUM=0;
0224 ; TCNT1=0X0000;
0224 ; MCUCR|=((1<<ISC01)|(1<<ISC00));//设置外部上升沿中断
0224 ; N=0;//
0224 ; PORTB&=~(1<<0);//上位机发0x01,测量一次,停止ad
0224 ; //SEI();先进行1次采样
0224 ; }
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ;
0224 ; //external interupt on INT0
0224 ; }
0224 ;
0224 ; void data_display(unsigned int data)
0224 ; {
0224 .dbline 217
0224 ; unsigned char temp[4],i;
0224 ; temp[0]=data/1000;
0224 28EE ldi R18,1000
0226 33E0 ldi R19,3
0228 8A01 movw R16,R20
022A 0E940000 xcall div16u
022E 0883 std y+0,R16
0230 .dbline 218
0230 ; temp[1]=(data/100)%10;
0230 24E6 ldi R18,100
0232 30E0 ldi R19,0
0234 8A01 movw R16,R20
0236 0E940000 xcall div16u
023A 2AE0 ldi R18,10
023C 30E0 ldi R19,0
023E 0E940000 xcall mod16u
0242 0983 std y+1,R16
0244 .dbline 219
0244 ; temp[2]=(data/10)%10;
0244 2AE0 ldi R18,10
0246 30E0 ldi R19,0
0248 8A01 movw R16,R20
024A 0E940000 xcall div16u
024E 2AE0 ldi R18,10
0250 30E0 ldi R19,0
0252 0E940000 xcall mod16u
0256 0A83 std y+2,R16
0258 .dbline 220
0258 ; temp[3]=data%10;
0258 2AE0 ldi R18,10
025A 30E0 ldi R19,0
025C 8A01 movw R16,R20
025E 0E940000 xcall mod16u
0262 0B83 std y+3,R16
0264 .dbline 221
0264 ; for(i=0;i<4;i++)
0264 4427 clr R20
0266 0BC0 xjmp L35
0268 L32:
0268 .dbline 222
0268 .dbline 223
0268 CE01 movw R24,R28
026A E42F mov R30,R20
026C FF27 clr R31
026E E80F add R30,R24
0270 F91F adc R31,R25
0272 0081 ldd R16,z+0
0274 2BDF xcall _usart_tx
0276 .dbline 224
0276 01E0 ldi R16,1
0278 10E0 ldi R17,0
027A CBDE xcall _delay_nms
027C .dbline 225
027C L33:
027C .dbline 221
027C 4395 inc R20
027E L35:
027E .dbline 221
027E 4430 cpi R20,4
0280 98F3 brlo L32
0282 .dbline -2
0282 L28:
0282 2496 adiw R28,4
0284 0E940000 xcall pop_gset1
0288 .dbline 0 ; func end
0288 0895 ret
028A .dbsym l temp 0 A[4:4]c
028A .dbsym r i 20 c
028A .dbsym r data 20 i
028A .dbend
028A .dbfunc e init_devices _init_devices fV
.even
028A _init_devices::
028A .dbline -1
028A .dbline 230
028A ; {
028A ; usart_tx(temp[i]);
028A ; delay_nms(1);
028A ; }
028A ; }
028A ;
028A ; //call this routine to initialize all peripherals
028A ; void init_devices(void)
028A ; {
028A .dbline 232
028A ; //stop errant interrupts until set up
028A ; CLI(); //disable all interrupts
028A F894 cli
028C .dbline 233
028C ; port_init();
028C CFDE xcall _port_init
028E .dbline 235
028E ; //uart0_init();
028E ; timer0_125Kinit();
028E DADE xcall _timer0_125Kinit
0290 .dbline 236
0290 ; timer2_250init();
0290 E4DE xcall _timer2_250init
0292 .dbline 237
0292 ; uart0_init();
0292 11DF xcall _uart0_init
0294 .dbline 238
0294 ; timer1_init();
0294 EDDE xcall _timer1_init
0296 .dbline 239
0296 ; int0_init();
0296 F6DE xcall _int0_init
0298 .dbline 244
0298 ;
0298 ; //MCUCR = 0x03;
0298 ; //GICR = 0x40;
0298 ; //TIMSK = 0x00; //timer interrupt sources
0298 ; SEI(); //re-enable interrupts
0298 7894 sei
029A .dbline -2
029A L36:
029A .dbline 0 ; func end
029A 0895 ret
029C .dbend
029C .dbfunc e main _main fV
.even
029C _main::
029C .dbline -1
029C .dbline 249
029C ; //all peripherals are now initialized
029C ; }
029C ;
029C ; void main(void)
029C ; {
029C .dbline 250
029C ; CLI();
029C F894 cli
029E .dbline 251
029E ; port_init();
029E C6DE xcall _port_init
02A0 .dbline 252
02A0 ; init_devices();
02A0 F4DF xcall _init_devices
02A2 .dbline 256
02A2 ; //T0_250K();
02A2 ; //INT0_INIT();
02A2 ; //T1_INIT();
02A2 ; SEI();
02A2 7894 sei
02A4 L38:
02A4 .dbline 259
02A4 L39:
02A4 .dbline 258
02A4 FFCF xjmp L38
02A6 X2:
02A6 .dbline -2
02A6 L37:
02A6 .dbline 0 ; func end
02A6 0895 ret
02A8 .dbend
.area bss(ram, con, rel)
0000 .dbfile zong.c
0000 _VIN::
0000 .blkb 2
0002 .dbsym e VIN _VIN i
0002 _T1_NUM::
0002 .blkb 4
0006 .dbsym e T1_NUM _T1_NUM l
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -