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

📄 ad7705.lst

📁 基于mega128上实现ad7705的驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0249 01AF      MOVW	R20,R30
    024A DFE9      RCALL	_LCD_DisplayCharacter
    024B 01FA      MOVW	R30,R20
    024C 8020      LDD	R2,Z+0
    024D 2022      TST	R2
    024E F7C1      BNE	0x0247
    024F 940E0538  CALL	pop_gset3
    0251 9508      RET
_LCD_DisplayInt:
  n                    --> R22
  j                    --> R22
  str                  --> R10
  a                    --> Y+2
  i                    --> R20
  t                    --> R20
  y                    --> R14
  x                    --> R12
    0252 940E053E  CALL	push_gset5
    0254 2EE2      MOV	R14,R18
    0255 2EC0      MOV	R12,R16
    0256 9727      SBIW	R28,7
    0257 8949      LDD	R20,Y+17
    0258 895A      LDD	R21,Y+18
(0124) }
(0125) /****************************************************************************/
(0126) //函数名:    LCD_DisplayString ()
(0127) //功能:      显示一个字符串
(0128) //输入:      x,y,t
(0129) //输出:      无
(0130) //备注:      
(0131) /****************************************************************************/
(0132) uchar ch1[6];                      //用于存放INT转换成字符串后的数据
(0133) void  LCD_DisplayInt (uchar x, uchar y ,uint t)
(0134) { 
(0135)   unsigned char n;
(0136)   unsigned char a[5]; char i, j;   
(0137)   unsigned char *str=ch1;                             
    0259 E18E      LDI	R24,0x1E
    025A E091      LDI	R25,1
    025B 015C      MOVW	R10,R24
(0138)   a[0]=(t/10000)%10;         //取得整数值到数组          
    025C E120      LDI	R18,0x10
    025D E237      LDI	R19,0x27
    025E 018A      MOVW	R16,R20
    025F 940E04AA  CALL	div16u
    0261 E02A      LDI	R18,0xA
    0262 E030      LDI	R19,0
    0263 940E04A8  CALL	mod16u
    0265 830A      STD	Y+2,R16
(0139)   a[1]=(t/1000)%10;                                      
    0266 EE28      LDI	R18,0xE8
    0267 E033      LDI	R19,3
    0268 018A      MOVW	R16,R20
    0269 940E04AA  CALL	div16u
    026B E02A      LDI	R18,0xA
    026C E030      LDI	R19,0
    026D 940E04A8  CALL	mod16u
    026F 830B      STD	Y+3,R16
(0140)   a[2]=(t/100)%10;                                       
    0270 E624      LDI	R18,0x64
    0271 E030      LDI	R19,0
    0272 018A      MOVW	R16,R20
    0273 940E04AA  CALL	div16u
    0275 E02A      LDI	R18,0xA
    0276 E030      LDI	R19,0
    0277 940E04A8  CALL	mod16u
    0279 830C      STD	Y+4,R16
(0141)   a[3]=(t/10)%10;                                        
    027A E02A      LDI	R18,0xA
    027B E030      LDI	R19,0
    027C 018A      MOVW	R16,R20
    027D 940E04AA  CALL	div16u
    027F E02A      LDI	R18,0xA
    0280 E030      LDI	R19,0
    0281 940E04A8  CALL	mod16u
    0283 830D      STD	Y+5,R16
(0142)   a[4]=(t/1)%10;                                         
    0284 E02A      LDI	R18,0xA
    0285 E030      LDI	R19,0
    0286 018A      MOVW	R16,R20
    0287 940E04A8  CALL	mod16u
    0289 830E      STD	Y+6,R16
(0143)                                                       
(0144)   for(i=0; i<5; i++)         //转成ASCII码               
    028A 2744      CLR	R20
    028B C00B      RJMP	0x0297
(0145)     a[i]=a[i]+'0';                                     
    028C 01CE      MOVW	R24,R28
    028D 9602      ADIW	R24,2
    028E 2E24      MOV	R2,R20
    028F 2433      CLR	R3
    0290 0E28      ADD	R2,R24
    0291 1E39      ADC	R3,R25
    0292 01F1      MOVW	R30,R2
    0293 8180      LDD	R24,Z+0
    0294 5D80      SUBI	R24,0xD0
    0295 8380      STD	Z+0,R24
    0296 9543      INC	R20
    0297 3045      CPI	R20,5
    0298 F398      BCS	0x028C
(0146)   for(i=0; a[i]=='0' && i<=3; i++);   
    0299 2744      CLR	R20
    029A C001      RJMP	0x029C
    029B 9543      INC	R20
    029C 01CE      MOVW	R24,R28
    029D 9602      ADIW	R24,2
    029E 2FE4      MOV	R30,R20
    029F 27FF      CLR	R31
    02A0 0FE8      ADD	R30,R24
    02A1 1FF9      ADC	R31,R25
    02A2 8180      LDD	R24,Z+0
    02A3 3380      CPI	R24,0x30
    02A4 F419      BNE	0x02A8
    02A5 E083      LDI	R24,3
    02A6 1784      CP	R24,R20
    02A7 F798      BCC	0x029B
(0147)     n=5-i;                   
    02A8 E065      LDI	R22,5
    02A9 1B64      SUB	R22,R20
(0148)   for(j=5-n; j<i; j++)       //填充空格                  
    02AA E085      LDI	R24,5
    02AB 1B86      SUB	R24,R22
    02AC 2F68      MOV	R22,R24
    02AD C007      RJMP	0x02B5
(0149)     { *str=' ';  str++; }                              
    02AE E280      LDI	R24,0x20
    02AF 01F5      MOVW	R30,R10
    02B0 8380      STD	Z+0,R24
    02B1 01CF      MOVW	R24,R30
    02B2 9601      ADIW	R24,1
    02B3 015C      MOVW	R10,R24
    02B4 9563      INC	R22
    02B5 1764      CP	R22,R20
    02B6 F3B8      BCS	0x02AE
(0150)   for(; i<5; i++)                                        
    02B7 C00D      RJMP	0x02C5
(0151)     { *str=(char)a[i]; str++; }  //加入有效的数字            
    02B8 01CE      MOVW	R24,R28
    02B9 9602      ADIW	R24,2
    02BA 2FE4      MOV	R30,R20
    02BB 27FF      CLR	R31
    02BC 0FE8      ADD	R30,R24
    02BD 1FF9      ADC	R31,R25
    02BE 8020      LDD	R2,Z+0
    02BF 01F5      MOVW	R30,R10
    02C0 8220      STD	Z+0,R2
    02C1 01CF      MOVW	R24,R30
    02C2 9601      ADIW	R24,1
    02C3 015C      MOVW	R10,R24
    02C4 9543      INC	R20
    02C5 3045      CPI	R20,5
    02C6 F388      BCS	0x02B8
(0152)   *str='\0'; 
    02C7 2422      CLR	R2
    02C8 01F5      MOVW	R30,R10
    02C9 8220      STD	Z+0,R2
(0153)   LCD_DisplayString(x,y,ch1);
    02CA E18E      LDI	R24,0x1E
    02CB E091      LDI	R25,1
    02CC 8399      STD	Y+1,R25
    02CD 8388      STD	Y+0,R24
    02CE 2D2E      MOV	R18,R14
    02CF 2D0C      MOV	R16,R12
    02D0 DF6C      RCALL	_LCD_DisplayString
    02D1 9627      ADIW	R28,7
    02D2 940E053B  CALL	pop_gset5
    02D4 9508      RET
_LCD_Displayasc:
  temp                 --> R10
  ascii                --> Y+2
  asc                  --> Y+10
  y                    --> R22
  x                    --> R20
    02D5 940E0542  CALL	push_gset3
    02D7 2F62      MOV	R22,R18
    02D8 2F40      MOV	R20,R16
    02D9 9724      SBIW	R28,4
(0154) }
(0155) /****************************************************************************/
(0156) //函数名:    LCD_Displayasc (char row, char column unsigned char *asc)
(0157) //功能:      显示一个ascii值
(0158) //输入:      x,y,*asc
(0159) //输出:      无
(0160) //备注:      
(0161) /****************************************************************************/
(0162) void LCD_Displayasc (uchar x, uchar y,  char asc)
(0163) { uchar ascii[2],temp;
(0164)   temp=asc;
    02DA 84AA      LDD	R10,Y+10
(0165)   ascii[0]=temp+'0';
    02DB 2D8A      MOV	R24,R10
    02DC 5D80      SUBI	R24,0xD0
    02DD 838A      STD	Y+2,R24
(0166)   ascii[1]='\0';
    02DE 2422      CLR	R2
    02DF 822B      STD	Y+3,R2
(0167)   LCD_DisplayString(x,y,ascii);
    02E0 01CE      MOVW	R24,R28
    02E1 9602      ADIW	R24,2
    02E2 8399      STD	Y+1,R25
    02E3 8388      STD	Y+0,R24
    02E4 2F26      MOV	R18,R22
    02E5 2F04      MOV	R16,R20
    02E6 DF56      RCALL	_LCD_DisplayString
    02E7 9624      ADIW	R28,4
    02E8 940E0538  CALL	pop_gset3
    02EA 9508      RET
_LCD_DisplayLong:
  n                    --> R10
  j                    --> R10
  str                  --> R12
  a                    --> Y+2
  i                    --> R14
  t                    --> Y+24
  y                    --> Y+22
  x                    --> Y+20
    02EB 940E04A3  CALL	push_arg4
    02ED 940E053E  CALL	push_gset5
    02EF 972A      SBIW	R28,0xA
(0168) }
(0169) /****************************************************************************/
(0170) //函数名:    LCD_DisplayLong(char row, char column ,unsigned long t)
(0171) //功能:      显示一个字符串
(0172) //输入:      x,y,t
(0173) //输出:      无
(0174) //备注:      
(0175) /****************************************************************************/
(0176) uchar ch2[8];                      //用于存放LONG转换成字符串的数据
(0177) void  LCD_DisplayLong(uchar x, uchar y ,unsigned long t)
(0178) { 
(0179)   uchar n;
(0180)   uchar a[8]; 
(0181)   uchar i, j;   
(0182)   uchar *str=ch2; 
    02F0 E186      LDI	R24,0x16
    02F1 E091      LDI	R25,1
    02F2 016C      MOVW	R12,R24
(0183)   a[0]=(t/10000000)%10;
    02F3 E840      LDI	R20,0x80
    02F4 E956      LDI	R21,0x96
    02F5 E968      LDI	R22,0x98
    02F6 E070      LDI	R23,0
    02F7 01FE      MOVW	R30,R28
    02F8 8C20      LDD	R2,Z+24
    02F9 8C31      LDD	R3,Z+25
    02FA 8C42      LDD	R4,Z+26
    02FB 8C53      LDD	R5,Z+27
    02FC 937A      ST	R23,-Y
    02FD 936A      ST	R22,-Y
    02FE 935A      ST	R21,-Y
    02FF 934A      ST	R20,-Y
    0300 0181      MOVW	R16,R2
    0301 0192      MOVW	R18,R4
    0302 940E04C4  CALL	div32u
    0304 E04A      LDI	R20,0xA
    0305 E050      LDI	R21,0
    0306 E060      LDI	R22,0
    0307 E070      LDI	R23,0
    0308 937A      ST	R23,-Y
    0309 936A      ST	R22,-Y
    030A 935A      ST	R21,-Y
    030B 934A      ST	R20,-Y
    030C 940E04C6  CALL	mod32u
    030E 830A      STD	Y+2,R16
(0184)   a[1]=(t/1000000)%10;
    030F E440      LDI	R20,0x40
    0310 E452      LDI	R21,0x42
    0311 E06F      LDI	R22,0xF
    0312 E070      LDI	R23,0
    0313 01FE      MOVW	R30,R28
    0314 8C20      LDD	R2,Z+24
    0315 8C31      LDD	R3,Z+25
    0316 8C42      LDD	R4,Z+26
    0317 8C53      LDD	R5,Z+27
    0318 937A      ST	R23,-Y
    0319 936A      ST	R22,-Y
    031A 935A      ST	R21,-Y
    031B 934A      ST	R20,-Y
    031C 0181      MOVW	R16,R2
    031D 0192      MOVW	R18,R4
    031E 940E04C4  CALL	div32u
    0320 E04A      LDI	R20,0xA
    0321 E050      LDI	R21,0
    0322 E060      LDI	R22,0
    0323 E070      LDI	R23,0
    0324 937A      ST	R23,-Y
    0325 936A      ST	R22,-Y
    0326 935A      ST	R21,-Y
    0327 934A      ST	R20,-Y
    0328 940E04C6  CALL	mod32u
    032A 830B      STD	Y+3,R16
(0185)   a[2]=(t/100000)%10;                            
    032B EA40      LDI	R20,0xA0
    032C E856      LDI	R21,0x86
    032D E061      LDI	R22,1
    032E E070      LDI	R23,0
    032F 01FE      MOVW	R30,R28
    0330 8C20      LDD	R2,Z+24
    0331 8C31      LDD	R3,Z+25
    0332 8C42      LDD	R4,Z+26
    0333 8C53      LDD	R5,Z+27
    0334 937A      ST	R23,-Y
    0335 936A      ST	R22,-Y
    0336 935A      ST	R21,-Y
    0337 934A      ST	R20,-Y
    0338 0181      MOVW	R16,R2
    0339 0192      MOVW	R18,R4
    033A 940E04C4  CALL	div32u
    033C E04A      LDI	R20,0xA
    033D E050      LDI	R21,0
    033E E060      LDI	R22,0
    033F E070      LDI	R23,0
    0340 937A      ST	R23,-Y
    0341 936A      ST	R22,-Y
    0342 935A      ST	R21,-Y
    0343 934A      ST	R20,-Y
    0344 940E04C6  CALL	mod32u
    0346 830C      STD	Y+4,R16
(0186)   a[3]=(t/10000)%10;         //取得整数值到数组          
    0347 E140      LDI	R20,0x10
    0348 E257      LDI	R21,0x27
    0349 E060      LDI	R22,0
    034A E070      LDI	R23,0
    034B 01FE      MOVW	R30,R28
    034C 8C20      LDD	R2,Z+24
    034D 8C31      LDD	R3,Z+25
    034E 8C42      LDD	R4,Z+26
    034F 8C53      LDD	R5,Z+27
    0350 937A      ST	R23,-Y
    0351 936A      ST	R22,-Y
    0352 935A      ST	R21,-Y
    0353 934A      ST	R20,-Y
    0354 0181      MOVW	R16,R2
    0355 0192      MOVW	R18,R4
    0356 940E04C4  CALL	div32u
    0358 E04A      LDI	R20,0xA
    0359 E050      LDI	R21,0
    035A E060      LDI	R22,0
    035B E070      LDI	R23,0
    035C 937A      ST	R23,-Y
    035D 936A      ST	R22,-Y
    035E 935A      ST	R21,-Y
    035F 934A      ST	R20,-Y
    0360 940E04C6  CALL	mod32u
    0362 830D      STD	Y+5,R16
(0187)   a[4]=(t/1000)%10;                                      
    0363 EE48      LDI	R20,0xE8
    0364 E053      LDI	R21,3
    0365 E060      LDI	R22,0
    0366 E070      LDI	R23,0
    0367 01FE      MOVW	R30,R28
    0368 8C20      LDD	R2,Z+24
    0369 8C31      LDD	R3,Z+25
    036A 8C42      LDD	R4,Z+26
    036B 8C53      LDD	R5,Z+27
    036C 937A      ST	R23,-Y
    036D 936A      ST	R22,-Y
    036E 935A      ST	R21,-Y
    036F 934A      ST	R20,-Y
    0370 0181      MOVW	R16,R2
    0371 0192      MOVW	R18,R4
    0372 940E04C4  CALL	div32u
    0374 E04A      LDI	R20,0xA
    0375 E050      LDI	R21,0
    0376 E060      LDI	R22,0
    0377 E070      LDI	R23,0
    0378 937A      ST	R23,-Y
    0379 936A      ST	R22,-Y
    037A 935A      ST	R21,-Y
    037B 934A      ST	R20,-Y
    037C 940E04C6  CALL	mod32u
    037E 830E      STD	Y+6,R16
(0188)   a[5]=(t/100)%10;                                       
    037F E644      LDI	R20,0x64
    0380 E050      LDI	R21,0
    0381 E060      LDI	R22,0
    0382 E070      LDI	R23,0
    0383 01FE      MOVW	R30,R28
    0384 8C20      LDD	R2,Z+24
    0385 8C31      LDD	R3,Z+25
    0386 8C42      LDD	R4,Z+26
    0387 8C53      LDD	R5,Z+27
    0388 937A      ST	R23,-Y
    0389 936A      ST	R22,-Y
    038A 935A      ST	R21,-Y
    038B 934A      ST	R20,-Y
    038C 0181      MOVW	R16,R2
    038D 0192      MOVW	R18,R4
    038E 940E04C4  CALL	div32u
    0390 E04A      LDI	R20,0xA
    0391 E050      LDI	R21,0
    0392 E060      LDI	R22,0
    0393 E070      LDI	R23,0
    0394 937A      ST	R23,-Y
    0395 936A      ST	R22,-Y
    0396 935A      ST	R21,-Y
    0397 934A      ST	R20,-Y
    0398 940E04C6  CALL	mod32u
    039A 830F      STD	Y+7,R16
(0189)   a[6]=(t/10)%10;                                        
    039B E04A      LDI	R20,0xA
    039C E050      LDI	R21,0
    039D E060      LDI	R22,0

⌨️ 快捷键说明

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