📄 h4001.lis
字号:
00AC 1895 reti
00AE .dbend
00AE .dbfunc e init_devices _init_devices fV
.even
00AE _init_devices::
00AE .dbline -1
00AE .dbline 115
00AE ; }
00AE ;
00AE ;
00AE ; //call this routine to initialise all peripherals
00AE ; void init_devices(void) //初始化
00AE ; {
00AE .dbline 117
00AE ; //stop errant interrupts until set up
00AE ; CLI(); //disable all interrupts
00AE F894 cli
00B0 .dbline 118
00B0 ; port_init();
00B0 A7DF xcall _port_init
00B2 .dbline 119
00B2 ; timer0_init();
00B2 B4DF xcall _timer0_init
00B4 .dbline 120
00B4 ; timer1_init();
00B4 D9DF xcall _timer1_init
00B6 .dbline 121
00B6 ; uart0_init();
00B6 E6DF xcall _uart0_init
00B8 .dbline 122
00B8 ; MCUCR = 0x02;
00B8 82E0 ldi R24,2
00BA 85BF out 0x35,R24
00BC .dbline 123
00BC ; GICR = 0x40;
00BC 80E4 ldi R24,64
00BE 8BBF out 0x3b,R24
00C0 .dbline 124
00C0 ; TIMSK = 0x01; //timer interrupt sources
00C0 81E0 ldi R24,1
00C2 89BF out 0x39,R24
00C4 .dbline 125
00C4 ; SEI(); //re-enable interrupts
00C4 7894 sei
00C6 .dbline -2
00C6 L9:
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbend
00C8 .dbfunc e ldelay _ldelay fV
00C8 ; i -> R16,R17
.even
00C8 _ldelay::
00C8 .dbline -1
00C8 .dbline 131
00C8 ; //all peripherals are now initialised
00C8 ; }
00C8 ;
00C8 ;
00C8 ; void ldelay(unsigned int i) //长延时
00C8 ; {
00C8 L11:
00C8 .dbline 132
00C8 L12:
00C8 .dbline 132
00C8 ; while(i--);
00C8 1801 movw R2,R16
00CA 0150 subi R16,1
00CC 1040 sbci R17,0
00CE 2220 tst R2
00D0 D9F7 brne L11
00D2 3320 tst R3
00D4 C9F7 brne L11
00D6 X0:
00D6 .dbline -2
00D6 L10:
00D6 .dbline 0 ; func end
00D6 0895 ret
00D8 .dbsym r i 16 i
00D8 .dbend
00D8 .dbfunc e beeps _beeps fV
00D8 ; i -> R20
.even
00D8 _beeps::
00D8 0E940000 xcall push_gset1
00DC 402F mov R20,R16
00DE .dbline -1
00DE .dbline 135
00DE ; }
00DE ;
00DE ; void beeps(unsigned char i) { //讯响
00DE 14C0 xjmp L16
00E0 L15:
00E0 .dbline 136
00E0 .dbline 137
00E0 AC98 cbi 0x15,4
00E2 .dbline 138
00E2 00E6 ldi R16,60000
00E4 1AEE ldi R17,234
00E6 F0DF xcall _ldelay
00E8 .dbline 139
00E8 00E6 ldi R16,60000
00EA 1AEE ldi R17,234
00EC EDDF xcall _ldelay
00EE .dbline 140
00EE 00E6 ldi R16,60000
00F0 1AEE ldi R17,234
00F2 EADF xcall _ldelay
00F4 .dbline 141
00F4 AC9A sbi 0x15,4
00F6 .dbline 142
00F6 00E6 ldi R16,60000
00F8 1AEE ldi R17,234
00FA E6DF xcall _ldelay
00FC .dbline 143
00FC 00E6 ldi R16,60000
00FE 1AEE ldi R17,234
0100 E3DF xcall _ldelay
0102 .dbline 144
0102 00E6 ldi R16,60000
0104 1AEE ldi R17,234
0106 E0DF xcall _ldelay
0108 .dbline 145
0108 L16:
0108 .dbline 136
0108 ; while(i--) {
0108 242E mov R2,R20
010A 3324 clr R3
010C 4150 subi R20,1
010E 2220 tst R2
0110 39F7 brne L15
0112 .dbline -2
0112 L14:
0112 0E940000 xcall pop_gset1
0116 .dbline 0 ; func end
0116 0895 ret
0118 .dbsym r i 20 c
0118 .dbend
0118 .dbfunc e wait_tx _wait_tx fV
.even
0118 _wait_tx::
0118 .dbline -1
0118 .dbline 148
0118 ; beep_0();
0118 ; ldelay(60000);
0118 ; ldelay(60000);
0118 ; ldelay(60000);
0118 ; beep_1();
0118 ; ldelay(60000);
0118 ; ldelay(60000);
0118 ; ldelay(60000);
0118 ; }
0118 ; }
0118 ;
0118 ; void wait_tx() { //等待发送完一个字节
0118 L19:
0118 .dbline 149
0118 L20:
0118 .dbline 149
0118 ; while(!(UCSRA&0x40));
0118 5E9B sbis 0xb,6
011A FECF rjmp L19
011C .dbline 150
011C ; UCSRA|=0x40;
011C 5E9A sbi 0xb,6
011E .dbline -2
011E L18:
011E .dbline 0 ; func end
011E 0895 ret
0120 .dbend
0120 .dbfunc e R_H4001 _R_H4001 fV
0120 ; j -> y+1
0120 ; bits -> R22,R23
0120 ; i -> y+0
.even
0120 _R_H4001::
0120 0E940000 xcall push_gset5
0124 2C97 sbiw R28,12
0126 .dbline -1
0126 .dbline 155
0126 ; }
0126 ;
0126 ;
0126 ; void R_H4001() //读卡
0126 ; {
0126 .dbline 156
0126 ; unsigned char i=0,j=0;
0126 0024 clr R0
0128 0882 std y+0,R0
012A .dbline 156
012A 0982 std y+1,R0
012C .dbline 157
012C ; unsigned int bits=0;
012C 6627 clr R22
012E 7727 clr R23
0130 .dbline 158
0130 ; data1=0;
0130 2224 clr R2
0132 2092F700 sts _data1,R2
0136 .dbline 159
0136 0882 std y+0,R0
0138 0BC0 xjmp L26
013A L23:
013A .dbline 159
013A .dbline 160
013A 80E0 ldi R24,<_decode
013C 90E0 ldi R25,>_decode
013E E881 ldd R30,y+0
0140 FF27 clr R31
0142 E80F add R30,R24
0144 F91F adc R31,R25
0146 81E0 ldi R24,1
0148 8083 std z+0,R24
014A .dbline 161
014A L24:
014A .dbline 159
014A 0880 ldd R0,y+0
014C 0394 inc R0
014E 0882 std y+0,R0
0150 L26:
0150 .dbline 159
0150 ; for (i=0;i<192;i++) {
0150 8881 ldd R24,y+0
0152 803C cpi R24,192
0154 90F3 brlo L23
0156 .dbline 162
0156 0024 clr R0
0158 0882 std y+0,R0
015A 0BC0 xjmp L30
015C L27:
015C .dbline 162
015C .dbline 163
015C 80E0 ldi R24,<_rfiddata
015E 90E0 ldi R25,>_rfiddata
0160 E881 ldd R30,y+0
0162 FF27 clr R31
0164 E80F add R30,R24
0166 F91F adc R31,R25
0168 2224 clr R2
016A 2082 std z+0,R2
016C .dbline 164
016C L28:
016C .dbline 162
016C 0880 ldd R0,y+0
016E 0394 inc R0
0170 0882 std y+0,R0
0172 L30:
0172 .dbline 162
0172 ; decode[i]=1;
0172 ; }
0172 ; for (i=0;i<64;i++) {
0172 8881 ldd R24,y+0
0174 8034 cpi R24,64
0176 90F3 brlo L27
0178 .dbline 165
0178 ; rfiddata[i]=0;
0178 ; }
0178 ; RFW_1();
0178 AE9A sbi 0x15,6
017A .dbline 166
017A ; data1=0;
017A 2224 clr R2
017C 2092F700 sts _data1,R2
0180 .dbline 167
0180 ; lastbit=0;
0180 20920600 sts _lastbit,R2
0184 .dbline 168
0184 ; TCNT1=0;
0184 3324 clr R3
0186 3DBC out 0x2d,R3
0188 2CBC out 0x2c,R2
018A .dbline 169
018A ; half=0;
018A 20920700 sts _half,R2
018E .dbline 170
018E ; j=0;
018E 0024 clr R0
0190 0982 std y+1,R0
0192 .dbline 171
0192 6627 clr R22
0194 7727 clr R23
0196 EAC0 xjmp L34
0198 X1:
0198 .dbline 171
0198 ; for (bits=0;bits<256;bits++) {
0198 L35:
0198 .dbline 174
0198 .dbline 174
0198 L36:
0198 .dbline 174
0198 ; // while (((!(PINC&0x80))==lastbit)& (TCNT1<20000)) { } //low level
0198 ; // while (((!(PINC&0x80))==lastbit)& (TCNT1<20000)) { }
0198 ; while (((!(RFID_IN))==lastbit)& (TCNT1<20000)) { }
0198 9F99 sbic 0x13,7
019A 03C0 rjmp L40
019C 41E0 ldi R20,1
019E 50E0 ldi R21,0
01A0 02C0 xjmp L41
01A2 L40:
01A2 4427 clr R20
01A4 5527 clr R21
01A6 L41:
01A6 20900600 lds R2,_lastbit
01AA 3324 clr R3
01AC 4215 cp R20,R2
01AE 5305 cpc R21,R3
01B0 21F4 brne L38
01B2 81E0 ldi R24,1
01B4 90E0 ldi R25,0
01B6 5C01 movw R10,R24
01B8 02C0 xjmp L39
01BA L38:
01BA AA24 clr R10
01BC BB24 clr R11
01BE L39:
01BE 8CB5 in R24,0x2c
01C0 9DB5 in R25,0x2d
01C2 8032 cpi R24,32
01C4 EEE4 ldi R30,78
01C6 9E07 cpc R25,R30
01C8 18F4 brsh L42
01CA 41E0 ldi R20,1
01CC 50E0 ldi R21,0
01CE 02C0 xjmp L43
01D0 L42:
01D0 4427 clr R20
01D2 5527 clr R21
01D4 L43:
01D4 1501 movw R2,R10
01D6 2422 and R2,R20
01D8 3522 and R3,R21
01DA 2220 tst R2
01DC E9F6 brne L35
01DE 3320 tst R3
01E0 D9F6 brne L35
01E2 X2:
01E2 .dbline 175
01E2 ; tcomp=TCNT1;
01E2 2CB4 in R2,0x2c
01E4 3DB4 in R3,0x2d
01E6 30920500 sts _tcomp+1,R3
01EA 20920400 sts _tcomp,R2
01EE .dbline 176
01EE ; TCNT1=0;
01EE 2224 clr R2
01F0 3324 clr R3
01F2 3DBC out 0x2d,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -