📄 main.lis
字号:
0000 ; uint16 NUM_YOUR; //走的步数
0000 ;
0000 ; uint8 guanshu; //第几局
0000 ; uint8 disp_buffer[5][4]; //显示缓存区
0000 ;
0000 ;
0000 ; uint8 disp1_buffer[5][4]={ //第一局开局棋子布局
0000 ; {0x11,0x41,0x41,0x13},
0000 ; {0x12,0x41,0x41,0x14},
0000 ; {0x21,0x31,0x31,0x24},
0000 ; {0x21,0x22,0x23,0x24},
0000 ; {0x00,0x22,0x23,0x00},
0000 ; };
0000 ; uint8 disp2_buffer[5][4]={ //第二局开局棋子布局
0000 ; {0x11,0x41,0x41,0x13},
0000 ; {0x12,0x41,0x41,0x14},
0000 ; {0x31,0x31,0x32,0x32},
0000 ; {0x33,0x33,0x34,0x34},
0000 ; {0x00,0x35,0x35,0x00},
0000 ; };
0000 ;
0000 ;
0000 ; //=======================================================================
0000 ; //延时函数
0000 ; void Delay_us(uint16 time)
0000 ; {while (time--)
0000 01C0 xjmp L3
0002 L2:
0002 .dbline 59
0002 A895 wdr
0004 L3:
0004 .dbline 58
0004 1801 movw R2,R16
0006 0150 subi R16,1
0008 1040 sbci R17,0
000A 2220 tst R2
000C D1F7 brne L2
000E 3320 tst R3
0010 C1F7 brne L2
0012 X0:
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r time 16 i
0014 .dbend
0014 .dbfunc e Delay_ms _Delay_ms fV
0014 ; time -> R20,R21
.even
0014 _Delay_ms::
0014 0E940000 xcall push_gset1
0018 A801 movw R20,R16
001A .dbline -1
001A .dbline 63
001A ; _WDR();
001A ;
001A ; }
001A ; void Delay_ms(uint16 time)
001A ; {while (time--)
001A 03C0 xjmp L7
001C L6:
001C .dbline 64
001C 00EB ldi R16,1200
001E 14E0 ldi R17,4
0020 EFDF xcall _Delay_us
0022 L7:
0022 .dbline 63
0022 1A01 movw R2,R20
0024 4150 subi R20,1
0026 5040 sbci R21,0
0028 2220 tst R2
002A C1F7 brne L6
002C 3320 tst R3
002E B1F7 brne L6
0030 X1:
0030 .dbline -2
0030 L5:
0030 0E940000 xcall pop_gset1
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r time 20 i
0036 .dbend
0036 .dbfunc e main _main fV
0036 ; i -> R20
0036 ; j -> R22
.even
0036 _main::
0036 2697 sbiw R28,6
0038 .dbline -1
0038 .dbline 71
0038 ; Delay_us(1200);
0038 ; }
0038 ;
0038 ;
0038 ; //=======================================================================
0038 ; //主函数
0038 ; void main(void)
0038 ; {
0038 .dbline 73
0038 ; uint8 i,j;
0038 ; guanshu=1;
0038 81E0 ldi R24,1
003A 80931400 sts _guanshu,R24
003E .dbline 74
003E ; NUM_BEST=100;
003E 84E6 ldi R24,100
0040 90E0 ldi R25,0
0042 90931800 sts _NUM_BEST+1,R25
0046 80931700 sts _NUM_BEST,R24
004A .dbline 76
004A ;
004A ; SETBIT(DDRC,BACKLED_EN); //配置背光控制端口
004A A79A sbi 0x14,7
004C .dbline 77
004C ; CLEARBIT(PORTC,BACKLED_EN); //使能背光
004C AF98 cbi 0x15,7
004E .dbline 79
004E ;
004E ; LCD_init(); //初始化LCD模块
004E 0E94970E xcall _LCD_init
0052 48C1 xjmp L11
0054 L10:
0054 .dbline 82
0054 ;
0054 ; while(1) //总循环
0054 ; {
0054 .dbline 83
0054 ; LCD_clear(); //清屏
0054 0E94B40E xcall _LCD_clear
0058 .dbline 86
0058 ;
0058 ; //显示数据界面
0058 ; LCD_write_String(34,0,8,"YOUR:000",0);
0058 2224 clr R2
005A 3324 clr R3
005C 3D82 std y+5,R3
005E 2C82 std y+4,R2
0060 80E0 ldi R24,<L13
0062 90E0 ldi R25,>L13
0064 9B83 std y+3,R25
0066 8A83 std y+2,R24
0068 88E0 ldi R24,8
006A 90E0 ldi R25,0
006C 9983 std y+1,R25
006E 8883 std y+0,R24
0070 2227 clr R18
0072 3327 clr R19
0074 02E2 ldi R16,34
0076 10E0 ldi R17,0
0078 0E94140F xcall _LCD_write_String
007C .dbline 87
007C ; LCD_write_String(34,1,8,"BEST:000",0);
007C 2224 clr R2
007E 3324 clr R3
0080 3D82 std y+5,R3
0082 2C82 std y+4,R2
0084 80E0 ldi R24,<L14
0086 90E0 ldi R25,>L14
0088 9B83 std y+3,R25
008A 8A83 std y+2,R24
008C 88E0 ldi R24,8
008E 90E0 ldi R25,0
0090 9983 std y+1,R25
0092 8883 std y+0,R24
0094 21E0 ldi R18,1
0096 30E0 ldi R19,0
0098 02E2 ldi R16,34
009A 10E0 ldi R17,0
009C 0E94140F xcall _LCD_write_String
00A0 .dbline 88
00A0 ; LCD_write_String(34,3,8,"GUAN:001",0);
00A0 2224 clr R2
00A2 3324 clr R3
00A4 3D82 std y+5,R3
00A6 2C82 std y+4,R2
00A8 80E0 ldi R24,<L15
00AA 90E0 ldi R25,>L15
00AC 9B83 std y+3,R25
00AE 8A83 std y+2,R24
00B0 88E0 ldi R24,8
00B2 90E0 ldi R25,0
00B4 9983 std y+1,R25
00B6 8883 std y+0,R24
00B8 23E0 ldi R18,3
00BA 30E0 ldi R19,0
00BC 02E2 ldi R16,34
00BE 10E0 ldi R17,0
00C0 0E94140F xcall _LCD_write_String
00C4 .dbline 90
00C4 ;
00C4 ; NUMdisp_task(NUM_BEST,1); //显示最好成绩
00C4 21E0 ldi R18,1
00C6 30E0 ldi R19,0
00C8 00911700 lds R16,_NUM_BEST
00CC 10911800 lds R17,_NUM_BEST+1
00D0 0E94380E xcall _NUMdisp_task
00D4 .dbline 91
00D4 ; NUMdisp_task(guanshu,3); //显示第几关
00D4 23E0 ldi R18,3
00D6 30E0 ldi R19,0
00D8 00911400 lds R16,_guanshu
00DC 1127 clr R17
00DE 0E94380E xcall _NUMdisp_task
00E2 .dbline 94
00E2 ;
00E2 ; //一切变量都重新初始化
00E2 ; key_init();
00E2 03D1 xcall _key_init
00E4 .dbline 95
00E4 ; key_state=0;
00E4 2224 clr R2
00E6 20921E00 sts _key_state,R2
00EA .dbline 96
00EA ; key_value=0;
00EA 20921D00 sts _key_value,R2
00EE .dbline 97
00EE ; key_last_value=0;
00EE 20921C00 sts _key_last_value,R2
00F2 .dbline 98
00F2 ; key_one=1;
00F2 81E0 ldi R24,1
00F4 80931B00 sts _key_one,R24
00F8 .dbline 99
00F8 ; X=0;
00F8 20921A00 sts _X,R2
00FC .dbline 100
00FC ; Y=0;
00FC 20921900 sts _Y,R2
0100 .dbline 101
0100 ; NUM_YOUR=0;
0100 3324 clr R3
0102 30921600 sts _NUM_YOUR+1,R3
0106 20921500 sts _NUM_YOUR,R2
010A .dbline 102
010A ; SEI(); //全局中断使能
010A 7894 sei
010C 20C0 xjmp L17
010E L16:
010E .dbline 104
010E ; while(1) //选关
010E ; {
010E .dbline 106
010E ;
010E ; if(key_value==Down)
010E 80911D00 lds R24,_key_value
0112 803F cpi R24,240
0114 A1F4 brne L19
0116 .dbline 107
0116 ; {
0116 .dbline 108
0116 ; key_value=0;
0116 2224 clr R2
0118 20921D00 sts _key_value,R2
011C .dbline 109
011C ; guanshu++;
011C 80911400 lds R24,_guanshu
0120 8F5F subi R24,255 ; addi 1
0122 80931400 sts _guanshu,R24
0126 .dbline 110
0126 ; if(guanshu==3)
0126 8330 cpi R24,3
0128 19F4 brne L21
012A .dbline 111
012A ; guanshu=1;
012A 81E0 ldi R24,1
012C 80931400 sts _guanshu,R24
0130 L21:
0130 .dbline 112
0130 ; NUMdisp_task(guanshu,3);
0130 23E0 ldi R18,3
0132 30E0 ldi R19,0
0134 00911400 lds R16,_guanshu
0138 1127 clr R17
013A 0E94380E xcall _NUMdisp_task
013E .dbline 113
013E ; }
013E L19:
013E .dbline 114
013E ; if(key_value==Enter) //按确定选关完成
013E 80911D00 lds R24,_key_value
0142 883D cpi R24,216
0144 21F4 brne L23
0146 .dbline 115
0146 ; {
0146 .dbline 116
0146 ; key_value=0;
0146 2224 clr R2
0148 20921D00 sts _key_value,R2
014C .dbline 117
014C ; break;
014C 01C0 xjmp L18
014E L23:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -