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

📄 ps2_study.lst

📁 基于ps/2接口协议的键盘学习机,采用128*64LCD显示,使用单片机为,mega16
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0622 DF89      RCALL	_LCD_char
(0313) }
    0623 9623      ADIW	R28,3
    0624 940E1FA9  CALL	pop_gset1
    0626 9508      RET
_Meu_ini:
  i                    --> R20
    0627 940E1FA6  CALL	push_gset1
    0629 9723      SBIW	R28,3
(0314) //////////////////////////////////////////////////////////////////////////
(0315) 
(0316) void Meu_ini(void)
(0317) {
(0318)   char i=0;
    062A 2744      CLR	R20
(0319)   LCD_write_command(0xc0, 0);//初始化x,y地址
    062B 2722      CLR	R18
    062C EC00      LDI	R16,0xC0
    062D DE36      RCALL	_LCD_write_command
(0320)   LCD_write_command(0xc0, 1);//初始化x,y地址
    062E E021      LDI	R18,1
    062F EC00      LDI	R16,0xC0
    0630 DE33      RCALL	_LCD_write_command
(0321)   LCD_China_ini(0,4,zhao,0);
    0631 2422      CLR	R2
    0632 822A      STD	R2,2+Y
    0633 E680      LDI	R24,0x60
    0634 E090      LDI	R25,0
    0635 8388      STD	R24,0+Y
    0636 8399      STD	R25,1+Y
    0637 E024      LDI	R18,4
    0638 2700      CLR	R16
    0639 DF44      RCALL	_LCD_China_ini
(0322)   LCD_China_ini(32,4,qing,0);
    063A 2422      CLR	R2
    063B 822A      STD	R2,2+Y
    063C EE80      LDI	R24,0xE0
    063D E090      LDI	R25,0
    063E 8388      STD	R24,0+Y
    063F 8399      STD	R25,1+Y
    0640 E024      LDI	R18,4
    0641 E200      LDI	R16,0x20
    0642 DF3B      RCALL	_LCD_China_ini
(0323)   LCD_China_ini(0,4,xue,1);
    0643 E081      LDI	R24,1
    0644 838A      STD	R24,2+Y
    0645 E680      LDI	R24,0x60
    0646 E091      LDI	R25,1
    0647 8388      STD	R24,0+Y
    0648 8399      STD	R25,1+Y
    0649 E024      LDI	R18,4
    064A 2700      CLR	R16
    064B DF32      RCALL	_LCD_China_ini
(0324)   LCD_China_ini(32,4,yuan,1);
    064C E081      LDI	R24,1
    064D 838A      STD	R24,2+Y
    064E EE80      LDI	R24,0xE0
    064F E091      LDI	R25,1
    0650 8388      STD	R24,0+Y
    0651 8399      STD	R25,1+Y
    0652 E024      LDI	R18,4
    0653 E200      LDI	R16,0x20
    0654 DF29      RCALL	_LCD_China_ini
    0655 C00C      RJMP	0x0662
(0325)   
(0326)   while (17 != i)
(0327)  {
(0328)   Delaynms(90);
    0656 E50A      LDI	R16,0x5A
    0657 E010      LDI	R17,0
    0658 DEC4      RCALL	_Delaynms
(0329)   LCD_write_command(0Xc0 | i, 0);
    0659 2722      CLR	R18
    065A 2F04      MOV	R16,R20
    065B 6C00      ORI	R16,0xC0
    065C DE07      RCALL	_LCD_write_command
(0330)   LCD_write_command(0Xc0 | i, 1);
    065D E021      LDI	R18,1
    065E 2F04      MOV	R16,R20
    065F 6C00      ORI	R16,0xC0
    0660 DE03      RCALL	_LCD_write_command
(0331)   i++;
    0661 9543      INC	R20
    0662 3141      CPI	R20,0x11
    0663 F791      BNE	0x0656
(0332)  }
(0333)  LCD_China(1,8,dian,0);
    0664 2422      CLR	R2
    0665 822A      STD	R2,2+Y
    0666 E680      LDI	R24,0x60
    0667 E092      LDI	R25,2
    0668 8388      STD	R24,0+Y
    0669 8399      STD	R25,1+Y
    066A E028      LDI	R18,0x8
    066B E001      LDI	R16,1
    066C DEDD      RCALL	_LCD_China
(0334)  LCD_China(22,8,zhi,0);
    066D 2422      CLR	R2
    066E 822A      STD	R2,2+Y
    066F E880      LDI	R24,0x80
    0670 E092      LDI	R25,2
    0671 8388      STD	R24,0+Y
    0672 8399      STD	R25,1+Y
    0673 E028      LDI	R18,0x8
    0674 E106      LDI	R16,0x16
    0675 DED4      RCALL	_LCD_China
(0335)  LCD_China(43,8,xin,0);
    0676 2422      CLR	R2
    0677 822A      STD	R2,2+Y
    0678 EA80      LDI	R24,0xA0
    0679 E092      LDI	R25,2
    067A 8388      STD	R24,0+Y
    067B 8399      STD	R25,1+Y
    067C E028      LDI	R18,0x8
    067D E20B      LDI	R16,0x2B
    067E DECB      RCALL	_LCD_China
(0336)  LCD_China(1,8,xi,1);
    067F E081      LDI	R24,1
    0680 838A      STD	R24,2+Y
    0681 EC80      LDI	R24,0xC0
    0682 E092      LDI	R25,2
    0683 8388      STD	R24,0+Y
    0684 8399      STD	R25,1+Y
    0685 E028      LDI	R18,0x8
    0686 E001      LDI	R16,1
    0687 DEC2      RCALL	_LCD_China
(0337)  LCD_China(22,8,gong,1);
    0688 E081      LDI	R24,1
    0689 838A      STD	R24,2+Y
    068A EE80      LDI	R24,0xE0
    068B E092      LDI	R25,2
    068C 8388      STD	R24,0+Y
    068D 8399      STD	R25,1+Y
    068E E028      LDI	R18,0x8
    068F E106      LDI	R16,0x16
    0690 DEB9      RCALL	_LCD_China
(0338)  LCD_China(43,8,cheng,1);
    0691 E081      LDI	R24,1
    0692 838A      STD	R24,2+Y
    0693 E080      LDI	R24,0
    0694 E093      LDI	R25,3
    0695 8388      STD	R24,0+Y
    0696 8399      STD	R25,1+Y
    0697 E028      LDI	R18,0x8
    0698 E20B      LDI	R16,0x2B
    0699 DEB0      RCALL	_LCD_China
    069A C00C      RJMP	0x06A7
(0339)  while (32!= i)
(0340)  {
(0341)   Delaynms(90);
    069B E50A      LDI	R16,0x5A
    069C E010      LDI	R17,0
    069D DE7F      RCALL	_Delaynms
(0342)   LCD_write_command(0Xc0 | i, 0);
    069E 2722      CLR	R18
    069F 2F04      MOV	R16,R20
    06A0 6C00      ORI	R16,0xC0
    06A1 DDC2      RCALL	_LCD_write_command
(0343)   LCD_write_command(0Xc0 | i, 1);
    06A2 E021      LDI	R18,1
    06A3 2F04      MOV	R16,R20
    06A4 6C00      ORI	R16,0xC0
    06A5 DDBE      RCALL	_LCD_write_command
(0344)   i++;
    06A6 9543      INC	R20
    06A7 3240      CPI	R20,0x20
    06A8 F791      BNE	0x069B
(0345)  }
(0346)  LCD_China(40,10,cai,0);
    06A9 2422      CLR	R2
    06AA 822A      STD	R2,2+Y
    06AB E280      LDI	R24,0x20
    06AC E093      LDI	R25,3
    06AD 8388      STD	R24,0+Y
    06AE 8399      STD	R25,1+Y
    06AF E02A      LDI	R18,0xA
    06B0 E208      LDI	R16,0x28
    06B1 DE98      RCALL	_LCD_China
(0347)  LCD_China(0,10,chu,1);
    06B2 E081      LDI	R24,1
    06B3 838A      STD	R24,2+Y
    06B4 E480      LDI	R24,0x40
    06B5 E093      LDI	R25,3
    06B6 8388      STD	R24,0+Y
    06B7 8399      STD	R25,1+Y
    06B8 E02A      LDI	R18,0xA
    06B9 2700      CLR	R16
    06BA DE8F      RCALL	_LCD_China
(0348)  LCD_China(23,10,bin,1);
    06BB E081      LDI	R24,1
    06BC 838A      STD	R24,2+Y
    06BD E680      LDI	R24,0x60
    06BE E093      LDI	R25,3
    06BF 8388      STD	R24,0+Y
    06C0 8399      STD	R25,1+Y
    06C1 E02A      LDI	R18,0xA
    06C2 E107      LDI	R16,0x17
    06C3 DE86      RCALL	_LCD_China
(0349)  i = 24;
    06C4 E148      LDI	R20,0x18
    06C5 C003      RJMP	0x06C9
(0350)  while (i--)
(0351)  {
(0352)   Delaynms(90);
    06C6 E50A      LDI	R16,0x5A
    06C7 E010      LDI	R17,0
    06C8 DE54      RCALL	_Delaynms
    06C9 2E24      MOV	R2,R20
    06CA 2433      CLR	R3
    06CB 5041      SUBI	R20,1
    06CC 2022      TST	R2
    06CD F7C1      BNE	0x06C6
(0353)  }
(0354)  LCD_clear();
    06CE DDD9      RCALL	_LCD_clear
(0355)  LCD_write_command(0Xc0, 0);
    06CF 2722      CLR	R18
    06D0 EC00      LDI	R16,0xC0
    06D1 DD92      RCALL	_LCD_write_command
(0356)  LCD_write_command(0Xc0, 1);
    06D2 E021      LDI	R18,1
    06D3 EC00      LDI	R16,0xC0
    06D4 DD8F      RCALL	_LCD_write_command
(0357)  
(0358) }
    06D5 9623      ADIW	R28,3
    06D6 940E1FA9  CALL	pop_gset1
    06D8 9508      RET
(0359) //////////////////////////////////////////////////////
(0360) void usart_init(void)
(0361) {
(0362) UCSRB=0X00;
_usart_init:
    06D9 2422      CLR	R2
    06DA B82A      OUT	P0A,R2
(0363)   UCSRC=(1<<URSEL)|(1<<UMSEL)|(1<<UPM0)|(1<<UPM1)|(3<<UCSZ0);
    06DB EF86      LDI	R24,0xF6
    06DC BD80      OUT	P20,R24
(0364)   //UCSRC=BIT(URSEL)|0x06|(1<<UPM1)|(1<<UPM0);//设置数据位数
(0365)   ///UBRRH=0x33;//set band
(0366)   //UBRRL=0X00;
(0367)   UBRRH=0x00;//set band
    06DD BC20      OUT	P20,R2
(0368)   UBRRL=0X27;
    06DE E287      LDI	R24,0x27
    06DF B989      OUT	P09,R24
(0369)   UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//数据接收和发送允许,接收完成中断允许
    06E0 E988      LDI	R24,0x98
    06E1 B98A      OUT	P0A,R24
(0370) //SEI();
(0371) }
    06E2 9508      RET
(0372) void time0_init(void)
(0373) {
(0374)   //TCCR0=(1<<CS00);//8分频
(0375)   TCCR0=0x00;//8分频
_time0_init:
    06E3 2422      CLR	R2
    06E4 BE23      OUT	P33,R2
(0376)   TCNT0=0X38;
    06E5 E388      LDI	R24,0x38
    06E6 BF82      OUT	P32,R24
(0377)   TIMSK=(1<<TOIE0);
    06E7 E081      LDI	R24,1
    06E8 BF89      OUT	P39,R24
(0378) }
    06E9 9508      RET
_timer0_ovf_isr:
    06EA 922A      ST	R2,-Y
    06EB 923A      ST	R3,-Y
    06EC 938A      ST	R24,-Y
    06ED 939A      ST	R25,-Y
    06EE 93EA      ST	R30,-Y
    06EF B62F      IN	R2,P3F
    06F0 922A      ST	R2,-Y
(0379) ////////////////////////////////
(0380) #pragma interrupt_handler timer0_ovf_isr:10
(0381) void timer0_ovf_isr(void)
(0382) {
(0383)  flag_time0++;
    06F1 91800088  LDS	R24,0x88
    06F3 5F8F      SUBI	R24,0xFF
    06F4 93800088  STS	R24,0x88
(0384)  if(flag_time0==5)
    06F6 3085      CPI	R24,5
    06F7 F4D1      BNE	0x0712
(0385)  {
(0386)    flag_time0=0;
    06F8 2422      CLR	R2
    06F9 92200088  STS	R2,0x88
(0387)    flag_ms++;
    06FB 9180008B  LDS	R24,0x8B
    06FD 9190008C  LDS	R25,0x8C
    06FF 9601      ADIW	R24,1
    0700 9390008C  STS	R25,0x8C
    0702 9380008B  STS	R24,0x8B
(0388)    if(flag_ms==1000)
    0704 3E88      CPI	R24,0xE8
    0705 E0E3      LDI	R30,3
    0706 079E      CPC	R25,R30
    0707 F451      BNE	0x0712
(0389)    {
(0390)      flag_ms=0;
    0708 2433      CLR	R3
    0709 9230008C  STS	R3,0x8C
    070B 9220008B  STS	R2,0x8B
(0391)      flag_ts++;
    070D 9180008A  LDS	R24,0x8A
    070F 5F8F      SUBI	R24,0xFF
    0710 9380008A  STS	R24,0x8A
(0392)    }
(0393)  }
(0394)  TCNT0 = 0x38;//reload counter value
    0712 E388      LDI	R24,0x38
    0713 BF82      OUT	P32,R24
(0395) }
    0714 9029      LD	R2,Y+
    0715 BE2F      OUT	P3F,R2
    0716 91E9      LD	R30,Y+
    0717 9199      LD	R25,Y+
    0718 9189      LD	R24,Y+
    0719 9039      LD	R3,Y+
    071A 9029      LD	R2,Y+
    071B 9518      RETI
_char_display:
    071C 9723      SBIW	R28,3
(0396) /////////////////////////////////////////////////////
(0397) void char_display(void)
(0398) {
(0399)   if(flag_char1==1)
    071D 91800062  LDS	R24,0x62
    071F 3081      CPI	R24,1
    0720 F009      BEQ	0x0722
    0721 C149      RJMP	0x086B
(0400)   {
(0401)     LCD_clear();
    0722 DD85      RCALL	_LCD_clear
(0402)   LCD_char(9,0,b,0);
    0723 2422      CLR	R2
    0724 822A      STD	R2,2+Y
    0725 EA80      LDI	R24,0xA0
    0726 E093      LDI	R25,3
    0727 8388      STD	R24,0+Y
    0728 8399      STD	R25,1+Y
    0729 2722      CLR	R18
    072A E009      LDI	R16,0x9
    072B DE80      RCALL	_LCD_char
(0403)    LCD_char(27,0,d,0);
    072C 2422      CLR	R2
    072D 822A      STD	R2,2+Y
    072E EC80      LDI	R24,0xC0
    072F E093      LDI	R25,3
    0730 8388      STD	R24,0+Y
    0731 8399      STD	R25,1+Y
    0732 2722      CLR	R18
    0733 E10B      LDI	R16,0x1B
    0734 DE77      RCALL	_LCD_char
(0404)    LCD_char(36,0,e,0);
    0735 2422      CLR	R2
    0736 822A      STD	R2,2+Y
    0737 ED80      LDI	R24,0xD0
    0738 E093      LDI	R25,3
    0739 8388      STD	R24,0+Y
    073A 8399      STD	R25,1+Y
    073B 2722      CLR	R18
    073C E204      LDI	R16,0x24
    073D DE6E      RCALL	_LCD_char
(0405)    LCD_char(54,0,g,0);
    073E 2422      CLR	R2
    073F 822A      STD	R2,2+Y
    0740 EF80      LDI	R24,0xF0
    0741 E093      LDI	R25,3
    0742 8388      STD	R24,0+Y
    0743 8399      STD	R25,1+Y
    0744 2722      CLR	R18
    0745 E306      LDI	R16,0x36
    0746 DE65      RCALL	_LCD_char
(0406)    LCD_char(9,4,i,0);
    0747 2422      CLR	R2
    0748 822A      STD	R2,2+Y
    0749 E180      LDI	R24,0x10
    074A E094      LDI	R25,4
    074B 8388      STD	R24,0+Y
    074C 8399      STD	R25,1+Y
    074D E024      LDI	R18,4
    074E E009      LDI	R16,0x9
    074F DE5C      RCALL	_LCD_char
(0407)    LCD_char(18,4,j,0);
    0750 2422      CLR	R2
    0751 822A      STD	R2,2+Y
    0752 E280      LDI	R24,0x20
    0753 E094      LDI	R25,4
    0754 8388      STD	R24,0+Y
    0755 8399      STD	R25,1+Y
    0756 E024      LDI	R18,4
    0757 E102      LDI	R16,0x12
    0758 DE53      RCALL	_LCD_char
(0408)    LCD_char(36,4,l,0);
    0759 2422      CLR	R2
    075A 822A      STD	R2,2+Y
    075B E480      LDI	R24,0x40
    075C E094      LDI	R25,4
    075D 8388      STD	R24,0+Y
    075E 8399      STD	R25,1+Y
    075F E024      LDI	R18,4
    0760 E204      LDI	R16,0x24
    0761 DE4A      RCALL	_LCD_char
(0409)    LCD_char(54,4,m,0);
    0762 2422      CLR	R2
    0763 822A      STD	R2,2+Y
    0764 E680      LDI	R24,0x60
    0765 E094      LDI	R25,4
    0766 8388      STD	R24,0+Y
    0767 8399      STD	R25,1+Y
    0768 E024      LDI	R18,4
    0769 E306      LDI	R16,0x36
    076A DE41      RCALL	_LCD_char
(0410)    LCD_char(9,0,p,1);
    076B E081      LDI	R24,1
    076C 838A      STD	R24,2+Y
    076D E880      LDI	R24,0x80
    076E E094      LDI	R25,4
    076F 8388      STD	R24,0+Y
    0770 8399      STD	R25,1+Y
    0771 2722      CLR	R18
    0772 E009      LDI	R16,0x9
    0773 DE38      RCALL	_LCD_char
(0411)    LCD_char(18,0,q,1);
    0774 E081      LDI	R24,1
    0775 838A      STD	R24,2+Y
    0776 E980      LDI	R24,0x90
    0777 E094      LDI	R25,4
    0778 8388      STD	R24,0+Y
    0779 8399      STD	R25,1+Y
    077A 2722      CLR	R18
    077B E102      LDI	R16,0x12

⌨️ 快捷键说明

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