📄 erase_card.lis
字号:
00B8 ; Erase_flag -> R20
00B8 ; i -> R22
00B8 ; flag -> R10
.even
00B8 _Erase_Card::
00B8 00D0 rcall push_gset3
00BA .dbline -1
00BA .dbline 60
00BA ; }
00BA ;
00BA ; void Erase_Card(void) // 检测擦除位操作
00BA ; {
00BA .dbline 62
00BA ; //移位标志 // 擦除位置标志
00BA ; unsigned char i=0 , flag=0 , Erase_flag=0 ;
00BA 6627 clr R22
00BC .dbline 62
00BC AA24 clr R10
00BE .dbline 62
00BE 4427 clr R20
00C0 .dbline 64
00C0 ;
00C0 ; flag=0x01 ;
00C0 AA24 clr R10
00C2 A394 inc R10
00C4 .dbline 66
00C4 ;
00C4 ; if( IC_Codes_8[11] != 0 )
00C4 20900B00 lds R2,_IC_Codes_8+11
00C8 2220 tst R2
00CA 71F0 breq L7
00CC .dbline 67
00CC ; { // 检测该位是否为0,不为0则擦除该位
00CC .dbline 68
00CC ; for(i=0;i<8;i++)
00CC 0AC0 rjmp L13
00CE L10:
00CE .dbline 69
00CE ; {
00CE .dbline 70
00CE ; if ( (IC_Codes_8[12]&flag) != 0 ) // 检测到不为0的位则进行下面操作
00CE 20900C00 lds R2,_IC_Codes_8+12
00D2 2A20 and R2,R10
00D4 21F0 breq L14
00D6 .dbline 71
00D6 ; {
00D6 .dbline 72
00D6 ; Erase_flag = 95-i ; // 确定要擦除的位
00D6 4FE5 ldi R20,95
00D8 461B sub R20,R22
00DA .dbline 73
00DA ; Erase_bit(Erase_flag); // 擦除位
00DA 042F mov R16,R20
00DC 91DF rcall _Erase_bit
00DE .dbline 74
00DE ; }
00DE L14:
00DE .dbline 75
00DE AA0C lsl R10
00E0 .dbline 76
00E0 L11:
00E0 .dbline 68
00E0 6395 inc R22
00E2 L13:
00E2 .dbline 68
00E2 6830 cpi R22,8
00E4 A0F3 brlo L10
00E6 .dbline 77
00E6 ; flag=flag<<1;
00E6 ; }
00E6 ; }
00E6 2EC0 rjmp L8
00E8 L7:
00E8 .dbline 80
00E8 ;
00E8 ; else // 检测个位是否为0,为0则先擦除高字节数据再写位
00E8 ; {
00E8 .dbline 81
00E8 ; flag=0x01 ;
00E8 AA24 clr R10
00EA A394 inc R10
00EC .dbline 82
00EC ; if( IC_Codes_8[10] != 0 )
00EC 20900A00 lds R2,_IC_Codes_8+10
00F0 2220 tst R2
00F2 79F0 breq L17
00F4 .dbline 83
00F4 ; { // 检测该位是否为0,不为0则擦除该位
00F4 .dbline 84
00F4 ; for(i=0;i<8;i++)
00F4 6627 clr R22
00F6 0AC0 rjmp L23
00F8 L20:
00F8 .dbline 85
00F8 ; {
00F8 .dbline 86
00F8 ; if ( (IC_Codes_8[10]&flag) != 0 ) // 检测到不为0的位则进行下面操作
00F8 20900A00 lds R2,_IC_Codes_8+10
00FC 2A20 and R2,R10
00FE 21F0 breq L24
0100 .dbline 87
0100 ; {
0100 .dbline 88
0100 ; Erase_flag = 87-i ; // 确定要擦除的位
0100 47E5 ldi R20,87
0102 461B sub R20,R22
0104 .dbline 89
0104 ; Erase_bit(Erase_flag); // 擦除位
0104 042F mov R16,R20
0106 7CDF rcall _Erase_bit
0108 .dbline 90
0108 ; }
0108 L24:
0108 .dbline 91
0108 AA0C lsl R10
010A .dbline 92
010A L21:
010A .dbline 84
010A 6395 inc R22
010C L23:
010C .dbline 84
010C 6830 cpi R22,8
010E A0F3 brlo L20
0110 .dbline 93
0110 ; flag=flag<<1;
0110 ; }
0110 ; }
0110 19C0 rjmp L18
0112 L17:
0112 .dbline 96
0112 ;
0112 ; else // 检测个位是否为0,为0则先擦除高字节数据再写位
0112 ; {
0112 .dbline 97
0112 ; flag=0x01 ;
0112 AA24 clr R10
0114 A394 inc R10
0116 .dbline 98
0116 ; if( IC_Codes_8[9] != 0 )
0116 20900900 lds R2,_IC_Codes_8+9
011A 2220 tst R2
011C 79F0 breq L27
011E .dbline 99
011E ; { // 检测该位是否为0,不为0则擦除该位
011E .dbline 100
011E ; for(i=0;i<8;i++)
011E 6627 clr R22
0120 0AC0 rjmp L33
0122 L30:
0122 .dbline 101
0122 ; {
0122 .dbline 102
0122 ; if ( (IC_Codes_8[9]&flag) != 0 ) // 检测到不为0的位则进行下面操作
0122 20900900 lds R2,_IC_Codes_8+9
0126 2A20 and R2,R10
0128 21F0 breq L34
012A .dbline 103
012A ; {
012A .dbline 104
012A ; Erase_flag = 79-i ; // 确定要擦除的位
012A 4FE4 ldi R20,79
012C 461B sub R20,R22
012E .dbline 105
012E ; Erase_bit(Erase_flag); // 擦除位
012E 042F mov R16,R20
0130 67DF rcall _Erase_bit
0132 .dbline 106
0132 ; }
0132 L34:
0132 .dbline 107
0132 AA0C lsl R10
0134 .dbline 108
0134 L31:
0134 .dbline 100
0134 6395 inc R22
0136 L33:
0136 .dbline 100
0136 6830 cpi R22,8
0138 A0F3 brlo L30
013A .dbline 109
013A ; flag=flag<<1;
013A ; }
013A ; }
013A 04C0 rjmp L28
013C L27:
013C .dbline 112
013C ;
013C ; else // 若无数据可擦写,则显示0
013C ; {
013C .dbline 113
013C ; Erase_IC_FLAG=0;
013C 2224 clr R2
013E 20920000 sts _Erase_IC_FLAG,R2
0142 .dbline 114
0142 ; Write_Card_Value();
0142 00D0 rcall _Write_Card_Value
0144 .dbline 115
0144 ; }
0144 L28:
0144 .dbline 116
0144 ; }
0144 L18:
0144 .dbline 117
0144 L8:
0144 .dbline -2
0144 L6:
0144 00D0 rcall pop_gset3
0146 .dbline 0 ; func end
0146 0895 ret
0148 .dbsym r Erase_flag 20 c
0148 .dbsym r i 22 c
0148 .dbsym r flag 10 c
0148 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -