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

📄 mix_exp.lst

📁 双龙AVR-MEGA128开发板的配套源码。
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0211) 	 unsigned char i;
(0212) 	 unsigned char *char_p;
(0213)      temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
    04C5 0115      MOVW	R2,R10
    04C6 2444      CLR	R4
    04C7 2455      CLR	R5
    04C8 ED49      LDI	R20,0xD9
    04C9 E051      LDI	R21,1
    04CA E060      LDI	R22,0
    04CB E070      LDI	R23,0
    04CC 925A      ST	R5,-Y
    04CD 924A      ST	R4,-Y
    04CE 923A      ST	R3,-Y
    04CF 922A      ST	R2,-Y
    04D0 018A      MOVW	R16,R20
    04D1 019B      MOVW	R18,R22
    04D2 940E0D3B  CALL	empy32u
    04D4 E08A      LDI	R24,0xA
    04D5 E090      LDI	R25,0
    04D6 938A      ST	R24,-Y
    04D7 940E0DF7  CALL	lsr32
    04D9 0178      MOVW	R14,R16
(0214)      for(i=0;i<3;i++)
    04DA 24CC      CLR	R12
    04DB C019      RJMP	0x04F5
(0215) 	    {
(0216) 		 adcval[3-i]=temp%10+0x30;
    04DC 2C2C      MOV	R2,R12
    04DD 2433      CLR	R3
    04DE E0E3      LDI	R30,3
    04DF E0F0      LDI	R31,0
    04E0 19E2      SUB	R30,R2
    04E1 09F3      SBC	R31,R3
    04E2 EB8C      LDI	R24,0xBC
    04E3 E091      LDI	R25,1
    04E4 0FE8      ADD	R30,R24
    04E5 1FF9      ADC	R31,R25
    04E6 E02A      LDI	R18,0xA
    04E7 E030      LDI	R19,0
    04E8 0187      MOVW	R16,R14
    04E9 940E0CF7  CALL	mod16u
    04EB 01C8      MOVW	R24,R16
    04EC 96C0      ADIW	R24,0x30
    04ED 8380      STD	Z+0,R24
(0217) 		 temp=temp/10;
    04EE E02A      LDI	R18,0xA
    04EF E030      LDI	R19,0
    04F0 0187      MOVW	R16,R14
    04F1 940E0CF9  CALL	div16u
    04F3 0178      MOVW	R14,R16
    04F4 94C3      INC	R12
    04F5 2D8C      MOV	R24,R12
    04F6 3083      CPI	R24,3
    04F7 F320      BCS	0x04DC
(0218) 		}
(0219) 	 adcval[0]=adcval[1];
    04F8 902001BD  LDS	R2,_adcval+1
    04FA 922001BC  STS	_adcval,R2
(0220) 	 adcval[1]='.';	
    04FC E28E      LDI	R24,0x2E
    04FD 938001BD  STS	_adcval+1,R24
(0221) 	 adcval[4]='V';	
    04FF E586      LDI	R24,0x56
    0500 938001C0  STS	0x1C0,R24
(0222) 	 adcval[5]=0;	
    0502 2422      CLR	R2
    0503 922001C1  STS	0x1C1,R2
(0223) 	 char_p=adcval;
    0505 EB8C      LDI	R24,0xBC
    0506 E091      LDI	R25,1
    0507 015C      MOVW	R10,R24
(0224) 	 return char_p;
    0508 018C      MOVW	R16,R24
    0509 940E0D74  CALL	pop_gset5
    050B 9508      RET
(0225) 	}
(0226) /*     OCMJ4X8LCD初始化     */
(0227) void ocmj_init(void)
(0228)     {
(0229) 	 MCUCR=0;
_ocmj_init:
    050C 2422      CLR	R2
    050D BE25      OUT	0x35,R2
(0230) 	 DDRA=0xff;
    050E EF8F      LDI	R24,0xFF
    050F BB8A      OUT	0x1A,R24
(0231) 	 PORTA=0xff;
    0510 BB8B      OUT	0x1B,R24
(0232) 	 DDRE=0x80;
    0511 E880      LDI	R24,0x80
    0512 B982      OUT	0x02,R24
(0233) 	 PORTE=0xff;
    0513 EF8F      LDI	R24,0xFF
    0514 B983      OUT	0x03,R24
(0234) 	 PORTC=0xff; 
    0515 BB85      OUT	0x15,R24
(0235) 	 DDRD=0x00;
    0516 BA21      OUT	0x11,R2
(0236) 	 PORTD=0xff;
    0517 BB82      OUT	0x12,R24
(0237) 	 clr_reset;//LCD复位
    0518 98AB      CBI	0x15,3
(0238) 	 delay_ms(10);
    0519 E00A      LDI	R16,0xA
    051A E010      LDI	R17,0
    051B 940E0CE3  CALL	_delay_ms
(0239) 	 set_reset;
    051D 9AAB      SBI	0x15,3
(0240) 	 clr_answer;
    051E 981F      CBI	0x03,7
(0241) 	 delay_ms(10);
    051F E00A      LDI	R16,0xA
    0520 E010      LDI	R17,0
    0521 940E0CE3  CALL	_delay_ms
    0523 9508      RET
(0242) 	 }
(0243) /*            写数据到LCD        */
(0244) void ocmj_write(unsigned char data)
(0245)     {
(0246) 	 while(ask!=0)
_ocmj_write:
  data                 --> R16
    0524 990E      SBIC	0x01,6
    0525 CFFE      RJMP	_ocmj_write
(0247) 	      ;
(0248)      data_port=data;
    0526 BB0B      OUT	0x1B,R16
(0249)    	 wait;
    0527 0000      NOP
    0528 0000      NOP
(0250) 	 set_answer;
    0529 9A1F      SBI	0x03,7
(0251) 	 wait;
    052A 0000      NOP
    052B 0000      NOP
(0252) 	 while(ask==0)
    052C 9B0E      SBIS	0x01,6
    052D CFFE      RJMP	0x052C
(0253) 	      ;		  
(0254) 	 clr_answer; 
    052E 981F      CBI	0x03,7
    052F 9508      RET
_ico_tran:
  j                    --> R20
  i                    --> R14
  ico_p                --> R10
  y                    --> R12
  x                    --> R22
    0530 940E0D9A  CALL	push_gset5
    0532 2EC2      MOV	R12,R18
    0533 2F60      MOV	R22,R16
    0534 84AA      LDD	R10,Y+10
    0535 84BB      LDD	R11,Y+11
(0255)     }
(0256) /*         传送32*32ICO点阵数据到LCD       */
(0257) /*         x:0~15(字节为单位)  y:0~64      */
(0258) /*         ico_p:指向图形数据的指针        */	
(0259) void ico_tran(unsigned char x,unsigned char y,const unsigned char *ico_p)
(0260)      {
(0261) 	  unsigned char i,j;
(0262) 	  x+=4;
    0536 5F6C      SUBI	R22,0xFC
(0263) 	  for(j=0;j<32;j++)
    0537 2744      CLR	R20
    0538 C016      RJMP	0x054F
(0264) 	     {
(0265) 		  for(i=0;i<4;i++)
    0539 24EE      CLR	R14
    053A C00E      RJMP	0x0549
(0266) 		    {
(0267) 			 ocmj_write(0xf3);
    053B EF03      LDI	R16,0xF3
    053C DFE7      RCALL	_ocmj_write
(0268) 			 ocmj_write(x);
    053D 2F06      MOV	R16,R22
    053E DFE5      RCALL	_ocmj_write
(0269) 			 ocmj_write(y);
    053F 2D0C      MOV	R16,R12
    0540 DFE3      RCALL	_ocmj_write
(0270) 			 ocmj_write(*ico_p);
    0541 01F5      MOVW	R30,R10
    0542 9104      LPM	R16,0(Z)
    0543 DFE0      RCALL	_ocmj_write
(0271) 			 ico_p++;
    0544 01C5      MOVW	R24,R10
    0545 9601      ADIW	R24,1
    0546 015C      MOVW	R10,R24
(0272) 			 x++;
    0547 9563      INC	R22
    0548 94E3      INC	R14
    0549 2D8E      MOV	R24,R14
    054A 3084      CPI	R24,4
    054B F378      BCS	0x053B
(0273) 			}
(0274) 		  x-=4;
    054C 5064      SUBI	R22,4
(0275) 		  y++;	
    054D 94C3      INC	R12
    054E 9543      INC	R20
    054F 3240      CPI	R20,0x20
    0550 F340      BCS	0x0539
    0551 940E0D74  CALL	pop_gset5
    0553 9508      RET
_cls:
  j                    --> R20
  i                    --> R14
  width                --> R22
  high                 --> R10
  y                    --> R12
  x                    --> Y+10
    0554 940E0CF2  CALL	push_arg4
    0556 940E0D9A  CALL	push_gset5
    0558 0169      MOVW	R12,R18
    0559 84AE      LDD	R10,Y+14
    055A 8968      LDD	R22,Y+16
(0276) 		 }
(0277) 	 }
(0278) /*      清除屏幕区域      */	 
(0279) void cls(unsigned x,unsigned y,unsigned char high,unsigned char width)
(0280)   {
(0281)    unsigned char i,j;
(0282)    x+=2;
    055B 858A      LDD	R24,Y+10
    055C 859B      LDD	R25,Y+11
    055D 9602      ADIW	R24,2
    055E 879B      STD	Y+11,R25
    055F 878A      STD	Y+10,R24
(0283)    for(j=0;j<high;j++)
    0560 2744      CLR	R20
    0561 C021      RJMP	0x0583
(0284)       {
(0285)        for(i=0;i<width;i++)
    0562 24EE      CLR	R14
    0563 C011      RJMP	0x0575
(0286)           {
(0287)             ocmj_write(0xf0);
    0564 EF00      LDI	R16,0xF0
    0565 DFBE      RCALL	_ocmj_write
(0288)             ocmj_write(x);
    0566 850A      LDD	R16,Y+10
    0567 851B      LDD	R17,Y+11
    0568 DFBB      RCALL	_ocmj_write
(0289)             ocmj_write(y);
    0569 2D0C      MOV	R16,R12
    056A DFB9      RCALL	_ocmj_write
(0290)             ocmj_write(55);
    056B E307      LDI	R16,0x37
    056C DFB7      RCALL	_ocmj_write
(0291) 			ocmj_write(90);
    056D E50A      LDI	R16,0x5A
    056E DFB5      RCALL	_ocmj_write
(0292)             x++;
    056F 858A      LDD	R24,Y+10
    0570 859B      LDD	R25,Y+11
    0571 9601      ADIW	R24,1
    0572 879B      STD	Y+11,R25
    0573 878A      STD	Y+10,R24
    0574 94E3      INC	R14
    0575 16E6      CP	R14,R22
    0576 F368      BCS	0x0564
(0293)            }
(0294)        x-=width;
    0577 2E26      MOV	R2,R22
    0578 2433      CLR	R3
    0579 840A      LDD	R0,Y+10
    057A 841B      LDD	R1,Y+11
    057B 1802      SUB	R0,R2
    057C 0813      SBC	R1,R3
    057D 861B      STD	Y+11,R1
    057E 860A      STD	Y+10,R0
(0295)        y++;	
    057F 01C6      MOVW	R24,R12
    0580 9601      ADIW	R24,1
    0581 016C      MOVW	R12,R24
    0582 9543      INC	R20
    0583 154A      CP	R20,R10
    0584 F2E8      BCS	0x0562
    0585 940E0D74  CALL	pop_gset5
    0587 9624      ADIW	R28,4
    0588 9508      RET
_bmp_tran:
  j                    --> R20
  i                    --> R14
  bmp_p                --> R22
  width                --> R10
  high                 --> R12
  y                    --> Y+12
  x                    --> Y+10
    0589 940E0CF2  CALL	push_arg4
    058B 940E0D9A  CALL	push_gset5
    058D 84CE      LDD	R12,Y+14
    058E 88A8      LDD	R10,Y+16
    058F 896A      LDD	R22,Y+18
    0590 897B      LDD	R23,Y+19
(0296)       }
(0297)   }	 
(0298) /*         传送bmp点阵数据到LCD            */
(0299) /*         x:0~15(字节为单位)  y:0~64      */
(0300) /*         bmp_p:指向图形数据的指针        */	
(0301) /*         high:位图高度(点阵行为单位)     */
(0302) /*         width:位图宽度(以字节为单位)

⌨️ 快捷键说明

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