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

📄 ps2_study.lst

📁 基于ps/2接口协议的键盘学习机,采用128*64LCD显示,使用单片机为,mega16
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0504 1542      CP	R20,R2
    0505 F3B8      BCS	0x04FD
(0185)   }
(0186)  }
(0187) }
    0506 9623      ADIW	R28,3
    0507 940E1FD3  CALL	pop_gset5
    0509 9622      ADIW	R28,2
    050A 9508      RET
_Delaynus:
  j                    --> Y+1
  m                    --> R20
  i                    --> R22
  k                    --> R16
    050B 940E1FBD  CALL	push_gset2
(0188) 
(0189) 
(0190) ////////////////////////////////////////////////////////////////////////////
(0191) void Delaynus(unsigned int k)
(0192) {
(0193)   char i, j, m;
(0194)  for (m = 0; m < 8; m++)
    050D 2744      CLR	R20
    050E C009      RJMP	0x0518
(0195)  {
(0196)   for (i = 0; i < k; i++)
    050F 2766      CLR	R22
    0510 C001      RJMP	0x0512
    0511 9563      INC	R22
    0512 2E26      MOV	R2,R22
    0513 2433      CLR	R3
    0514 1620      CP	R2,R16
    0515 0631      CPC	R3,R17
    0516 F3D0      BCS	0x0511
    0517 9543      INC	R20
    0518 3048      CPI	R20,0x8
    0519 F3A8      BCS	0x050F
(0197)   {
(0198)    //for (j = 0; j < 150; j++);
(0199)    ;
(0200)   }
(0201)  }
(0202) }
    051A 940E1FCD  CALL	pop_gset2
    051C 9508      RET
_Delaynms:
  m                    --> R20
  i                    --> R22
  j                    --> R10
  k                    --> R16
    051D 940E1FC1  CALL	push_gset3
(0203) //////////////////////////////////////////////////////
(0204) void Delaynms(unsigned int k)
(0205) {
(0206)   char i, j, m;
(0207)  for (m = 0; m < 8; m++)
    051F 2744      CLR	R20
    0520 C00F      RJMP	0x0530
(0208)  {
(0209)   for (i = 0; i < k; i++)
    0521 2766      CLR	R22
    0522 C007      RJMP	0x052A
(0210)   {
(0211)    for (j = 0; j < 150; j++);
    0523 24AA      CLR	R10
    0524 C001      RJMP	0x0526
    0525 94A3      INC	R10
    0526 2D8A      MOV	R24,R10
    0527 3986      CPI	R24,0x96
    0528 F3E0      BCS	0x0525
    0529 9563      INC	R22
    052A 2E26      MOV	R2,R22
    052B 2433      CLR	R3
    052C 1620      CP	R2,R16
    052D 0631      CPC	R3,R17
    052E F3A0      BCS	0x0523
    052F 9543      INC	R20
    0530 3048      CPI	R20,0x8
    0531 F378      BCS	0x0521
(0212)   
(0213)   }
(0214)  }
(0215) }
    0532 940E1FD0  CALL	pop_gset3
    0534 9508      RET
_Delay_key:
  i                    --> R20
  j                    --> R22
  m                    --> R10
  k                    --> R16
    0535 940E1FC1  CALL	push_gset3
(0216) //////////////////////////////////
(0217) 
(0218) void Delay_key(unsigned char k)
(0219) {
(0220)  unsigned char i, j, m;
(0221)  for (i = 0; i < k; i++)
    0537 2744      CLR	R20
    0538 C00C      RJMP	0x0545
(0222)  {
(0223)   for (j = 0; j < 8; j++)
    0539 2766      CLR	R22
    053A C007      RJMP	0x0542
(0224)   {
(0225)    for (m = 0; m < 150; m++);
    053B 24AA      CLR	R10
    053C C001      RJMP	0x053E
    053D 94A3      INC	R10
    053E 2D8A      MOV	R24,R10
    053F 3986      CPI	R24,0x96
    0540 F3E0      BCS	0x053D
    0541 9563      INC	R22
    0542 3068      CPI	R22,0x8
    0543 F3B8      BCS	0x053B
    0544 9543      INC	R20
    0545 1740      CP	R20,R16
    0546 F390      BCS	0x0539
(0226)   }
(0227)  }
(0228) }
    0547 940E1FD0  CALL	pop_gset3
    0549 9508      RET
_LCD_China:
  i                    --> R20
  L_R                  --> R22
  data                 --> R10
  y                    --> R12
  x                    --> R14
    054A 940E1FC9  CALL	push_gset5
    054C 2EC2      MOV	R12,R18
    054D 2EE0      MOV	R14,R16
    054E 9723      SBIW	R28,3
    054F 84AD      LDD	R10,13+Y
    0550 84BE      LDD	R11,14+Y
    0551 856F      LDD	R22,15+Y
(0229) 
(0230) 
(0231) 
(0232) void LCD_China(char x, char y, unsigned char const *data, char L_R)
(0233) {
(0234)   char i;
(0235)   LCD_write_data(x, y, *data, L_R);
    0552 836A      STD	R22,2+Y
    0553 01F5      MOVW	R30,R10
    0554 91E4      LD	R30,R30
    0555 83E8      STD	R30,0+Y
    0556 2D2C      MOV	R18,R12
    0557 2D0E      MOV	R16,R14
    0558 DF19      RCALL	_LCD_write_data
(0236)   for (i = 0; i < 16; i++)
    0559 2744      CLR	R20
    055A C008      RJMP	0x0563
(0237)   {
(0238)    LCD_write(*(data + i), L_R);
    055B 2F26      MOV	R18,R22
    055C 2FE4      MOV	R30,R20
    055D 27FF      CLR	R31
    055E 0DEA      ADD	R30,R10
    055F 1DFB      ADC	R31,R11
    0560 9104      LD	R16,R16
    0561 DEF4      RCALL	_LCD_write
    0562 9543      INC	R20
    0563 3140      CPI	R20,0x10
    0564 F3B0      BCS	0x055B
(0239)   }
(0240)  
(0241)   LCD_write_data(x, y + 1, *(data + 16), L_R);
    0565 836A      STD	R22,2+Y
    0566 01F5      MOVW	R30,R10
    0567 9670      ADIW	R30,0x10
    0568 91E4      LD	R30,R30
    0569 83E8      STD	R30,0+Y
    056A 2D2C      MOV	R18,R12
    056B 5F2F      SUBI	R18,0xFF
    056C 2D0E      MOV	R16,R14
    056D DF04      RCALL	_LCD_write_data
(0242)   for (i = 16; i < 32; i++)
    056E E140      LDI	R20,0x10
    056F C008      RJMP	0x0578
(0243)   {
(0244)   LCD_write(*(data + i), L_R);
    0570 2F26      MOV	R18,R22
    0571 2FE4      MOV	R30,R20
    0572 27FF      CLR	R31
    0573 0DEA      ADD	R30,R10
    0574 1DFB      ADC	R31,R11
    0575 9104      LD	R16,R16
    0576 DEDF      RCALL	_LCD_write
    0577 9543      INC	R20
    0578 3240      CPI	R20,0x20
    0579 F3B0      BCS	0x0570
(0245)     
(0246) 
(0247)   }
(0248) }
    057A 9623      ADIW	R28,3
    057B 940E1FD3  CALL	pop_gset5
    057D 9508      RET
_LCD_China_ini:
  j                    --> R20
  p                    --> R22
  i                    --> R14
  L_R                  --> R10
  data                 --> R12
  y                    --> Y+15
  x                    --> Y+13
    057E 940E1F73  CALL	push_arg4
    0580 940E1FC9  CALL	push_gset5
    0582 9723      SBIW	R28,3
    0583 88C9      LDD	R12,17+Y
    0584 88DA      LDD	R13,18+Y
    0585 88AB      LDD	R10,19+Y
(0249) ///////////////////////////////////////////////
(0250) void LCD_China_ini(char x, char y, unsigned char const *data, char L_R)
(0251) {
(0252) 
(0253)   char i,j,p=0;
    0586 2766      CLR	R22
(0254)   LED_ini();
    0587 DF09      RCALL	_LED_ini
(0255)   for(j=0;j<4;j++)
    0588 2744      CLR	R20
    0589 C01B      RJMP	0x05A5
(0256)   {
(0257)     
(0258)     LCD_write_data(x, y+j, *(data+p), L_R);
    058A 82AA      STD	R10,2+Y
    058B 2FE6      MOV	R30,R22
    058C 27FF      CLR	R31
    058D 0DEC      ADD	R30,R12
    058E 1DFD      ADC	R31,R13
    058F 91E4      LD	R30,R30
    0590 83E8      STD	R30,0+Y
    0591 852F      LDD	R18,15+Y
    0592 0F24      ADD	R18,R20
    0593 850D      LDD	R16,13+Y
    0594 DEDD      RCALL	_LCD_write_data
(0259) 	
(0260) 	for (i = p; i < p+32; i++)
    0595 2EE6      MOV	R14,R22
    0596 C008      RJMP	0x059F
(0261)     {
(0262)       LCD_write(*(data + i), L_R);
    0597 2D2A      MOV	R18,R10
    0598 2DEE      MOV	R30,R14
    0599 27FF      CLR	R31
    059A 0DEC      ADD	R30,R12
    059B 1DFD      ADC	R31,R13
    059C 9104      LD	R16,R16
    059D DEB8      RCALL	_LCD_write
    059E 94E3      INC	R14
    059F 2F86      MOV	R24,R22
    05A0 5E80      SUBI	R24,0xE0
    05A1 16E8      CP	R14,R24
    05A2 F3A0      BCS	0x0597
(0263)     }
(0264) 	p=p+32;
    05A3 5E60      SUBI	R22,0xE0
    05A4 9543      INC	R20
    05A5 3044      CPI	R20,4
    05A6 F318      BCS	0x058A
(0265)   }
(0266) }
    05A7 9623      ADIW	R28,3
    05A8 940E1FD3  CALL	pop_gset5
    05AA 9624      ADIW	R28,4
    05AB 9508      RET
_LCD_char:
  i                    --> R20
  L_R                  --> R22
  data                 --> R10
  y                    --> R12
  x                    --> R14
    05AC 940E1FC9  CALL	push_gset5
    05AE 2EC2      MOV	R12,R18
    05AF 2EE0      MOV	R14,R16
    05B0 9723      SBIW	R28,3
    05B1 84AD      LDD	R10,13+Y
    05B2 84BE      LDD	R11,14+Y
    05B3 856F      LDD	R22,15+Y
(0267) //////////////////////////////////////////////////////////////////////
(0268) void LCD_char(char x,char y,unsigned char const *data,char L_R)
(0269) {
(0270)   char i;
(0271)   LCD_write_data(x, y, *data, L_R);
    05B4 836A      STD	R22,2+Y
    05B5 01F5      MOVW	R30,R10
    05B6 91E4      LD	R30,R30
    05B7 83E8      STD	R30,0+Y
    05B8 2D2C      MOV	R18,R12
    05B9 2D0E      MOV	R16,R14
    05BA DEB7      RCALL	_LCD_write_data
(0272)   for (i = 1; i < 8; i++)
    05BB E041      LDI	R20,1
    05BC C008      RJMP	0x05C5
(0273)   {
(0274)    LCD_write(*(data + i), L_R);
    05BD 2F26      MOV	R18,R22
    05BE 2FE4      MOV	R30,R20
    05BF 27FF      CLR	R31
    05C0 0DEA      ADD	R30,R10
    05C1 1DFB      ADC	R31,R11
    05C2 9104      LD	R16,R16
    05C3 DE92      RCALL	_LCD_write
    05C4 9543      INC	R20
    05C5 3048      CPI	R20,0x8
    05C6 F3B0      BCS	0x05BD
(0275)   }
(0276)  
(0277)   LCD_write_data(x, y + 1, *(data + 8), L_R);
    05C7 836A      STD	R22,2+Y
    05C8 01F5      MOVW	R30,R10
    05C9 9638      ADIW	R30,0x8
    05CA 91E4      LD	R30,R30
    05CB 83E8      STD	R30,0+Y
    05CC 2D2C      MOV	R18,R12
    05CD 5F2F      SUBI	R18,0xFF
    05CE 2D0E      MOV	R16,R14
    05CF DEA2      RCALL	_LCD_write_data
(0278)   for (i = 9; i < 16; i++)
    05D0 E049      LDI	R20,0x9
    05D1 C008      RJMP	0x05DA
(0279)   {
(0280)   LCD_write(*(data + i), L_R);
    05D2 2F26      MOV	R18,R22
    05D3 2FE4      MOV	R30,R20
    05D4 27FF      CLR	R31
    05D5 0DEA      ADD	R30,R10
    05D6 1DFB      ADC	R31,R11
    05D7 9104      LD	R16,R16
    05D8 DE7D      RCALL	_LCD_write
    05D9 9543      INC	R20
    05DA 3140      CPI	R20,0x10
    05DB F3B0      BCS	0x05D2
(0281)   }
(0282) }
    05DC 9623      ADIW	R28,3
    05DD 940E1FD3  CALL	pop_gset5
    05DF 9508      RET
_return_last:
  n                    --> R20
    05E0 940E1FA6  CALL	push_gset1
    05E2 2F40      MOV	R20,R16
    05E3 9723      SBIW	R28,3
(0283) 
(0284) 
(0285) /*void LCD_pic(char x,char y,unsigned char const *data,char L_R)
(0286) {
(0287)   int i,j;
(0288)    int p=0;
(0289)   LED_ini();
(0290)   for(j=0;j<8;j++)
(0291)   {
(0292)     
(0293)     LCD_write_data(x, y+j, *(data+p), L_R);
(0294) 	
(0295) 	for (i = p; i < p+64; i++)
(0296)     {
(0297)       LCD_write(*(data + i), L_R);
(0298)     }
(0299) 	p=p+64;
(0300)   }
(0301)   
(0302) }*/
(0303) /////////////////////////////////////////////////////////////
(0304) void return_last(unsigned char n)
(0305) {
(0306)   LCD_China(0,n,fan,0);
    05E4 2422      CLR	R2
    05E5 822A      STD	R2,2+Y
    05E6 E380      LDI	R24,0x30
    05E7 E095      LDI	R25,5
    05E8 8388      STD	R24,0+Y
    05E9 8399      STD	R25,1+Y
    05EA 2F24      MOV	R18,R20
    05EB 2700      CLR	R16
    05EC DF5D      RCALL	_LCD_China
(0307)   LCD_China(17,n,hui,0);
    05ED 2422      CLR	R2
    05EE 822A      STD	R2,2+Y
    05EF E580      LDI	R24,0x50
    05F0 E095      LDI	R25,5
    05F1 8388      STD	R24,0+Y
    05F2 8399      STD	R25,1+Y
    05F3 2F24      MOV	R18,R20
    05F4 E101      LDI	R16,0x11
    05F5 DF54      RCALL	_LCD_China
(0308)   LCD_China(33,n,qing3,0);
    05F6 2422      CLR	R2
    05F7 822A      STD	R2,2+Y
    05F8 EE80      LDI	R24,0xE0
    05F9 E095      LDI	R25,5
    05FA 8388      STD	R24,0+Y
    05FB 8399      STD	R25,1+Y
    05FC 2F24      MOV	R18,R20
    05FD E201      LDI	R16,0x21
    05FE DF4B      RCALL	_LCD_China
(0309)   LCD_China(49,n,an,0);
    05FF 2422      CLR	R2
    0600 822A      STD	R2,2+Y
    0601 E080      LDI	R24,0
    0602 E096      LDI	R25,6
    0603 8388      STD	R24,0+Y
    0604 8399      STD	R25,1+Y
    0605 2F24      MOV	R18,R20
    0606 E301      LDI	R16,0x31
    0607 DF42      RCALL	_LCD_China
(0310)   LCD_char(20,n,EE,1);
    0608 E081      LDI	R24,1
    0609 838A      STD	R24,2+Y
    060A E780      LDI	R24,0x70
    060B E095      LDI	R25,5
    060C 8388      STD	R24,0+Y
    060D 8399      STD	R25,1+Y
    060E 2F24      MOV	R18,R20
    060F E104      LDI	R16,0x14
    0610 DF9B      RCALL	_LCD_char
(0311)   LCD_char(28,n,s,1);
    0611 E081      LDI	R24,1
    0612 838A      STD	R24,2+Y
    0613 EB80      LDI	R24,0xB0
    0614 E094      LDI	R25,4
    0615 8388      STD	R24,0+Y
    0616 8399      STD	R25,1+Y
    0617 2F24      MOV	R18,R20
    0618 E10C      LDI	R16,0x1C
    0619 DF92      RCALL	_LCD_char
(0312)   LCD_char(36,n,c,1);
    061A E081      LDI	R24,1
    061B 838A      STD	R24,2+Y
    061C EB80      LDI	R24,0xB0
    061D E093      LDI	R25,3
    061E 8388      STD	R24,0+Y
    061F 8399      STD	R25,1+Y
    0620 2F24      MOV	R18,R20
    0621 E204      LDI	R16,0x24

⌨️ 快捷键说明

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