⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 AVR单片机ATmega16(L)应用实例—红外线转速仪
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -