📄 main.lis
字号:
00D0 0895 ret
00D2 .dbsym r i 20 i
00D2 .dbsym r n 22 i
00D2 .dbend
00D2 .dbfunc e main _main fV
00D2 ; time -> y+9
00D2 ; count -> y+5
00D2 ; x -> y+1
00D2 ; temp -> R10
.even
00D2 _main::
00D2 2D97 sbiw R28,13
00D4 .dbline -1
00D4 .dbline 109
00D4 ; {Delay_1ms();WDR();
00D4 ; i++;
00D4 ; }
00D4 ; }
00D4 ;
00D4 ; /**********************主函数*****************************/
00D4 ; void main(void)
00D4 ; { uchar temp;
00D4 .dbline 111
00D4 ; float count,time,x;
00D4 ; Delay_nms(400);
00D4 00E9 ldi R16,400
00D6 11E0 ldi R17,1
00D8 ECDF xcall _Delay_nms
00DA .dbline 112
00DA ; init_devices();
00DA A9DF xcall _init_devices
00DC .dbline 113
00DC ; InitLcd();
00DC 0E940000 xcall _InitLcd
00E0 .dbline 114
00E0 ; display1(); //显示Test界面
00E0 B0DF xcall _display1
00E2 .dbline 115
00E2 ; Delay_nms(2000);
00E2 00ED ldi R16,2000
00E4 17E0 ldi R17,7
00E6 E5DF xcall _Delay_nms
00E8 .dbline 116
00E8 ; display2(); //显示Work状态
00E8 C3DF xcall _display2
00EA .dbline 117
00EA ; DisFlag=1;
00EA 81E0 ldi R24,1
00EC 80930200 sts _DisFlag,R24
00F0 63C1 xjmp L17
00F2 L16:
00F2 .dbline 121
00F2 ;
00F2 ; /********************************************/
00F2 ; while(1) //无限循环
00F2 ; { WDR();
00F2 .dbline 121
00F2 A895 wdr
00F4 .dbline 123
00F4 ;
00F4 ; if(DisFlag==1)//如果显示标志为1
00F4 80910200 lds R24,_DisFlag
00F8 8130 cpi R24,1
00FA 09F0 breq X1
00FC 33C1 xjmp L19
00FE X1:
00FE .dbline 124
00FE ; {
00FE .dbline 125
00FE ; time=(float)tx;count=(float)cx;
00FE 00E0 ldi R16,<L21
0100 10E0 ldi R17,>L21
0102 0E940000 xcall lpm32
0106 3A93 st -y,R19
0108 2A93 st -y,R18
010A 1A93 st -y,R17
010C 0A93 st -y,R16
010E 00910B00 lds R16,_tx
0112 10910C00 lds R17,_tx+1
0116 1695 lsr R17
0118 0795 ror R16
011A 0E940000 xcall int2fp
011E 3A93 st -y,R19
0120 2A93 st -y,R18
0122 1A93 st -y,R17
0124 0A93 st -y,R16
0126 0E940000 xcall empy32fs
012A 00910B00 lds R16,_tx
012E 10910C00 lds R17,_tx+1
0132 0170 andi R16,1
0134 1070 andi R17,0
0136 0E940000 xcall int2fp
013A 3A93 st -y,R19
013C 2A93 st -y,R18
013E 1A93 st -y,R17
0140 0A93 st -y,R16
0142 0E940000 xcall add32f
0146 FE01 movw R30,R28
0148 0187 std z+9,R16
014A 1287 std z+10,R17
014C 2387 std z+11,R18
014E 3487 std z+12,R19
0150 .dbline 125
0150 00E0 ldi R16,<L21
0152 10E0 ldi R17,>L21
0154 0E940000 xcall lpm32
0158 3A93 st -y,R19
015A 2A93 st -y,R18
015C 1A93 st -y,R17
015E 0A93 st -y,R16
0160 00910900 lds R16,_cx
0164 10910A00 lds R17,_cx+1
0168 1695 lsr R17
016A 0795 ror R16
016C 0E940000 xcall int2fp
0170 3A93 st -y,R19
0172 2A93 st -y,R18
0174 1A93 st -y,R17
0176 0A93 st -y,R16
0178 0E940000 xcall empy32fs
017C 00910900 lds R16,_cx
0180 10910A00 lds R17,_cx+1
0184 0170 andi R16,1
0186 1070 andi R17,0
0188 0E940000 xcall int2fp
018C 3A93 st -y,R19
018E 2A93 st -y,R18
0190 1A93 st -y,R17
0192 0A93 st -y,R16
0194 0E940000 xcall add32f
0198 FE01 movw R30,R28
019A 0583 std z+5,R16
019C 1683 std z+6,R17
019E 2783 std z+7,R18
01A0 3087 std z+8,R19
01A2 .dbline 126
01A2 ; x=count/time;x=x*30000;DisVal=(uint)x;//数学计算
01A2 FE01 movw R30,R28
01A4 2580 ldd R2,z+5
01A6 3680 ldd R3,z+6
01A8 4780 ldd R4,z+7
01AA 5084 ldd R5,z+8
01AC 5A92 st -y,R5
01AE 4A92 st -y,R4
01B0 3A92 st -y,R3
01B2 2A92 st -y,R2
01B4 FE01 movw R30,R28
01B6 ; stack offset 4
01B6 2584 ldd R2,z+13
01B8 3684 ldd R3,z+14
01BA 4784 ldd R4,z+15
01BC 5088 ldd R5,z+16
01BE 5A92 st -y,R5
01C0 4A92 st -y,R4
01C2 3A92 st -y,R3
01C4 2A92 st -y,R2
01C6 0E940000 xcall div32f
01CA FE01 movw R30,R28
01CC 0183 std z+1,R16
01CE 1283 std z+2,R17
01D0 2383 std z+3,R18
01D2 3483 std z+4,R19
01D4 .dbline 126
01D4 00E0 ldi R16,<L22
01D6 10E0 ldi R17,>L22
01D8 0E940000 xcall lpm32
01DC 3A93 st -y,R19
01DE 2A93 st -y,R18
01E0 1A93 st -y,R17
01E2 0A93 st -y,R16
01E4 FE01 movw R30,R28
01E6 ; stack offset 4
01E6 2580 ldd R2,z+5
01E8 3680 ldd R3,z+6
01EA 4780 ldd R4,z+7
01EC 5084 ldd R5,z+8
01EE 5A92 st -y,R5
01F0 4A92 st -y,R4
01F2 3A92 st -y,R3
01F4 2A92 st -y,R2
01F6 0E940000 xcall empy32f
01FA FE01 movw R30,R28
01FC 0183 std z+1,R16
01FE 1283 std z+2,R17
0200 2383 std z+3,R18
0202 3483 std z+4,R19
0204 .dbline 126
0204 FE01 movw R30,R28
0206 2180 ldd R2,z+1
0208 3280 ldd R3,z+2
020A 4380 ldd R4,z+3
020C 5480 ldd R5,z+4
020E 5A92 st -y,R5
0210 4A92 st -y,R4
0212 3A92 st -y,R3
0214 2A92 st -y,R2
0216 00E0 ldi R16,<L25
0218 10E0 ldi R17,>L25
021A 0E940000 xcall lpm32
021E 3A93 st -y,R19
0220 2A93 st -y,R18
0222 1A93 st -y,R17
0224 0A93 st -y,R16
0226 0E940000 xcall cmp32f
022A D4F0 brlt L23
022C FE01 movw R30,R28
022E 2180 ldd R2,z+1
0230 3280 ldd R3,z+2
0232 4380 ldd R4,z+3
0234 5480 ldd R5,z+4
0236 5A92 st -y,R5
0238 4A92 st -y,R4
023A 3A92 st -y,R3
023C 2A92 st -y,R2
023E 00E0 ldi R16,<L25
0240 10E0 ldi R17,>L25
0242 0E940000 xcall lpm32
0246 3A93 st -y,R19
0248 2A93 st -y,R18
024A 1A93 st -y,R17
024C 0A93 st -y,R16
024E 0E940000 xcall sub32f
0252 0E940000 xcall fp2int
0256 C801 movw R24,R16
0258 8050 subi R24,0 ; offset = 32768
025A 9048 sbci R25,128
025C 5C01 movw R10,R24
025E 08C0 xjmp L24
0260 L23:
0260 FE01 movw R30,R28
0262 0181 ldd R16,z+1
0264 1281 ldd R17,z+2
0266 2381 ldd R18,z+3
0268 3481 ldd R19,z+4
026A 0E940000 xcall fp2int
026E 5801 movw R10,R16
0270 L24:
0270 B0921200 sts _DisVal+1,R11
0274 A0921100 sts _DisVal,R10
0278 .dbline 128
0278 ;
0278 ; disx[3]=(DisVal/1000)%10;disx[2]=(DisVal/100)%10;
0278 28EE ldi R18,1000
027A 33E0 ldi R19,3
027C 8501 movw R16,R10
027E 0E940000 xcall div16u
0282 2AE0 ldi R18,10
0284 30E0 ldi R19,0
0286 0E940000 xcall mod16u
028A 10930800 sts _disx+6+1,R17
028E 00930700 sts _disx+6,R16
0292 .dbline 128
0292 24E6 ldi R18,100
0294 30E0 ldi R19,0
0296 00911100 lds R16,_DisVal
029A 10911200 lds R17,_DisVal+1
029E 0E940000 xcall div16u
02A2 2AE0 ldi R18,10
02A4 30E0 ldi R19,0
02A6 0E940000 xcall mod16u
02AA 10930600 sts _disx+4+1,R17
02AE 00930500 sts _disx+4,R16
02B2 .dbline 129
02B2 ; disx[1]=(DisVal%100)/10;disx[0]=DisVal%10;
02B2 24E6 ldi R18,100
02B4 30E0 ldi R19,0
02B6 00911100 lds R16,_DisVal
02BA 10911200 lds R17,_DisVal+1
02BE 0E940000 xcall mod16u
02C2 2AE0 ldi R18,10
02C4 30E0 ldi R19,0
02C6 0E940000 xcall div16u
02CA 10930400 sts _disx+2+1,R17
02CE 00930300 sts _disx+2,R16
02D2 .dbline 129
02D2 2AE0 ldi R18,10
02D4 30E0 ldi R19,0
02D6 00911100 lds R16,_DisVal
02DA 10911200 lds R17,_DisVal+1
02DE 0E940000 xcall mod16u
02E2 10930200 sts _disx+1,R17
02E6 00930100 sts _disx,R16
02EA .dbline 130
02EA ; DisplayOneChar(4,1,disx[3]+0x30);//显示数据
02EA 80910700 lds R24,_disx+6
02EE 90910800 lds R25,_disx+6+1
02F2 C096 adiw R24,48
02F4 8883 std y+0,R24
02F6 21E0 ldi R18,1
02F8 04E0 ldi R16,4
02FA 0E940000 xcall _DisplayOneChar
02FE .dbline 131
02FE ; DisplayOneChar(5,1,disx[2]+0x30);
02FE 80910500 lds R24,_disx+4
0302 90910600 lds R25,_disx+4+1
0306 C096 adiw R24,48
0308 8883 std y+0,R24
030A 21E0 ldi R18,1
030C 05E0 ldi R16,5
030E 0E940000 xcall _DisplayOneChar
0312 .dbline 132
0312 ; DisplayOneChar(6,1,disx[1]+0x30);
0312 80910300 lds R24,_disx+2
0316 90910400 lds R25,_disx+2+1
031A C096 adiw R24,48
031C 8883 std y+0,R24
031E 21E0 ldi R18,1
0320 06E0 ldi R16,6
0322 0E940000 xcall _DisplayOneChar
0326 .dbline 133
0326 ; DisplayOneChar(7,1,disx[0]+0x30);
0326 80910100 lds R24,_disx
032A 90910200 lds R25,_disx+1
032E C096 adiw R24,48
0330 8883 std y+0,R24
0332 21E0 ldi R18,1
0334 07E0 ldi R16,7
0336 0E940000 xcall _DisplayOneChar
033A .dbline 134
033A ; DisFlag=0;WorkTime=0;DisTime=0;EndFlag=0;
033A 2224 clr R2
033C 20920200 sts _DisFlag,R2
0340 .dbline 134
0340 3324 clr R3
0342 30921800 sts _WorkTime+1,R3
0346 20921700 sts _WorkTime,R2
034A .dbline 134
034A 30921600 sts _DisTime+1,R3
034E 20921500 sts _DisTime,R2
0352 .dbline 134
0352 20920000 sts _EndFlag,R2
0356 .dbline 135
0356 ; Start=0;cnt=0;
0356 20920000 sts _Start,R2
035A .dbline 135
035A 30921000 sts _cnt+1,R3
035E 20920F00 sts _cnt,R2
0362 .dbline 136
0362 ; }
0362 2AC0 xjmp L20
0364 L19:
0364 .dbline 138
0364 ; else //否则进行取样
0364 ; {
0364 L32:
0364 .dbline 139
0364 ; do{temp=PIND&0x04;WDR();JS=1;//等待下降沿后下一次测试
0364 .dbline 139
0364 80B3 in R24,0x10
0366 8470 andi R24,4
0368 A82E mov R10,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -