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

📄 2.lis

📁 万年历 megal128 iccavr开发平台
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0080 B801              movw R22,R16
 0082                   .dbline -1
 0082                   .dbline 71
 0082           ; }
 0082           ; /**********************************************/
 0082           ;        /* 写汉字初始化  */
 0082           ; /**********************************************/
 0082           ; void write_hazi(unsigned xx,unsigned yy,unsigned data1,unsigned data2)
 0082           ; {
 0082                   .dbline 72
 0082           ;     ocmj_write(0xf0);
 0082 00EF              ldi R16,240
 0084 DDDF              xcall _ocmj_write
 0086                   .dbline 73
 0086           ;     ocmj_write(xx);
 0086 062F              mov R16,R22
 0088 DBDF              xcall _ocmj_write
 008A                   .dbline 74
 008A           ;     ocmj_write(yy);
 008A 042F              mov R16,R20
 008C D9DF              xcall _ocmj_write
 008E                   .dbline 75
 008E           ;     ocmj_write(data1);
 008E 0C81              ldd R16,y+4
 0090 1D81              ldd R17,y+5
 0092 D6DF              xcall _ocmj_write
 0094                   .dbline 76
 0094           ;       ocmj_write(data2);
 0094 0E81              ldd R16,y+6
 0096 1F81              ldd R17,y+7
 0098 D3DF              xcall _ocmj_write
 009A                   .dbline -2
 009A           L15:
 009A 0E940000          xcall pop_gset2
 009E                   .dbline 0 ; func end
 009E 0895              ret
 00A0                   .dbsym l data2 6 i
 00A0                   .dbsym l data1 4 i
 00A0                   .dbsym r yy 20 i
 00A0                   .dbsym r xx 22 i
 00A0                   .dbend
 00A0                   .dbfunc e scan_key _scan_key fc
 00A0           ;              i -> R22
 00A0           ;           temp -> R10
                        .even
 00A0           _scan_key::
 00A0 0E940000          xcall push_gset3
 00A4                   .dbline -1
 00A4                   .dbline 82
 00A4           ; }
 00A4           ; /**********************************************/
 00A4           ;        /* 键盘子程序  */
 00A4           ; /**********************************************/
 00A4           ; unsigned char scan_key(void)
 00A4           ; {
 00A4                   .dbline 84
 00A4           ;  unsigned char i,temp;
 00A4           ;  DDRB=0x0f;   
 00A4 8FE0              ldi R24,15
 00A6 87BB              out 0x17,R24
 00A8                   .dbline 85
 00A8           ;  PORTB=0xff;  
 00A8 8FEF              ldi R24,255
 00AA 88BB              out 0x18,R24
 00AC                   .dbline 86
 00AC           ;  for(i=0;i<4;i++)
 00AC 6627              clr R22
 00AE 5AC0              xjmp L20
 00B0           L17:
 00B0                   .dbline 87
 00B0           ;   {
 00B0                   .dbline 88
 00B0           ;    PORTB=~(1<<i); //键盘线扫描
 00B0 01E0              ldi R16,1
 00B2 162F              mov R17,R22
 00B4 0E940000          xcall lsl8
 00B8 202E              mov R2,R16
 00BA 2094              com R2
 00BC 28BA              out 0x18,R2
 00BE                   .dbline 89
 00BE           ;    delay(30);   //等待低电平稳定
 00BE 0EE1              ldi R16,30
 00C0 10E0              ldi R17,0
 00C2 9EDF              xcall _delay
 00C4                   .dbline 90
 00C4           ;    temp=PINB&0xf0;//读取键盘扫描信号,屏蔽低四位
 00C4 86B3              in R24,0x16
 00C6 807F              andi R24,240
 00C8 A82E              mov R10,R24
 00CA                   .dbline 91
 00CA           ;    if (temp!=0xf0)//如果有键按下,延时10ms消抖
 00CA 803F              cpi R24,240
 00CC 09F4              brne X1
 00CE 49C0              xjmp L21
 00D0           X1:
 00D0                   .dbline 92
 00D0           ;     {              //本程序用display代替10ms延时,
 00D0                   .dbline 93
 00D0           ;      delay(3000); //可消除显示抖动
 00D0 08EB              ldi R16,3000
 00D2 1BE0              ldi R17,11
 00D4 95DF              xcall _delay
 00D6                   .dbline 94
 00D6           ;      temp=PINB&0xf0;//再读键盘
 00D6 86B3              in R24,0x16
 00D8 807F              andi R24,240
 00DA A82E              mov R10,R24
 00DC                   .dbline 95
 00DC           ;      if (temp!=0xf0)
 00DC 803F              cpi R24,240
 00DE 09F4              brne X2
 00E0 40C0              xjmp L23
 00E2           X2:
 00E2                   .dbline 96
 00E2           ;       {
 00E2                   .dbline 97
 00E2           ;         temp&=0xf0;
 00E2 807F              andi R24,240
 00E4 A82E              mov R10,R24
 00E6                   .dbline 98
 00E6           ;         switch(temp) //计算键值
 00E6 482F              mov R20,R24
 00E8 5527              clr R21
 00EA 403B              cpi R20,176
 00EC E0E0              ldi R30,0
 00EE 5E07              cpc R21,R30
 00F0 F9F0              breq L29
 00F2 80EB              ldi R24,176
 00F4 90E0              ldi R25,0
 00F6 8417              cp R24,R20
 00F8 9507              cpc R25,R21
 00FA 2CF0              brlt L33
 00FC           L32:
 00FC 4037              cpi R20,112
 00FE E0E0              ldi R30,0
 0100 5E07              cpc R21,R30
 0102 71F0              breq L28
 0104 2CC0              xjmp L26
 0106           L33:
 0106 403D              cpi R20,208
 0108 E0E0              ldi R30,0
 010A 5E07              cpc R21,R30
 010C C9F0              breq L30
 010E 403D              cpi R20,208
 0110 E0E0              ldi R30,0
 0112 5E07              cpc R21,R30
 0114 24F1              brlt L26
 0116           L34:
 0116 403E              cpi R20,224
 0118 E0E0              ldi R30,0
 011A 5E07              cpc R21,R30
 011C C9F0              breq L31
 011E 1FC0              xjmp L26
 0120           X0:
 0120                   .dbline 99
 0120           ;          {
 0120           L28:
 0120                   .dbline 100
 0120           ;                 case 0x70:temp=15-(3-i)*4;break;
 0120 13E0              ldi R17,3
 0122 161B              sub R17,R22
 0124 04E0              ldi R16,4
 0126 0102              muls R16,R17
 0128 8FE0              ldi R24,15
 012A A82E              mov R10,R24
 012C A018              sub R10,R0
 012E                   .dbline 100
 012E 17C0              xjmp L26
 0130           L29:
 0130                   .dbline 101
 0130           ;           case 0xb0:temp=14-(3-i)*4;break;
 0130 13E0              ldi R17,3
 0132 161B              sub R17,R22
 0134 04E0              ldi R16,4
 0136 0102              muls R16,R17
 0138 8EE0              ldi R24,14
 013A A82E              mov R10,R24
 013C A018              sub R10,R0
 013E                   .dbline 101
 013E 0FC0              xjmp L26
 0140           L30:
 0140                   .dbline 102
 0140           ;           case 0xd0:temp=13-(3-i)*4;break;
 0140 13E0              ldi R17,3
 0142 161B              sub R17,R22
 0144 04E0              ldi R16,4
 0146 0102              muls R16,R17
 0148 8DE0              ldi R24,13
 014A A82E              mov R10,R24
 014C A018              sub R10,R0
 014E                   .dbline 102
 014E 07C0              xjmp L26
 0150           L31:
 0150                   .dbline 103
 0150           ;           case 0xe0:temp=12-(3-i)*4;break;
 0150 13E0              ldi R17,3
 0152 161B              sub R17,R22
 0154 04E0              ldi R16,4
 0156 0102              muls R16,R17
 0158 8CE0              ldi R24,12
 015A A82E              mov R10,R24
 015C A018              sub R10,R0
 015E                   .dbline 103
 015E                   .dbline 104
 015E           ;           default:break;                              
 015E           L26:
 015E                   .dbline 106
 015E           ;           }
 015E           ;                return temp;
 015E 0A2D              mov R16,R10
 0160 05C0              xjmp L16
 0162           L23:
 0162                   .dbline 108
 0162           ;               }
 0162           ;         }
 0162           L21:
 0162                   .dbline 109
 0162           L18:
 0162                   .dbline 86
 0162 6395              inc R22
 0164           L20:
 0164                   .dbline 86
 0164 6430              cpi R22,4
 0166 08F4              brsh X3
 0168 A3CF              xjmp L17
 016A           X3:
 016A                   .dbline 110
 016A           ;     }
 016A           ;    return 0x00;//无键按下
 016A 0027              clr R16
 016C                   .dbline -2
 016C           L16:
 016C 0E940000          xcall pop_gset3
 0170                   .dbline 0 ; func end
 0170 0895              ret
 0172                   .dbsym r i 22 c
 0172                   .dbsym r temp 10 c
 0172                   .dbend
 0172                   .dbfunc e time_display _time_display fV
                        .even
 0172           _time_display::
 0172 2497              sbiw R28,4
 0174                   .dbline -1
 0174                   .dbline 116
 0174           ; }     
 0174           ; /**********************************************/
 0174           ;        /* LCD显示小时分钟秒*/
 0174           ; /**********************************************/
 0174           ; void time_display(void)
 0174           ; {
 0174                   .dbline 117
 0174           ; write_ASCII(0xf9,4,0,table[hour/10]);//小时高位
 0174 2AE0              ldi R18,10
 0176 30E0              ldi R19,0
 0178 00910200          lds R16,_hour
 017C 1127              clr R17
 017E 0E940000          xcall div16s
 0182 F801              movw R30,R16
 0184 80E0              ldi R24,<_table
 0186 90E0              ldi R25,>_table
 0188 E80F              add R30,R24
 018A F91F              adc R31,R25
 018C 2490              lpm R2,Z
 018E 3324              clr R3
 0190 3B82              std y+3,R3
 0192 2A82              std y+2,R2
 0194 2224              clr R2
 0196 3982              std y+1,R3
 0198 2882              std y+0,R2
 019A 24E0              ldi R18,4
 019C 30E0              ldi R19,0
 019E 09EF              ldi R16,249
 01A0 10E0              ldi R17,0
 01A2 5ADF              xcall _write_ASCII
 01A4                   .dbline 118
 01A4           ; write_ASCII(0xf9,5,0,table[hour%10]);//小时地位
 01A4 2AE0              ldi R18,10
 01A6 30E0              ldi R19,0
 01A8 00910200          lds R16,_hour
 01AC 1127              clr R17
 01AE 0E940000          xcall mod16s
 01B2 F801              movw R30,R16
 01B4 80E0              ldi R24,<_table
 01B6 90E0              ldi R25,>_table
 01B8 E80F              add R30,R24
 01BA F91F              adc R31,R25
 01BC 2490              lpm R2,Z
 01BE 3324              clr R3
 01C0 3B82              std y+3,R3
 01C2 2A82              std y+2,R2
 01C4 2224              clr R2
 01C6 3982              std y+1,R3
 01C8 2882              std y+0,R2
 01CA 25E0              ldi R18,5
 01CC 30E0              ldi R19,0
 01CE 09EF              ldi R16,249
 01D0 10E0              ldi R17,0
 01D2 42DF              xcall _write_ASCII
 01D4                   .dbline 119
 01D4           ; write_ASCII(0xf9,6,0,58); //:
 01D4 8AE3              ldi R24,58
 01D6 90E0              ldi R25,0
 01D8 9B83              std y+3,R25
 01DA 8A83              std y+2,R24
 01DC 2224              clr R2
 01DE 3324              clr R3
 01E0 3982              std y+1,R3
 01E2 2882              std y+0,R2
 01E4 26E0              ldi R18,6
 01E6 30E0              ldi R19,0
 01E8 09EF              ldi R16,249
 01EA 10E0              ldi R17,0
 01EC 35DF              xcall _write_ASCII
 01EE                   .dbline 120
 01EE           ; write_ASCII(0xf9,7,0,table[minute/10]);//分钟高位
 01EE 2AE0              ldi R18,10
 01F0 30E0              ldi R19,0
 01F2 00910100          lds R16,_minute
 01F6 1127              clr R17
 01F8 0E940000          xcall div16s
 01FC F801              movw R30,R16
 01FE 80E0              ldi R24,<_table
 0200 90E0              ldi R25,>_table
 0202 E80F              add R30,R24
 0204 F91F              adc R31,R25
 0206 2490              lpm R2,Z
 0208 3324              clr R3
 020A 3B82              std y+3,R3
 020C 2A82              std y+2,R2
 020E 2224              clr R2
 0210 3982              std y+1,R3
 0212 2882              std y+0,R2
 0214 27E0              ldi R18,7
 0216 30E0              ldi R19,0
 0218 09EF              ldi R16,249
 021A 10E0              ldi R17,0
 021C 1DDF              xcall _write_ASCII
 021E                   .dbline 121
 021E           ; write_ASCII(0xf9,8,0,table[minute%10]);//分钟地位
 021E 2AE0              ldi R18,10
 0220 30E0              ldi R19,0

⌨️ 快捷键说明

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