📄 ps2_study.lst
字号:
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 + -