⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h4001.lis

📁 用AVR单片机ATMega32通过U2270B读取H4001只读RFID卡号的范例
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -