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

📄 main.lis

📁 meg16 的所有功能实例
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -