📄 menus.lis
字号:
012A 2296 adiw R28,2
012C 00D0 rcall pop_gset5
012E .dbline 0 ; func end
012E 0895 ret
0130 .dbsym r Total 14 c
0130 .dbsym r i 20 c
0130 .dbsym r tem 22 c
0130 .dbsym r j 10 c
0130 .dbsym r k 12 c
0130 .dbend
0130 .dbfunc e Menu_Del _Menu_Del fV
0130 ; tem -> R22
0130 ; k -> R22
0130 ; j -> R22
0130 ; i -> R22
0130 ; Total -> R20
.even
0130 _Menu_Del::
0130 00D0 rcall push_gset2
0132 2297 sbiw R28,2
0134 .dbline -1
0134 .dbline 78
0134 ; }
0134 ; }
0134 ;
0134 ; void Menu_Del(void)
0134 ; {
0134 .dbline 79
0134 ; unsigned char Total = 0 , i = 0 , j = 0 , k = 0 , tem = 0 ;
0134 4427 clr R20
0136 .dbline 79
0136 6627 clr R22
0138 .dbline 79
0138 .dbline 79
0138 .dbline 79
0138 .dbline 81
0138 ;
0138 ; LCD_write_char(0x01,0); //清屏
0138 2227 clr R18
013A 3327 clr R19
013C 01E0 ldi R16,1
013E 10E0 ldi R17,0
0140 00D0 rcall _LCD_write_char
0142 .dbline 82
0142 ; delay_nms(2);
0142 02E0 ldi R16,2
0144 10E0 ldi R17,0
0146 00D0 rcall _delay_nms
0148 .dbline 84
0148 ;
0148 ; Total = EEPROM_read(511) ;
0148 0FEF ldi R16,511
014A 11E0 ldi R17,1
014C 00D0 rcall _EEPROM_read
014E 402F mov R20,R16
0150 .dbline 85
0150 ; if(Total==0)
0150 0023 tst R16
0152 91F4 brne L37
0154 .dbline 86
0154 ; {
0154 .dbline 87
0154 ; LCD_write_string(0,0,"No Card Existed");
0154 80E0 ldi R24,<L39
0156 90E0 ldi R25,>L39
0158 9983 std y+1,R25
015A 8883 std y+0,R24
015C 2227 clr R18
015E 0027 clr R16
0160 00D0 rcall _LCD_write_string
0162 .dbline 88
0162 ; LCD_write_string(2,1,"Is Empty !!");
0162 80E0 ldi R24,<L40
0164 90E0 ldi R25,>L40
0166 9983 std y+1,R25
0168 8883 std y+0,R24
016A 21E0 ldi R18,1
016C 02E0 ldi R16,2
016E 00D0 rcall _LCD_write_string
0170 .dbline 89
0170 ; delay_nms(2000);
0170 00ED ldi R16,2000
0172 17E0 ldi R17,7
0174 00D0 rcall _delay_nms
0176 .dbline 90
0176 ; Menu_0() ;
0176 2BD1 rcall _Menu_0
0178 .dbline 91
0178 ; }
0178 L37:
0178 .dbline 93
0178 ;
0178 ; LCD_write_string(0,0,"Menu1 : Del Card");
0178 80E0 ldi R24,<L41
017A 90E0 ldi R25,>L41
017C 9983 std y+1,R25
017E 8883 std y+0,R24
0180 2227 clr R18
0182 0027 clr R16
0184 00D0 rcall _LCD_write_string
0186 .dbline 94
0186 ; LCD_write_string(2,1,"Insert Card");
0186 80E0 ldi R24,<L7
0188 90E0 ldi R25,>L7
018A 9983 std y+1,R25
018C 8883 std y+0,R24
018E 21E0 ldi R18,1
0190 02E0 ldi R16,2
0192 00D0 rcall _LCD_write_string
0194 12C0 rjmp L43
0196 L42:
0196 .dbline 97
0196 ;
0196 ; while(1)
0196 ; {
0196 .dbline 98
0196 ; if(IC_SW==0)
0196 80B3 in R24,0x10
0198 8870 andi R24,8
019A 80BB out 0x10,R24
019C 8823 tst R24
019E 69F4 brne L45
01A0 .dbline 99
01A0 ; {
01A0 .dbline 100
01A0 ; delay_nms(50); // 检测是否有卡插入
01A0 02E3 ldi R16,50
01A2 10E0 ldi R17,0
01A4 00D0 rcall _delay_nms
01A6 .dbline 101
01A6 ; if(IC_SW==0)
01A6 80B3 in R24,0x10
01A8 8870 andi R24,8
01AA 80BB out 0x10,R24
01AC 8823 tst R24
01AE 29F4 brne L47
01B0 .dbline 102
01B0 ; {
01B0 .dbline 103
01B0 ; Menu_flag = 1 ;
01B0 81E0 ldi R24,1
01B2 80930000 sts _Menu_flag,R24
01B6 .dbline 104
01B6 ; Read_Card(); // 读IC-Card 函数
01B6 00D0 rcall _Read_Card
01B8 .dbline 105
01B8 ; Card_Verify();
01B8 00D0 rcall _Card_Verify
01BA .dbline 106
01BA ; }
01BA L47:
01BA .dbline 107
01BA ; }
01BA L45:
01BA .dbline 108
01BA L43:
01BA .dbline 96
01BA EDCF rjmp L42
01BC X7:
01BC .dbline -2
01BC L36:
01BC 2296 adiw R28,2
01BE 00D0 rcall pop_gset2
01C0 .dbline 0 ; func end
01C0 0895 ret
01C2 .dbsym r tem 22 c
01C2 .dbsym r k 22 c
01C2 .dbsym r j 22 c
01C2 .dbsym r i 22 c
01C2 .dbsym r Total 20 c
01C2 .dbend
.area lit(rom, con, rel)
0000 L50:
0000 00 .byte 0
0001 00000000000000 .byte 0,0,0,0,0,0,0
0008 L51:
0008 00 .byte 0
0009 00000000000000 .byte 0,0,0,0,0,0,0
.area text(rom, con, rel)
01C2 .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
01C2 .dbfunc e Menu_PSW _Menu_PSW fV
01C2 ; PSW_1 -> y+10
01C2 ; PSW_2 -> y+2
01C2 ; i -> R20
01C2 ; Key -> R22
.even
01C2 _Menu_PSW::
01C2 00D0 rcall push_gset2
01C4 6297 sbiw R28,18
01C6 .dbline -1
01C6 .dbline 112
01C6 ; }
01C6 ; }
01C6 ;
01C6 ; void Menu_PSW(void)
01C6 ; {
01C6 .dbline 113
01C6 ; unsigned char Key = 0 , i = 0 , PSW_1[8] = { 0 } , PSW_2[8] = { 0 } ;
01C6 6627 clr R22
01C8 .dbline 113
01C8 4427 clr R20
01CA .dbline 113
01CA 80E0 ldi R24,<L50
01CC 90E0 ldi R25,>L50
01CE FE01 movw R30,R28
01D0 3A96 adiw R30,10
01D2 08E0 ldi R16,8
01D4 10E0 ldi R17,0
01D6 FA93 st -y,R31
01D8 EA93 st -y,R30
01DA 9A93 st -y,R25
01DC 8A93 st -y,R24
01DE 00D0 rcall asgncblk
01E0 .dbline 113
01E0 80E0 ldi R24,<L51
01E2 90E0 ldi R25,>L51
01E4 FE01 movw R30,R28
01E6 3296 adiw R30,2
01E8 08E0 ldi R16,8
01EA 10E0 ldi R17,0
01EC FA93 st -y,R31
01EE EA93 st -y,R30
01F0 9A93 st -y,R25
01F2 8A93 st -y,R24
01F4 00D0 rcall asgncblk
01F6 .dbline 115
01F6 ;
01F6 ; LCD_write_char(0x01,0); //清屏
01F6 2227 clr R18
01F8 3327 clr R19
01FA 01E0 ldi R16,1
01FC 10E0 ldi R17,0
01FE 00D0 rcall _LCD_write_char
0200 .dbline 116
0200 ; delay_nms(2);
0200 02E0 ldi R16,2
0202 10E0 ldi R17,0
0204 00D0 rcall _delay_nms
0206 .dbline 117
0206 ; LCD_write_char(0x0f,0); // 显示光标
0206 2227 clr R18
0208 3327 clr R19
020A 0FE0 ldi R16,15
020C 10E0 ldi R17,0
020E 00D0 rcall _LCD_write_char
0210 .dbline 119
0210 ;
0210 ; LCD_write_string(1,0,"Insert New PSW");
0210 80E0 ldi R24,<L52
0212 90E0 ldi R25,>L52
0214 9983 std y+1,R25
0216 8883 std y+0,R24
0218 2227 clr R18
021A 01E0 ldi R16,1
021C 00D0 rcall _LCD_write_string
021E .dbline 120
021E ; LCD_write_string(0,1,"New PSW:");
021E 80E0 ldi R24,<L53
0220 90E0 ldi R25,>L53
0222 9983 std y+1,R25
0224 8883 std y+0,R24
0226 21E0 ldi R18,1
0228 0027 clr R16
022A 00D0 rcall _LCD_write_string
022C CCC0 rjmp L55
022E L54:
022E .dbline 124
022E ;
022E ;
022E ; while(1)
022E ; {
022E .dbline 125
022E ; Key = Key_Scan() ;
022E 00D0 rcall _Key_Scan
0230 602F mov R22,R16
0232 .dbline 127
0232 ;
0232 ; if ( (Key>0) && (i<8) && (Key<11) )
0232 2224 clr R2
0234 2016 cp R2,R16
0236 C8F4 brsh L57
0238 4830 cpi R20,8
023A B8F4 brsh L57
023C 0B30 cpi R16,11
023E A8F4 brsh L57
0240 .dbline 128
0240 ; {
0240 .dbline 129
0240 ; if(i>0)
0240 2416 cp R2,R20
0242 20F4 brsh L59
0244 .dbline 130
0244 ; {
0244 .dbline 131
0244 ; display(16 , 23+i);
0244 242F mov R18,R20
0246 295E subi R18,233 ; addi 23
0248 00E1 ldi R16,16
024A 00D0 rcall _display
024C .dbline 132
024C ; }
024C L59:
024C .dbline 134
024C ;
024C ; if (Key==10)
024C 6A30 cpi R22,10
024E 09F4 brne L61
0250 .dbline 135
0250 ; {
0250 .dbline 136
0250 ; Key = 0;
0250 6627 clr R22
0252 .dbline 137
0252 ; }
0252 L61:
0252 .dbline 139
0252 ;
0252 ; display(Key , 24+i);
0252 242F mov R18,R20
0254 285E subi R18,232 ; addi 24
0256 062F mov R16,R22
0258 00D0 rcall _display
025A .dbline 141
025A ;
025A ; PSW_1[i] = Key ;
025A CE01 movw R24,R28
025C 0A96 adiw R24,10
025E E42F mov R30,R20
0260 FF27 clr R31
0262 E80F add R30,R24
0264 F91F adc R31,R25
0266 6083 std z+0,R22
0268 .dbline 142
0268 ; i++ ;
0268 4395 inc R20
026A .dbline 143
026A ; }
026A L57:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -