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

📄 hc595.lis

📁 ATMEGA128的EEPROM驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 013A 8417              cp R24,R20
 013C 9507              cpc R25,R21
 013E 30F4              brsh L20
 0140                   .dbline 102
 0140           ;       {
 0140                   .dbline 103
 0140           ;        HC_595_OUT(0xFF);
 0140 0FEF              ldi R16,255
 0142 70DF              xcall _HC_595_OUT
 0144                   .dbline 104
 0144           ;        Seg7_Bitselect_PORT|=((1<<Seg7_Bit0)|(1<<Seg7_Bit1)|(1<<Seg7_Bit2)|(1<<Seg7_Bit3));
 0144 88B3              in R24,0x18
 0146 806F              ori R24,240
 0148 88BB              out 0x18,R24
 014A                   .dbline 105
 014A           ;       }
 014A 7FC0              xjmp L21
 014C           L20:
 014C                   .dbline 106
 014C           ;  else if(data>999)
 014C 87EE              ldi R24,999
 014E 93E0              ldi R25,3
 0150 8417              cp R24,R20
 0152 9507              cpc R25,R21
 0154 30F5              brsh L22
 0156                   .dbline 107
 0156           ;       {
 0156                   .dbline 108
 0156           ;        Seg7_Led_Buf[3]=data/1000;
 0156 28EE              ldi R18,1000
 0158 33E0              ldi R19,3
 015A 8A01              movw R16,R20
 015C 0E940000          xcall div16u
 0160 00930300          sts _Seg7_Led_Buf+3,R16
 0164                   .dbline 109
 0164           ;        Seg7_Led_Buf[2]=(data%1000)/100;
 0164 28EE              ldi R18,1000
 0166 33E0              ldi R19,3
 0168 8A01              movw R16,R20
 016A 0E940000          xcall mod16u
 016E 24E6              ldi R18,100
 0170 30E0              ldi R19,0
 0172 0E940000          xcall div16u
 0176 00930200          sts _Seg7_Led_Buf+2,R16
 017A                   .dbline 110
 017A           ;        Seg7_Led_Buf[1]=(data%100)/10;
 017A 24E6              ldi R18,100
 017C 30E0              ldi R19,0
 017E 8A01              movw R16,R20
 0180 0E940000          xcall mod16u
 0184 2AE0              ldi R18,10
 0186 30E0              ldi R19,0
 0188 0E940000          xcall div16u
 018C 00930100          sts _Seg7_Led_Buf+1,R16
 0190                   .dbline 111
 0190           ;        Seg7_Led_Buf[0]=data%10;
 0190 2AE0              ldi R18,10
 0192 30E0              ldi R19,0
 0194 8A01              movw R16,R20
 0196 0E940000          xcall mod16u
 019A 00930000          sts _Seg7_Led_Buf,R16
 019E                   .dbline 112
 019E           ;        Seg7_Led_Update();
 019E 4DDF              xcall _Seg7_Led_Update
 01A0                   .dbline 113
 01A0           ;       }
 01A0 54C0              xjmp L23
 01A2           L22:
 01A2                   .dbline 114
 01A2           ;  else if(data>99)
 01A2 83E6              ldi R24,99
 01A4 90E0              ldi R25,0
 01A6 8417              cp R24,R20
 01A8 9507              cpc R25,R21
 01AA 10F5              brsh L27
 01AC                   .dbline 115
 01AC           ;       {
 01AC                   .dbline 116
 01AC           ;        Seg7_Led_Buf[3]=16;
 01AC 80E1              ldi R24,16
 01AE 80930300          sts _Seg7_Led_Buf+3,R24
 01B2                   .dbline 117
 01B2           ;        Seg7_Led_Buf[2]=(data%1000)/100;
 01B2 28EE              ldi R18,1000
 01B4 33E0              ldi R19,3
 01B6 8A01              movw R16,R20
 01B8 0E940000          xcall mod16u
 01BC 24E6              ldi R18,100
 01BE 30E0              ldi R19,0
 01C0 0E940000          xcall div16u
 01C4 00930200          sts _Seg7_Led_Buf+2,R16
 01C8                   .dbline 118
 01C8           ;        Seg7_Led_Buf[1]=(data%100)/10;
 01C8 24E6              ldi R18,100
 01CA 30E0              ldi R19,0
 01CC 8A01              movw R16,R20
 01CE 0E940000          xcall mod16u
 01D2 2AE0              ldi R18,10
 01D4 30E0              ldi R19,0
 01D6 0E940000          xcall div16u
 01DA 00930100          sts _Seg7_Led_Buf+1,R16
 01DE                   .dbline 119
 01DE           ;        Seg7_Led_Buf[0]=data%10;
 01DE 2AE0              ldi R18,10
 01E0 30E0              ldi R19,0
 01E2 8A01              movw R16,R20
 01E4 0E940000          xcall mod16u
 01E8 00930000          sts _Seg7_Led_Buf,R16
 01EC                   .dbline 120
 01EC           ;        Seg7_Led_Update();
 01EC 26DF              xcall _Seg7_Led_Update
 01EE                   .dbline 121
 01EE           ;       }
 01EE 2DC0              xjmp L28
 01F0           L27:
 01F0                   .dbline 122
 01F0           ;  else if(data>9)
 01F0 89E0              ldi R24,9
 01F2 90E0              ldi R25,0
 01F4 8417              cp R24,R20
 01F6 9507              cpc R25,R21
 01F8 C8F4              brsh L32
 01FA                   .dbline 123
 01FA           ;       {
 01FA                   .dbline 124
 01FA           ;        Seg7_Led_Buf[3]=16;
 01FA 80E1              ldi R24,16
 01FC 80930300          sts _Seg7_Led_Buf+3,R24
 0200                   .dbline 125
 0200           ;        Seg7_Led_Buf[2]=16;
 0200 80930200          sts _Seg7_Led_Buf+2,R24
 0204                   .dbline 126
 0204           ;        Seg7_Led_Buf[1]=(data%100)/10;
 0204 24E6              ldi R18,100
 0206 30E0              ldi R19,0
 0208 8A01              movw R16,R20
 020A 0E940000          xcall mod16u
 020E 2AE0              ldi R18,10
 0210 30E0              ldi R19,0
 0212 0E940000          xcall div16u
 0216 00930100          sts _Seg7_Led_Buf+1,R16
 021A                   .dbline 127
 021A           ;        Seg7_Led_Buf[0]=data%10;
 021A 2AE0              ldi R18,10
 021C 30E0              ldi R19,0
 021E 8A01              movw R16,R20
 0220 0E940000          xcall mod16u
 0224 00930000          sts _Seg7_Led_Buf,R16
 0228                   .dbline 128
 0228           ;        Seg7_Led_Update();
 0228 08DF              xcall _Seg7_Led_Update
 022A                   .dbline 129
 022A           ;       }
 022A 0FC0              xjmp L33
 022C           L32:
 022C                   .dbline 131
 022C           ;  else
 022C           ;       {
 022C                   .dbline 132
 022C           ;        Seg7_Led_Buf[3]=16;
 022C 80E1              ldi R24,16
 022E 80930300          sts _Seg7_Led_Buf+3,R24
 0232                   .dbline 133
 0232           ;        Seg7_Led_Buf[2]=16;
 0232 80930200          sts _Seg7_Led_Buf+2,R24
 0236                   .dbline 134
 0236           ;        Seg7_Led_Buf[1]=16;
 0236 80930100          sts _Seg7_Led_Buf+1,R24
 023A                   .dbline 135
 023A           ;        Seg7_Led_Buf[0]=data%10;
 023A 2AE0              ldi R18,10
 023C 30E0              ldi R19,0
 023E 8A01              movw R16,R20
 0240 0E940000          xcall mod16u
 0244 00930000          sts _Seg7_Led_Buf,R16
 0248                   .dbline 136
 0248           ;        Seg7_Led_Update();
 0248 F8DE              xcall _Seg7_Led_Update
 024A                   .dbline 137
 024A           ;       }
 024A           L33:
 024A           L28:
 024A           L23:
 024A           L21:
 024A                   .dbline -2
 024A           L19:
 024A 0E940000          xcall pop_gset1
 024E                   .dbline 0 ; func end
 024E 0895              ret
 0250                   .dbsym r data 20 i
 0250                   .dbend
 0250                   .dbfunc e Seg7_Led_float _Seg7_Led_float fV
 0250           ;           temp -> R20,R21
 0250           ;           data -> y+8
                        .even
 0250           _Seg7_Led_float::
 0250 0E940000          xcall push_arg4
 0254 0E940000          xcall push_gset2
 0258 2497              sbiw R28,4
 025A                   .dbline -1
 025A                   .dbline 150
 025A           ; }
 025A           ; /*************************************************************************
 025A           ; ** 函数名称:HC595显示浮点数据
 025A           ; ** 功能描述:
 025A           ; ** 输 入:
 025A           ; ** 输出        :
 025A           ; ** 全局变量:
 025A           ; ** 调用模块: 
 025A           ; ** 说明:
 025A           ; ** 注意:
 025A           ; **************************************************************************/
 025A           ; void Seg7_Led_float(float data)
 025A           ; {
 025A                   .dbline 157
 025A           ;  unsigned int temp;
 025A           ;  /*
 025A           ;  重要说明:data+=0.00001;其中0.00001为容错值
 025A           ;  解决float数据类型在计算机内部存储的误差问题,可以解决显示问题
 025A           ;  但是会引入新的计算误差,如果精度要求大于0.00001建议更改容错值或者将此处注释掉 
 025A           ;  */
 025A           ;  data+=0.00001;
 025A FE01              movw R30,R28
 025C 2084              ldd R2,z+8
 025E 3184              ldd R3,z+9
 0260 4284              ldd R4,z+10
 0262 5384              ldd R5,z+11
 0264 5A92              st -y,R5
 0266 4A92              st -y,R4
 0268 3A92              st -y,R3
 026A 2A92              st -y,R2
 026C 00E0              ldi R16,<L41
 026E 10E0              ldi R17,>L41
 0270 0E940000          xcall lpm32
 0274 3A93              st -y,R19
 0276 2A93              st -y,R18
 0278 1A93              st -y,R17
 027A 0A93              st -y,R16
 027C 0E940000          xcall add32f
 0280 FE01              movw R30,R28
 0282 0087              std z+8,R16
 0284 1187              std z+9,R17
 0286 2287              std z+10,R18
 0288 3387              std z+11,R19
 028A                   .dbline 158
 028A           ;  point=1;
 028A 81E0              ldi R24,1
 028C 80930000          sts _point,R24
 0290                   .dbline 159
 0290           ;  if(data>999) //错误处理,超出显示范围则全亮
 0290 00E0              ldi R16,<L44
 0292 10E0              ldi R17,>L44
 0294 0E940000          xcall lpm32
 0298 3A93              st -y,R19
 029A 2A93              st -y,R18
 029C 1A93              st -y,R17
 029E 0A93              st -y,R16
 02A0 FE01              movw R30,R28
 02A2            ; stack offset 4
 02A2 2484              ldd R2,z+12
 02A4 3584              ldd R3,z+13
 02A6 4684              ldd R4,z+14
 02A8 5784              ldd R5,z+15
 02AA 5A92              st -y,R5
 02AC 4A92              st -y,R4
 02AE 3A92              st -y,R3
 02B0 2A92              st -y,R2
 02B2 0E940000          xcall cmp32f
 02B6 34F4              brge L42
 02B8                   .dbline 160
 02B8           ;       {
 02B8                   .dbline 161
 02B8           ;        HC_595_OUT(0xFF);
 02B8 0FEF              ldi R16,255
 02BA B4DE              xcall _HC_595_OUT
 02BC                   .dbline 162
 02BC           ;        Seg7_Bitselect_PORT|=((1<<Seg7_Bit0)|(1<<Seg7_Bit1)|(1<<Seg7_Bit2)|(1<<Seg7_Bit3));
 02BC 88B3              in R24,0x18
 02BE 806F              ori R24,240
 02C0 88BB              out 0x18,R24
 02C2                   .dbline 163
 02C2           ;       }
 02C2 8EC1              xjmp L43
 02C4           L42:
 02C4                   .dbline 164
 02C4           ;  else if(data>99)
 02C4 00E0              ldi R16,<L47
 02C6 10E0              ldi R17,>L47
 02C8 0E940000          xcall lpm32
 02CC 3A93              st -y,R19
 02CE 2A93              st -y,R18
 02D0 1A93              st -y,R17
 02D2 0A93              st -y,R16
 02D4 FE01              movw R30,R28
 02D6            ; stack offset 4
 02D6 2484              ldd R2,z+12
 02D8 3584              ldd R3,z+13
 02DA 4684              ldd R4,z+14
 02DC 5784              ldd R5,z+15
 02DE 5A92              st -y,R5
 02E0 4A92              st -y,R4
 02E2 3A92              st -y,R3
 02E4 2A92              st -y,R2
 02E6 0E940000          xcall cmp32f
 02EA 0CF0              brlt X0
 02EC 77C0              xjmp L45
 02EE           X0:
 02EE                   .dbline 165
 02EE           ;       {
 02EE                   .dbline 166
 02EE           ;        temp=data*10;
 02EE 00E0              ldi R16,<L50
 02F0 10E0              ldi R17,>L50
 02F2 0E940000          xcall lpm32
 02F6 3A93              st -y,R19
 02F8 2A93              st -y,R18
 02FA 1A93              st -y,R17
 02FC 0A93              st -y,R16
 02FE FE01              movw R30,R28
 0300            ; stack offset 4
 0300 2484              ldd R2,z+12
 0302 3584              ldd R3,z+13
 0304 4684              ldd R4,z+14
 0306 5784              ldd R5,z+15
 0308 5A92              st -y,R5
 030A 4A92              st -y,R4
 030C 3A92              st -y,R3
 030E 2A92              st -y,R2
 0310 0E940000          xcall empy32f
 0314 FE01              movw R30,R28
 0316 0083              std z+0,R16
 0318 1183              std z+1,R17
 031A 2283              std z+2,R18
 031C 3383              std z+3,R19
 031E FE01              movw R30,R28
 0320 2080              ldd R2,z+0
 0322 3180              ldd R3,z+1
 0324 4280              ldd R4,z+2
 0326 5380              ldd R5,z+3
 0328 5A92              st -y,R5
 032A 4A92              st -y,R4
 032C 3A92              st -y,R3
 032E 2A92              st -y,R2
 0330 00E0              ldi R16,<L51
 0332 10E0              ldi R17,>L51
 0334 0E940000          xcall lpm32
 0338 3A93              st -y,R19
 033A 2A93              st -y,R18
 033C 1A93              st -y,R17
 033E 0A93              st -y,R16
 0340 0E940000          xcall cmp32f
 0344 CCF0              brlt L48
 0346 FE01              movw R30,R28
 0348 2080              ldd R2,z+0
 034A 3180              ldd R3,z+1
 034C 4280              ldd R4,z+2
 034E 5380              ldd R5,z+3
 0350 5A92              st -y,R5
 0352 4A92              st -y,R4
 0354 3A92              st -y,R3
 0356 2A92              st -y,R2
 0358 00E0              ldi R16,<L51
 035A 10E0              ldi R17,>L51
 035C 0E940000          xcall lpm32
 0360 3A93              st -y,R19
 0362 2A93              st -y,R18
 0364 1A93              st -y,R17
 0366 0A93              st -y,R16

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -