📄 menus.s
字号:
ldi R16,12
ldi R17,0
rcall _LCD_write_char
.dbline 192
;
; if(PSW_1[0]==PSW_2[0])
ldd R2,y+2
ldd R3,y+10
cp R3,R2
breq X14
rjmp L81
X14:
.dbline 193
; {
.dbline 194
; if(PSW_1[1]==PSW_2[1])
ldd R2,y+3
ldd R3,y+11
cp R3,R2
breq X15
rjmp L83
X15:
.dbline 195
; {
.dbline 196
; if(PSW_1[2]==PSW_2[2])
ldd R2,y+4
ldd R3,y+12
cp R3,R2
breq X16
rjmp L87
X16:
.dbline 197
; {
.dbline 198
; if(PSW_1[3]==PSW_2[3])
ldd R2,y+5
ldd R3,y+13
cp R3,R2
brne L91
.dbline 199
; {
.dbline 200
; if(PSW_1[4]==PSW_2[4])
ldd R2,y+6
ldd R3,y+14
cp R3,R2
brne L95
.dbline 201
; {
.dbline 202
; if(PSW_1[5]==PSW_2[5])
ldd R2,y+7
ldd R3,y+15
cp R3,R2
brne L99
.dbline 203
; {
.dbline 204
; if(PSW_1[6]==PSW_2[6])
ldd R2,y+8
ldd R3,y+16
cp R3,R2
brne L103
.dbline 205
; {
.dbline 206
; if(PSW_1[7]==PSW_2[7])
ldd R2,y+9
ldd R3,y+17
cp R3,R2
brne L107
.dbline 207
; {
.dbline 208
; for(i=0;i<8;i++)
clr R20
rjmp L114
L111:
.dbline 209
.dbline 210
movw R24,R28
adiw R24,2
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R18,z+0
mov R16,R20
clr R17
subi R16,9 ; offset = 503
sbci R17,254
rcall _EEPROM_write
.dbline 211
L112:
.dbline 208
inc R20
L114:
.dbline 208
cpi R20,8
brlo L111
.dbline 213
; {
; EEPROM_write(503+i, PSW_2[i]);
; }
;
; LCD_write_string(1,0,"PSW Is Changed");
ldi R24,<L115
ldi R25,>L115
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
rcall _LCD_write_string
.dbline 214
; LCD_write_string(2,1,"Remember It!");
ldi R24,<L116
ldi R25,>L116
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,2
rcall _LCD_write_string
.dbline 216
;
; delay_nms(2000);
ldi R16,2000
ldi R17,7
rcall _delay_nms
.dbline 217
; Menu_0();
rcall _Menu_0
.dbline 218
; }
L107:
.dbline 219
; }
L103:
.dbline 220
; }
L99:
.dbline 221
; }
L95:
.dbline 222
; }
L91:
.dbline 223
; }
L87:
.dbline 224
; }
L83:
.dbline 225
; }
L81:
.dbline 227
;
; LCD_write_string(1,0,"Twice PSW Is XXX");
ldi R24,<L117
ldi R25,>L117
std y+1,R25
std y+0,R24
clr R18
ldi R16,1
rcall _LCD_write_string
.dbline 228
; LCD_write_string(2,1,"Insert Again");
ldi R24,<L67
ldi R25,>L67
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,2
rcall _LCD_write_string
.dbline 230
;
; delay_nms(2000);
ldi R16,2000
ldi R17,7
rcall _delay_nms
.dbline 231
; Menu_PSW();
rcall _Menu_PSW
.dbline 232
; }
L79:
.dbline 233
L69:
.dbline 159
rjmp L68
X8:
.dbline 234
; }
; }
L65:
.dbline 235
L55:
.dbline 123
rjmp L54
X9:
.dbline -2
L49:
adiw R28,18
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l PSW_1 10 A[8:8]c
.dbsym l PSW_2 2 A[8:8]c
.dbsym r i 20 c
.dbsym r Key 22 c
.dbend
.dbfunc e Menu_0 _Menu_0 fV
; Key -> R20
.even
_Menu_0::
rcall push_gset2
sbiw R28,2
.dbline -1
.dbline 240
; }
; }
;
;
; void Menu_0(void)
; {
.dbline 241
; unsigned char Key = 0 ;
clr R20
.dbline 243
;
; LCD_write_char(0x01,0); //清屏
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
.dbline 244
; delay_nms(2);
ldi R16,2
ldi R17,0
rcall _delay_nms
.dbline 246
;
; LCD_write_string(0,0,"1: Add 2: Del");
ldi R24,<L119
ldi R25,>L119
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _LCD_write_string
.dbline 247
; LCD_write_string(0,1,"3: PSW 4: Exist");
ldi R24,<L120
ldi R25,>L120
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
rjmp L122
L121:
.dbline 250
;
; while(1)
; {
.dbline 251
; Key = Key_Scan();
rcall _Key_Scan
mov R20,R16
.dbline 253
;
; switch (Key)
mov R22,R20
clr R23
cpi R22,1
ldi R30,0
cpc R23,R30
breq L127
cpi R22,2
ldi R30,0
cpc R23,R30
breq L128
cpi R22,3
ldi R30,0
cpc R23,R30
breq L129
cpi R22,4
ldi R30,0
cpc R23,R30
breq L130
cpi R22,1
ldi R30,0
cpc R23,R30
brlt L125
L132:
cpi R22,11
ldi R30,0
cpc R23,R30
breq L131
rjmp L125
X17:
.dbline 254
; {
L127:
.dbline 255
; case 1 : Menu_Add(); break ;
rcall _Menu_Add
.dbline 255
rjmp L125
L128:
.dbline 256
; case 2 : Menu_Del(); break ;
rcall _Menu_Del
.dbline 256
rjmp L125
L129:
.dbline 257
; case 3 : Menu_PSW(); break ;
rcall _Menu_PSW
.dbline 257
rjmp L125
L130:
.dbline 258
; case 4 : menu_Init(); break ;
rcall _menu_Init
.dbline 258
rjmp L125
L131:
.dbline 259
; case 11 : menu_Init(); break ;
rcall _menu_Init
.dbline 259
.dbline 260
; default : break ;
L125:
.dbline 262
L122:
.dbline 249
rjmp L121
X18:
.dbline -2
L118:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r Key 20 c
.dbend
.area lit(rom, con, rel)
L134:
.byte 0
.byte 0,0,0,0,0,0,0
.area text(rom, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
.dbfunc e Menu _Menu fV
; PSW -> y+2
; i -> R20
; Key -> R22
.even
_Menu::
rcall push_gset2
sbiw R28,10
.dbline -1
.dbline 266
; }
; }
; }
;
; void Menu(void)
; {
.dbline 267
; unsigned char Key = 0 , i = 0 , PSW[8] = {0} ;
clr R22
.dbline 267
clr R20
.dbline 267
ldi R24,<L134
ldi R25,>L134
movw R30,R28
adiw R30,2
ldi R16,8
ldi R17,0
st -y,R31
st -y,R30
st -y,R25
st -y,R24
rcall asgncblk
.dbline 269
;
; Key = Key_Scan();
rcall _Key_Scan
mov R22,R16
.dbline 271
;
; if( Key != 0 )
tst R16
brne X20
rjmp L135
X20:
.dbline 272
; {
.dbline 273
; LCD_write_char(0x01,0); //清屏
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
.dbline 274
; delay_nms(2);
ldi R16,2
ldi R17,0
rcall _delay_nms
.dbline 276
;
; LCD_write_string(2,0,"Setting Menu");
ldi R24,<L137
ldi R25,>L137
std y+1,R25
std y+0,R24
clr R18
ldi R16,2
rcall _LCD_write_string
.dbline 277
; LCD_write_string(1,1,"PSW : ");
ldi R24,<L138
ldi R25,>L138
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,1
rcall _LCD_write_string
.dbline 278
; LCD_write_char(0x0f,0); // 显示光标
clr R18
clr R19
ldi R16,15
ldi R17,0
rcall _LCD_write_char
rjmp L140
L139:
.dbline 281
;
; while(1)
; {
.dbline 282
; Key = Key_Scan();
rcall _Key_Scan
mov R22,R16
.dbline 284
;
; if ( (Key>0) && (i<8) && (Key<11) )
clr R2
cp R2,R16
brsh L142
cpi R20,8
brsh L142
cpi R16,11
brsh L142
.dbline 285
; {
.dbline 286
; if(i>0)
cp R2,R20
brsh L144
.dbline 287
; {
.dbline 288
; display(16 , 22+i);
mov R18,R20
subi R18,234 ; addi 22
ldi R16,16
rcall _display
.dbline 289
; }
L144:
.dbline 291
;
; if (Key==10)
cpi R22,10
brne L146
.dbline 292
; {
.dbline 293
; Key = 0;
clr R22
.dbline 294
; }
L146:
.dbline 296
;
; display(Key , 23+i);
mov R18,R20
subi R18,233 ; addi 23
mov R16,R22
rcall _display
.dbline 298
;
; PSW[i] = Key ;
movw R24,R28
adiw R24,2
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R22
.dbline 299
; i++ ;
inc R20
.dbline 300
; }
L142:
.dbline 302
;
; if ( Key==11 )
cpi R22,11
brne L148
.dbline 303
; {
.dbline 304
; menu_Init();
rcall _menu_Init
.dbline 305
; }
L148:
.dbline 307
;
; if ( (Key==12) && (i==8) )
cpi R22,12
breq X21
rjmp L150
X21:
cpi R20,8
breq X22
rjmp L150
X22:
.dbline 308
; {
.dbline 309
; LCD_write_char(0x0c,0); // 关闭光标
clr R18
clr R19
ldi R16,12
ldi R17,0
rcall _LCD_write_char
.dbline 310
; delay_nms(10);
ldi R16,10
ldi R17,0
rcall _delay_nms
.dbline 312
;
; if( PSW[0] == EEPROM_read(503) )
ldi R16,503
ldi R17,1
rcall _EEPROM_read
ldd R2,y+2
cp R2,R16
brne L152
.dbline 313
; {
.dbline 314
; if( PSW[1] == EEPROM_read(504) )
ldi R16,504
ldi R17,1
rcall _EEPROM_read
ldd R2,y+3
cp R2,R16
brne L154
.dbline 315
; {
.dbline 316
; if( PSW[2] == EEPROM_read(505) )
ldi R16,505
ldi R17,1
rcall _EEPROM_read
ldd R2,y+4
cp R2,R16
brne L157
.dbline 317
; {
.dbline 318
; if( PSW[3] == EEPROM_read(506) )
ldi R16,506
ldi R17,1
rcall _EEPROM_read
ldd R2,y+5
cp R2,R16
brne L160
.dbline 319
; {
.dbline 320
; if( PSW[4] == EEPROM_read(507) )
ldi R16,507
ldi R17,1
rcall _EEPROM_read
ldd R2,y+6
cp R2,R16
brne L163
.dbline 321
; {
.dbline 322
; if( PSW[5] == EEPROM_read(508) )
ldi R16,508
ldi R17,1
rcall _EEPROM_read
ldd R2,y+7
cp R2,R16
brne L166
.dbline 323
; {
.dbline 324
; if( PSW[6] == EEPROM_read(509) )
ldi R16,509
ldi R17,1
rcall _EEPROM_read
ldd R2,y+8
cp R2,R16
brne L169
.dbline 325
; {
.dbline 326
; if( PSW[7] == EEPROM_read(510) )
ldi R16,510
ldi R17,1
rcall _EEPROM_read
ldd R2,y+9
cp R2,R16
brne L172
.dbline 327
; {
.dbline 328
; Menu_0();
rcall _Menu_0
.dbline 329
; }
L172:
.dbline 330
; }
L169:
.dbline 331
; }
L166:
.dbline 332
; }
L163:
.dbline 333
; }
L160:
.dbline 334
; }
L157:
.dbline 335
; }
L154:
.dbline 336
; }
L152:
.dbline 338
;
; LCD_write_char(0x01,0); //清屏
clr R18
clr R19
ldi R16,1
ldi R17,0
rcall _LCD_write_char
.dbline 339
; delay_nms(2);
ldi R16,2
ldi R17,0
rcall _delay_nms
.dbline 341
;
; LCD_write_string(3,0,"Wrong PSW");
ldi R24,<L175
ldi R25,>L175
std y+1,R25
std y+0,R24
clr R18
ldi R16,3
rcall _LCD_write_string
.dbline 342
; LCD_write_string(4,1,"Sorry !!");
ldi R24,<L176
ldi R25,>L176
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,4
rcall _LCD_write_string
.dbline 343
; delay_nms(2000);
ldi R16,2000
ldi R17,7
rcall _delay_nms
.dbline 344
; menu_Init();
rcall _menu_Init
.dbline 345
; }
L150:
.dbline 346
L140:
.dbline 280
rjmp L139
X19:
.dbline 347
L135:
.dbline -2
L133:
adiw R28,10
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l PSW 2 A[8:8]c
.dbsym r i 20 c
.dbsym r Key 22 c
.dbend
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L176:
.blkb 9
.area idata
.byte 'S,'o,'r,'r,'y,32,33,33,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L175:
.blkb 11
.area idata
.byte 'W,'r,'o,'n,'g,32,32,'P,'S,'W,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L138:
.blkb 7
.area idata
.byte 'P,'S,'W,32,58,32,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L137:
.blkb 13
.area idata
.byte 'S,'e,'t,'t,'i,'n,'g,32,'M,'e,'n,'u,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L120:
.blkb 17
.area idata
.byte 51,58,32,'P,'S,'W,32,32,52,58,32,'E,'x,'i,'s,'t
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L119:
.blkb 17
.area idata
.byte 49,58,32,'A,'d,'d,32,32,32,32,50,58,32,'D,'e,'l
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L117:
.blkb 17
.area idata
.byte 'T,'w,'i,'c,'e,32,'P,'S,'W,32,'I,'s,32,'X,'X,'X
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L116:
.blkb 13
.area idata
.byte 'R,'e,'m,'e,'m,'b,'e,'r,32,'I,'t,33,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L115:
.blkb 15
.area idata
.byte 'P,'S,'W,32,'I,'s,32,'C,'h,'a,'n,'g,'e,'d,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L67:
.blkb 13
.area idata
.byte 'I,'n,'s,'e,'r,'t,32,'A,'g,'a,'i,'n,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L53:
.blkb 9
.area idata
.byte 'N,'e,'w,32,'P,'S,'W,58,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L52:
.blkb 15
.area idata
.byte 'I,'n,'s,'e,'r,'t,32,'N,'e,'w,32,'P,'S,'W,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L41:
.blkb 17
.area idata
.byte 'M,'e,'n,'u,49,32,58,32,'D,'e,'l,32,'C,'a,'r,'d
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L40:
.blkb 13
.area idata
.byte 'I,'s,32,32,'E,'m,'p,'t,'y,32,33,33,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L39:
.blkb 16
.area idata
.byte 'N,'o,32,'C,'a,'r,'d,32,'E,'x,'i,'s,'t,'e,'d,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L28:
.blkb 17
.area idata
.byte 'A,'d,'d,32,'S,'u,'c,'c,'e,'s,'s,'f,'u,'l,'l,'y
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L7:
.blkb 13
.area idata
.byte 'I,'n,'s,'e,'r,'t,32,32,'C,'a,'r,'d,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L6:
.blkb 17
.area idata
.byte 'M,'e,'n,'u,49,32,58,32,'A,'d,'d,32,'C,'a,'r,'d
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L5:
.blkb 11
.area idata
.byte 'I,'s,32,'F,'u,'l,'l,32,33,33,0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
L4:
.blkb 17
.area idata
.byte 56,51,32,'C,'a,'r,'d,'s,32,'E,'x,'i,'s,'t,'e,'d
.byte 0
.area data(ram, con, rel)
.dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -