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

📄 1.lst

📁 这是个lcd12864液晶的串行驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
    0263 5480      SUBI	R24,0x40
    0264 4090      SBCI	R25,0
    0265 3080      CPI	R24,0
    0266 E0E0      LDI	R30,0
    0267 079E      CPC	R25,R30
    0268 F00C      BLT	0x026A
    0269 C009      RJMP	0x0273
(0219)    else if((adrColumn-64) < 0)  left = 1;   // left = 1:for left. 
    026A 858C      LDD	R24,Y+12
    026B 859D      LDD	R25,Y+13
    026C 5480      SUBI	R24,0x40
    026D 4090      SBCI	R25,0
    026E 3080      CPI	R24,0
    026F E0E0      LDI	R30,0
    0270 079E      CPC	R25,R30
    0271 F40C      BGE	0x0273
    0272 E061      LDI	R22,1
(0220)    for(i=0; i<2; i++) 
    0273 2744      CLR	R20
    0274 C034      RJMP	0x02A9
(0221)    { 
(0222)       if(left == 0) 
    0275 2366      TST	R22
    0276 F4B1      BNE	0x028D
(0223)           { Wrigt_Cmad(adrPage | 0xb8);  
    0277 850A      LDD	R16,Y+10
    0278 6B08      ORI	R16,0xB8
    0279 DF88      RCALL	_Wrigt_Cmad
(0224)             Wrigt_Cmad(adrColumn | 0x40); 
    027A 850C      LDD	R16,Y+12
    027B 851D      LDD	R17,Y+13
    027C 6400      ORI	R16,0x40
    027D DF84      RCALL	_Wrigt_Cmad
(0225)             for(j=0; j< ColSum; j++)     
    027E 24EE      CLR	R14
    027F C00B      RJMP	0x028B
(0226)           { 
(0227)              Wrigt_Data(HZK[dptr]); 
    0280 E284      LDI	R24,0x24
    0281 E091      LDI	R25,1
    0282 01F5      MOVW	R30,R10
    0283 0FE8      ADD	R30,R24
    0284 1FF9      ADC	R31,R25
    0285 9104      LPM	R16,0(Z)
    0286 DF92      RCALL	_Wrigt_Data
(0228)              dptr = dptr + 1;     
    0287 01C5      MOVW	R24,R10
    0288 9601      ADIW	R24,1
    0289 015C      MOVW	R10,R24
    028A 94E3      INC	R14
    028B 14EC      CP	R14,R12
    028C F398      BCS	0x0280
(0229)           } 
(0230)       } 
(0231)       if(left == 1) 
    028D 3061      CPI	R22,1
    028E F4B1      BNE	0x02A5
(0232)           {          Wleft_Cmad(adrPage | 0xb8); 
    028F 850A      LDD	R16,Y+10
    0290 6B08      ORI	R16,0xB8
    0291 DF41      RCALL	_Wleft_Cmad
(0233)           Wleft_Cmad(adrColumn | 0x40); 
    0292 850C      LDD	R16,Y+12
    0293 851D      LDD	R17,Y+13
    0294 6400      ORI	R16,0x40
    0295 DF3D      RCALL	_Wleft_Cmad
(0234)           for(j=0; j< ColSum; j++)    { 
    0296 24EE      CLR	R14
    0297 C00B      RJMP	0x02A3
(0235)              Wleft_Data(HZK[dptr]); 
    0298 E284      LDI	R24,0x24
    0299 E091      LDI	R25,1
    029A 01F5      MOVW	R30,R10
    029B 0FE8      ADD	R30,R24
    029C 1FF9      ADC	R31,R25
    029D 9104      LPM	R16,0(Z)
    029E DF4B      RCALL	_Wleft_Data
(0236)              dptr = dptr + 1;    } 
    029F 01C5      MOVW	R24,R10
    02A0 9601      ADIW	R24,1
    02A1 015C      MOVW	R10,R24
    02A2 94E3      INC	R14
    02A3 14EC      CP	R14,R12
    02A4 F398      BCS	0x0298
(0237)       } 
(0238)           adrPage = adrPage + 1; 
    02A5 840A      LDD	R0,Y+10
    02A6 9403      INC	R0
    02A7 860A      STD	Y+10,R0
    02A8 9543      INC	R20
    02A9 3042      CPI	R20,2
    02AA F408      BCC	0x02AC
    02AB CFC9      RJMP	0x0275
    02AC 940E0372  CALL	pop_gset5
    02AE 9622      ADIW	R28,2
    02AF 9508      RET
_WriteDG:
  i                    --> R20
  left                 --> R22
  j                    --> R14
  dptr                 --> R10
  adrColumn            --> R12
  adrPage              --> Y+10
  XH_Dig               --> R20
    02B0 933A      ST	R19,-Y
    02B1 932A      ST	R18,-Y
    02B2 940E0375  CALL	push_gset5
    02B4 2F40      MOV	R20,R16
    02B5 84CC      LDD	R12,Y+12
    02B6 84DD      LDD	R13,Y+13
(0239)    } 
(0240) } 
(0241) //----------------------------------------------------------------------------- 
(0242) // LCD:DIlcdsplay ASCII. 
(0243) //----------------------------------------------------------------------------- 
(0244) void WriteDG(uchar XH_Dig,uchar adrPage,int adrColumn) 
(0245) { 
(0246)    unsigned int  dptr;               // dptr_adderss for Dig code. 
(0247)    unsigned char left, i, j; 
(0248)    dptr = XH_Dig * 16; 
    02B7 E180      LDI	R24,0x10
    02B8 9F84      MUL	R24,R20
    02B9 0150      MOVW	R10,R0
(0249)    if(adrColumn-64 >= 0) left = 0;   // left = 0:for right. 
    02BA 01C6      MOVW	R24,R12
    02BB 5480      SUBI	R24,0x40
    02BC 4090      SBCI	R25,0
    02BD 3080      CPI	R24,0
    02BE E0E0      LDI	R30,0
    02BF 079E      CPC	R25,R30
    02C0 F014      BLT	0x02C3
    02C1 2766      CLR	R22
    02C2 C001      RJMP	0x02C4
(0250)    else                  left = 1;   // left = 1:for left. 
    02C3 E061      LDI	R22,1
(0251) 
(0252)    for(i=0; i<2; i++) 
    02C4 2744      CLR	R20
    02C5 C034      RJMP	0x02FA
(0253)    { 
(0254)       if(left == 0) 
    02C6 2366      TST	R22
    02C7 F4B1      BNE	0x02DE
(0255)           {          Wrigt_Cmad(adrPage | 0xb8);   
    02C8 850A      LDD	R16,Y+10
    02C9 6B08      ORI	R16,0xB8
    02CA DF37      RCALL	_Wrigt_Cmad
(0256)           Wrigt_Cmad(adrColumn | 0x40); 
    02CB 2D0C      MOV	R16,R12
    02CC 6400      ORI	R16,0x40
    02CD DF34      RCALL	_Wrigt_Cmad
(0257)           for(j=0; j< 8; j++)      { 
    02CE 24EE      CLR	R14
    02CF C00B      RJMP	0x02DB
(0258)              Wrigt_Data(Dig[dptr]); 
    02D0 E584      LDI	R24,0x54
    02D1 E090      LDI	R25,0
    02D2 01F5      MOVW	R30,R10
    02D3 0FE8      ADD	R30,R24
    02D4 1FF9      ADC	R31,R25
    02D5 9104      LPM	R16,0(Z)
    02D6 DF42      RCALL	_Wrigt_Data
(0259)              dptr = dptr + 1;      } 
    02D7 01C5      MOVW	R24,R10
    02D8 9601      ADIW	R24,1
    02D9 015C      MOVW	R10,R24
    02DA 94E3      INC	R14
    02DB 2D8E      MOV	R24,R14
    02DC 3088      CPI	R24,0x8
    02DD F390      BCS	0x02D0
(0260)       } 
(0261)       if(left == 1) 
    02DE 3061      CPI	R22,1
    02DF F4B1      BNE	0x02F6
(0262)           {          Wleft_Cmad(adrPage | 0xb8); 
    02E0 850A      LDD	R16,Y+10
    02E1 6B08      ORI	R16,0xB8
    02E2 DEF0      RCALL	_Wleft_Cmad
(0263)           Wleft_Cmad(adrColumn | 0x40); 
    02E3 2D0C      MOV	R16,R12
    02E4 6400      ORI	R16,0x40
    02E5 DEED      RCALL	_Wleft_Cmad
(0264)           for(j=0; j< 8; j++)      { 
    02E6 24EE      CLR	R14
    02E7 C00B      RJMP	0x02F3
(0265)              Wleft_Data(Dig[dptr]); 
    02E8 E584      LDI	R24,0x54
    02E9 E090      LDI	R25,0
    02EA 01F5      MOVW	R30,R10
    02EB 0FE8      ADD	R30,R24
    02EC 1FF9      ADC	R31,R25
    02ED 9104      LPM	R16,0(Z)
    02EE DEFB      RCALL	_Wleft_Data
(0266)              dptr = dptr + 1;      } 
    02EF 01C5      MOVW	R24,R10
    02F0 9601      ADIW	R24,1
    02F1 015C      MOVW	R10,R24
    02F2 94E3      INC	R14
    02F3 2D8E      MOV	R24,R14
    02F4 3088      CPI	R24,0x8
    02F5 F390      BCS	0x02E8
(0267)       } 
(0268)           adrPage = adrPage + 1; 
    02F6 840A      LDD	R0,Y+10
    02F7 9403      INC	R0
    02F8 860A      STD	Y+10,R0
    02F9 9543      INC	R20
    02FA 3042      CPI	R20,2
    02FB F408      BCC	0x02FD
    02FC CFC9      RJMP	0x02C6
    02FD 940E0372  CALL	pop_gset5
    02FF 9622      ADIW	R28,2
    0300 9508      RET
(0269)    } 
(0270) } 
(0271) 
(0272) #define xtal 4    
(0273) void delay_1ms(void) 
(0274) { unsigned int i; 
(0275)  for(i=1;i<(unsigned int)(xtal*143-2);i++) 
_delay_1ms:
  i                    --> R16
    0301 E001      LDI	R16,1
    0302 E010      LDI	R17,0
    0303 C002      RJMP	0x0306
    0304 5F0F      SUBI	R16,0xFF
    0305 4F1F      SBCI	R17,0xFF
    0306 330A      CPI	R16,0x3A
    0307 E0E2      LDI	R30,2
    0308 071E      CPC	R17,R30
    0309 F3D0      BCS	0x0304
    030A 9508      RET
_delay_ms:
  i                    --> R20
  n                    --> R22
    030B 940E037B  CALL	push_gset2
    030D 01B8      MOVW	R22,R16
(0276)     ; 
(0277) } 
(0278) void delay_ms(unsigned int n) 
(0279) { 
(0280)  unsigned int i=0; 
    030E 2744      CLR	R20
    030F 2755      CLR	R21
    0310 C003      RJMP	0x0314
(0281)    while(i<n) 
(0282)    {delay_1ms(); 
    0311 DFEF      RCALL	_delay_1ms
(0283)     i++; 
    0312 5F4F      SUBI	R20,0xFF
    0313 4F5F      SBCI	R21,0xFF
    0314 1746      CP	R20,R22
    0315 0757      CPC	R21,R23
    0316 F3D0      BCS	0x0311
    0317 940E036F  CALL	pop_gset2
    0319 9508      RET
_main:
    031A 9723      SBIW	R28,3
(0284)    } 
(0285) } 
(0286) 
(0287) 
(0288) void main() 
(0289) { 
(0290)    PORTA = 0x00; 
    031B 2422      CLR	R2
    031C BA2B      OUT	0x1B,R2
(0291)    DDRA  = 0xFF; 
    031D EF8F      LDI	R24,0xFF
    031E BB8A      OUT	0x1A,R24
(0292)    DDRB  = 0xff ; 
    031F BB87      OUT	0x17,R24
(0293)    PORTB=0xff; 
    0320 BB88      OUT	0x18,R24
(0294)    PORTC = 0xff; 
    0321 BB85      OUT	0x15,R24
(0295)    DDRC  = 0xFF; 
    0322 BB84      OUT	0x14,R24
(0296)    PORTC = 0xff; 
    0323 BB85      OUT	0x15,R24
(0297)    PORTD = 0xFF;  
    0324 BB82      OUT	0x12,R24
(0298)    LCD_INT(); 
    0325 DF0B      RCALL	_LCD_INT
(0299)    LCD_CLR(); 
    0326 DF13      RCALL	_LCD_CLR
(0300)    WriteHZ(12, 0, 5, 64);         // 氧电势 
    0327 E480      LDI	R24,0x40
    0328 838A      STD	Y+2,R24
    0329 E085      LDI	R24,5
    032A E090      LDI	R25,0
    032B 8399      STD	Y+1,R25
    032C 8388      STD	Y+0,R24
    032D 2722      CLR	R18
    032E E00C      LDI	R16,0xC
    032F DF27      RCALL	_WriteHZ
(0301)    WriteHZ(17, 0, 108, 16);       // mv 
    0330 E180      LDI	R24,0x10
    0331 838A      STD	Y+2,R24
    0332 E68C      LDI	R24,0x6C
    0333 E090      LDI	R25,0
    0334 8399      STD	Y+1,R25
    0335 8388      STD	Y+0,R24
    0336 2722      CLR	R18
    0337 E101      LDI	R16,0x11
    0338 DF1E      RCALL	_WriteHZ
(0302)    WriteHZ(0, 2, 0, 64);          // 氧量 
    0339 E480      LDI	R24,0x40
    033A 838A      STD	Y+2,R24
    033B 2422      CLR	R2
    033C 2433      CLR	R3
    033D 8239      STD	Y+1,R3
    033E 8228      STD	Y+0,R2
    033F E022      LDI	R18,2
    0340 2700      CLR	R16
    0341 DF15      RCALL	_WriteHZ
(0303)    WriteDG(11, 2, 108);           // % 
    0342 E68C      LDI	R24,0x6C
    0343 E090      LDI	R25,0
    0344 8399      STD	Y+1,R25
    0345 8388      STD	Y+0,R24
    0346 E022      LDI	R18,2
    0347 E00B      LDI	R16,0xB
    0348 DF67      RCALL	_WriteDG
(0304)    WriteHZ(8, 4, 0, 64);          // 热电势 
    0349 E480      LDI	R24,0x40
    034A 838A      STD	Y+2,R24
    034B 2422      CLR	R2
    034C 2433      CLR	R3
    034D 8239      STD	Y+1,R3
    034E 8228      STD	Y+0,R2
    034F E024      LDI	R18,4
    0350 E008      LDI	R16,0x8
    0351 DF05      RCALL	_WriteHZ
(0305)    WriteHZ(17, 4, 108, 16);       // mv          
    0352 E180      LDI	R24,0x10
    0353 838A      STD	Y+2,R24
    0354 E68C      LDI	R24,0x6C
    0355 E090      LDI	R25,0
    0356 8399      STD	Y+1,R25
    0357 8388      STD	Y+0,R24
    0358 E024      LDI	R18,4
    0359 E101      LDI	R16,0x11
    035A DEFC      RCALL	_WriteHZ
(0306)    WriteHZ(4, 6, 0, 64);          // 温度 
    035B E480      LDI	R24,0x40
    035C 838A      STD	Y+2,R24
    035D 2422      CLR	R2
    035E 2433      CLR	R3
    035F 8239      STD	Y+1,R3
    0360 8228      STD	Y+0,R2
    0361 E026      LDI	R18,6
    0362 E004      LDI	R16,4
    0363 DEF3      RCALL	_WriteHZ
(0307)    WriteHZ(16, 6,108, 16);         // C 
FILE: <library>
    0364 E180      LDI	R24,0x10
    0365 838A      STD	Y+2,R24
    0366 E68C      LDI	R24,0x6C
    0367 E090      LDI	R25,0
    0368 8399      STD	Y+1,R25
    0369 8388      STD	Y+0,R24
    036A E026      LDI	R18,6
    036B E100      LDI	R16,0x10
    036C DEEA      RCALL	_WriteHZ
    036D 9623      ADIW	R28,3
    036E 9508      RET
pop_gset2:
    036F E0E2      LDI	R30,2
    0370 940C0381  JMP	pop
pop_gset5:
    0372 27EE      CLR	R30
    0373 940C0381  JMP	pop
push_gset5:
    0375 92FA      ST	R15,-Y
    0376 92EA      ST	R14,-Y
push_gset4:
    0377 92DA      ST	R13,-Y
    0378 92CA      ST	R12,-Y
push_gset3:
    0379 92BA      ST	R11,-Y
    037A 92AA      ST	R10,-Y
push_gset2:
    037B 937A      ST	R23,-Y
    037C 936A      ST	R22,-Y
push_gset1:
    037D 935A      ST	R21,-Y
    037E 934A      ST	R20,-Y
    037F 9508      RET
pop_gset1:
    0380 E0E1      LDI	R30,1
pop:
    0381 9149      LD	R20,Y+
    0382 9159      LD	R21,Y+
    0383 FDE0      SBRC	R30,0
    0384 9508      RET
    0385 9169      LD	R22,Y+
    0386 9179      LD	R23,Y+
    0387 FDE1      SBRC	R30,1
    0388 9508      RET
    0389 90A9      LD	R10,Y+
    038A 90B9      LD	R11,Y+
    038B FDE2      SBRC	R30,2
    038C 9508      RET
    038D 90C9      LD	R12,Y+
    038E 90D9      LD	R13,Y+
    038F FDE3      SBRC	R30,3
    0390 9508      RET
    0391 90E9      LD	R14,Y+
    0392 90F9      LD	R15,Y+
    0393 9508      RET

⌨️ 快捷键说明

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