📄 menus.lis
字号:
.module Menus.C
.area data(ram, con, rel)
0000 _Menu_flag::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
0001 .dbsym e Menu_flag _Menu_flag c
0001 _Exist_flag::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
0002 .dbsym e Exist_flag _Exist_flag c
.area text(rom, con, rel)
0000 .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\Menus.C
0000 .dbfunc e Menu_Add _Menu_Add fV
0000 ; Total -> R14
0000 ; i -> R20
0000 ; tem -> R22
0000 ; j -> R10
0000 ; k -> R12
.even
0000 _Menu_Add::
0000 00D0 rcall push_gset5
0002 2297 sbiw R28,2
0004 .dbline -1
0004 .dbline 9
0004 ;
0004 ; #include <iom8v.h>
0004 ; #include <macros.h>
0004 ; #include "lcd1602.h"
0004 ;
0004 ; unsigned char Menu_flag = 0 , Exist_flag = 0 ;
0004 ;
0004 ; void Menu_Add(void)
0004 ; {
0004 .dbline 10
0004 ; unsigned char Total = 0 , i = 0 , j = 0 , k = 0 , tem = 0 ;
0004 EE24 clr R14
0006 .dbline 10
0006 4427 clr R20
0008 .dbline 10
0008 AA24 clr R10
000A .dbline 10
000A CC24 clr R12
000C .dbline 10
000C 6627 clr R22
000E .dbline 12
000E ;
000E ; LCD_write_char(0x01,0); //清屏
000E 2227 clr R18
0010 3327 clr R19
0012 01E0 ldi R16,1
0014 10E0 ldi R17,0
0016 00D0 rcall _LCD_write_char
0018 .dbline 13
0018 ; delay_nms(2);
0018 02E0 ldi R16,2
001A 10E0 ldi R17,0
001C 00D0 rcall _delay_nms
001E .dbline 15
001E ;
001E ; Total = EEPROM_read(511) ;
001E 0FEF ldi R16,511
0020 11E0 ldi R17,1
0022 00D0 rcall _EEPROM_read
0024 E02E mov R14,R16
0026 .dbline 16
0026 ; if(Total==83)
0026 0335 cpi R16,83
0028 91F4 brne L2
002A .dbline 17
002A ; {
002A .dbline 18
002A ; LCD_write_string(0,0,"83 Cards Existed");
002A 80E0 ldi R24,<L4
002C 90E0 ldi R25,>L4
002E 9983 std y+1,R25
0030 8883 std y+0,R24
0032 2227 clr R18
0034 0027 clr R16
0036 00D0 rcall _LCD_write_string
0038 .dbline 19
0038 ; LCD_write_string(3,1,"Is Full !!");
0038 80E0 ldi R24,<L5
003A 90E0 ldi R25,>L5
003C 9983 std y+1,R25
003E 8883 std y+0,R24
0040 21E0 ldi R18,1
0042 03E0 ldi R16,3
0044 00D0 rcall _LCD_write_string
0046 .dbline 20
0046 ; delay_nms(2000);
0046 00ED ldi R16,2000
0048 17E0 ldi R17,7
004A 00D0 rcall _delay_nms
004C .dbline 21
004C ; Menu_0() ;
004C C0D1 rcall _Menu_0
004E .dbline 22
004E ; }
004E L2:
004E .dbline 24
004E ;
004E ; LCD_write_string(0,0,"Menu1 : Add Card");
004E 80E0 ldi R24,<L6
0050 90E0 ldi R25,>L6
0052 9983 std y+1,R25
0054 8883 std y+0,R24
0056 2227 clr R18
0058 0027 clr R16
005A 00D0 rcall _LCD_write_string
005C .dbline 25
005C ; LCD_write_string(2,1,"Insert Card");
005C 80E0 ldi R24,<L7
005E 90E0 ldi R25,>L7
0060 9983 std y+1,R25
0062 8883 std y+0,R24
0064 21E0 ldi R18,1
0066 02E0 ldi R16,2
0068 00D0 rcall _LCD_write_string
006A 5EC0 rjmp L9
006C L8:
006C .dbline 28
006C ;
006C ; while(1)
006C ; {
006C .dbline 29
006C ; if(IC_SW==0)
006C 80B3 in R24,0x10
006E 8870 andi R24,8
0070 80BB out 0x10,R24
0072 8823 tst R24
0074 09F0 breq X2
0076 58C0 rjmp L11
0078 X2:
0078 .dbline 30
0078 ; {
0078 .dbline 31
0078 ; delay_nms(50); // 检测是否有卡插入
0078 02E3 ldi R16,50
007A 10E0 ldi R17,0
007C 00D0 rcall _delay_nms
007E .dbline 32
007E ; if(IC_SW==0)
007E 80B3 in R24,0x10
0080 8870 andi R24,8
0082 80BB out 0x10,R24
0084 8823 tst R24
0086 09F0 breq X3
0088 4FC0 rjmp L13
008A X3:
008A .dbline 33
008A ; {
008A .dbline 34
008A ; Menu_flag = 1 ;
008A 81E0 ldi R24,1
008C 80930000 sts _Menu_flag,R24
0090 .dbline 35
0090 ; Exist_flag = 1 ;
0090 80930100 sts _Exist_flag,R24
0094 .dbline 36
0094 ; Read_Card(); // 读IC-Card 函数
0094 00D0 rcall _Read_Card
0096 .dbline 37
0096 ; Card_Verify();
0096 00D0 rcall _Card_Verify
0098 .dbline 39
0098 ;
0098 ; for(i=0;i<83;i++)
0098 4427 clr R20
009A 43C0 rjmp L18
009C L15:
009C .dbline 40
009C ; {
009C .dbline 41
009C ; tem = EEPROM_read(j);
009C 0A2D mov R16,R10
009E 1127 clr R17
00A0 00D0 rcall _EEPROM_read
00A2 602F mov R22,R16
00A4 .dbline 43
00A4 ;
00A4 ; if(tem==0)
00A4 0023 tst R16
00A6 09F0 breq X4
00A8 38C0 rjmp L19
00AA X4:
00AA .dbline 44
00AA ; {
00AA .dbline 45
00AA ; for(k=0;k<6;k++)
00AA CC24 clr R12
00AC 32C0 rjmp L24
00AE L21:
00AE .dbline 46
00AE ; {
00AE .dbline 47
00AE ; EEPROM_write(j+k, IC_Codes_8[2+k]);
00AE 80E0 ldi R24,<_IC_Codes_8+2
00B0 90E0 ldi R25,>_IC_Codes_8+2
00B2 EC2D mov R30,R12
00B4 FF27 clr R31
00B6 E80F add R30,R24
00B8 F91F adc R31,R25
00BA 2081 ldd R18,z+0
00BC 2C2C mov R2,R12
00BE 3324 clr R3
00C0 0A2D mov R16,R10
00C2 1127 clr R17
00C4 020D add R16,R2
00C6 131D adc R17,R3
00C8 00D0 rcall _EEPROM_write
00CA .dbline 48
00CA ; if(k==5)
00CA 8C2D mov R24,R12
00CC 8530 cpi R24,5
00CE 01F5 brne L26
00D0 .dbline 49
00D0 ; {
00D0 .dbline 50
00D0 ; tem = EEPROM_read(511) + 1 ;
00D0 0FEF ldi R16,511
00D2 11E0 ldi R17,1
00D4 00D0 rcall _EEPROM_read
00D6 602F mov R22,R16
00D8 6F5F subi R22,255 ; addi 1
00DA .dbline 51
00DA ; EEPROM_write(511, tem);
00DA 262F mov R18,R22
00DC 0FEF ldi R16,511
00DE 11E0 ldi R17,1
00E0 00D0 rcall _EEPROM_write
00E2 .dbline 53
00E2 ;
00E2 ; LCD_write_string(0,1,"Add Successfully");
00E2 80E0 ldi R24,<L28
00E4 90E0 ldi R25,>L28
00E6 9983 std y+1,R25
00E8 8883 std y+0,R24
00EA 21E0 ldi R18,1
00EC 0027 clr R16
00EE 00D0 rcall _LCD_write_string
00F0 0EC0 rjmp L30
00F2 L29:
00F2 .dbline 56
00F2 ;
00F2 ; while(1)
00F2 ; {
00F2 .dbline 57
00F2 ; if(IC_SW!=0)
00F2 80B3 in R24,0x10
00F4 8870 andi R24,8
00F6 80BB out 0x10,R24
00F8 8823 tst R24
00FA 49F0 breq L32
00FC .dbline 58
00FC ; {
00FC .dbline 59
00FC ; delay_nms(50); // 检测是否有卡插入
00FC 02E3 ldi R16,50
00FE 10E0 ldi R17,0
0100 00D0 rcall _delay_nms
0102 .dbline 60
0102 ; if(IC_SW!=0)
0102 80B3 in R24,0x10
0104 8870 andi R24,8
0106 80BB out 0x10,R24
0108 8823 tst R24
010A 09F0 breq L34
010C .dbline 61
010C ; {
010C .dbline 62
010C ; Menu_0();
010C 60D1 rcall _Menu_0
010E .dbline 63
010E ; }
010E L34:
010E .dbline 64
010E ; }
010E L32:
010E .dbline 65
010E L30:
010E .dbline 55
010E F1CF rjmp L29
0110 X0:
0110 .dbline 66
0110 ; }
0110 ; }
0110 L26:
0110 .dbline 67
0110 L22:
0110 .dbline 45
0110 C394 inc R12
0112 L24:
0112 .dbline 45
0112 8C2D mov R24,R12
0114 8630 cpi R24,6
0116 08F4 brsh X5
0118 CACF rjmp L21
011A X5:
011A .dbline 68
011A ; }
011A ; }
011A L19:
011A .dbline 70
011A 8A2D mov R24,R10
011C 8A5F subi R24,250 ; addi 6
011E A82E mov R10,R24
0120 .dbline 71
0120 L16:
0120 .dbline 39
0120 4395 inc R20
0122 L18:
0122 .dbline 39
0122 4335 cpi R20,83
0124 08F4 brsh X6
0126 BACF rjmp L15
0128 X6:
0128 .dbline 72
0128 ;
0128 ; j = j + 6 ;
0128 ; }
0128 ; }
0128 L13:
0128 .dbline 73
0128 ; }
0128 L11:
0128 .dbline 74
0128 L9:
0128 .dbline 27
0128 A1CF rjmp L8
012A X1:
012A .dbline -2
012A L1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -