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

📄 main.lis

📁 环保型IC卡门禁系统的C程序
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 7
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; #include "lcd1602.h"
 0000           ; 
 0000           ; //端口初始化
 0000           ; void port_init(void)
 0000           ; {                    //  IR_receiver ----- PB0
 0000                   .dbline 8
 0000           ;  PORTB = 0x02;       //  LCD_D7~D4   ----- PB7~pB4
 0000 82E0              ldi R24,2
 0002 88BB              out 0x18,R24
 0004                   .dbline 9
 0004           ;  DDRB  = 0xfd;       //  LCD_EN      ----- PC0
 0004 8DEF              ldi R24,253
 0006 87BB              out 0x17,R24
 0008                   .dbline 10
 0008           ;  PORTC = 0x00;       //  LCD_RS      ----- PC1
 0008 2224              clr R2
 000A 25BA              out 0x15,R2
 000C                   .dbline 11
 000C           ;  DDRC  = 0xff;       //  SW1       ----- PD1
 000C 8FEF              ldi R24,255
 000E 84BB              out 0x14,R24
 0010                   .dbline 12
 0010           ;  PORTD = 0x0f;       //  SW2       ----- PD0
 0010 8FE0              ldi R24,15
 0012 82BB              out 0x12,R24
 0014                   .dbline 13
 0014           ;  DDRD  = 0xf0;       //  LCD_RW      ----- GND      
 0014 80EF              ldi R24,240
 0016 81BB              out 0x11,R24
 0018                   .dbline -2
 0018           L1:
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbend
 001A                   .dbfunc e menu_Init _menu_Init fV
 001A           ;       Total_ge -> R20
 001A           ;      Total_shi -> R22
 001A           ;          Total -> R10
                        .even
 001A           _menu_Init::
 001A 00D0              rcall push_gset3
 001C 2297              sbiw R28,2
 001E                   .dbline -1
 001E                   .dbline 17
 001E           ; }
 001E           ; 
 001E           ; void menu_Init(void)
 001E           ; {  
 001E                   .dbline 18
 001E           ;   unsigned char Total = 0 , Total_shi = 0 , Total_ge = 0 ;
 001E AA24              clr R10
 0020                   .dbline 18
 0020 6627              clr R22
 0022                   .dbline 18
 0022 4427              clr R20
 0024                   .dbline 20
 0024           ;   
 0024           ;   LCD_init();   //  液晶初始化
 0024 00D0              rcall _LCD_init
 0026                   .dbline 21
 0026           ;   delay_nms(2);
 0026 02E0              ldi R16,2
 0028 10E0              ldi R17,0
 002A 00D0              rcall _delay_nms
 002C                   .dbline 23
 002C           ; 
 002C           ;   Total = EEPROM_read(511) ;
 002C 0FEF              ldi R16,511
 002E 11E0              ldi R17,1
 0030 00D0              rcall _EEPROM_read
 0032 A02E              mov R10,R16
 0034                   .dbline 24
 0034           ;   Total_shi = ( Total / 10 ) ;
 0034 1AE0              ldi R17,10
 0036 00D0              rcall div8u
 0038 602F              mov R22,R16
 003A                   .dbline 25
 003A           ;   Total_ge  = ( Total % 10 ) ;
 003A 1AE0              ldi R17,10
 003C 0A2D              mov R16,R10
 003E 00D0              rcall mod8u
 0040 402F              mov R20,R16
 0042                   .dbline 27
 0042           ;   
 0042           ;   LCD_write_string(1,0,"Jason  Janitor");
 0042 80E0              ldi R24,<L3
 0044 90E0              ldi R25,>L3
 0046 9983              std y+1,R25
 0048 8883              std y+0,R24
 004A 2227              clr R18
 004C 01E0              ldi R16,1
 004E 00D0              rcall _LCD_write_string
 0050                   .dbline 28
 0050           ;   LCD_write_string(2,1,"Total :   /83");
 0050 80E0              ldi R24,<L4
 0052 90E0              ldi R25,>L4
 0054 9983              std y+1,R25
 0056 8883              std y+0,R24
 0058 21E0              ldi R18,1
 005A 02E0              ldi R16,2
 005C 00D0              rcall _LCD_write_string
 005E                   .dbline 29
 005E           ;   display( Total_shi , 26 );                                                                                                                                                            
 005E 2AE1              ldi R18,26
 0060 062F              mov R16,R22
 0062 00D0              rcall _display
 0064                   .dbline 30
 0064           ;   display( Total_ge  , 27 );
 0064 2BE1              ldi R18,27
 0066 042F              mov R16,R20
 0068 00D0              rcall _display
 006A                   .dbline 32
 006A           ;   
 006A           ;   Menu_flag  = 0 ; 
 006A 2224              clr R2
 006C 20920000          sts _Menu_flag,R2
 0070                   .dbline 33
 0070           ;   Wrong_flag  = 0 ; 
 0070 20920000          sts _Wrong_flag,R2
 0074                   .dbline 34
 0074           ;   Exist_flag  = 0 ;
 0074 20920000          sts _Exist_flag,R2
 0078 10C0              rjmp L6
 007A           L5:
 007A                   .dbline 37
 007A           ;   
 007A           ;   while(1)
 007A           ;   {
 007A                   .dbline 38
 007A           ;     if(IC_SW==0)
 007A 80B3              in R24,0x10
 007C 8870              andi R24,8
 007E 80BB              out 0x10,R24
 0080 8823              tst R24
 0082 51F4              brne L8
 0084                   .dbline 39
 0084           ;       {
 0084                   .dbline 40
 0084           ;       delay_nms(50);               //   检测是否有卡插入
 0084 02E3              ldi R16,50
 0086 10E0              ldi R17,0
 0088 00D0              rcall _delay_nms
 008A                   .dbline 41
 008A           ;         if(IC_SW==0)
 008A 80B3              in R24,0x10
 008C 8870              andi R24,8
 008E 80BB              out 0x10,R24
 0090 8823              tst R24
 0092 11F4              brne L10
 0094                   .dbline 42
 0094           ;         { 
 0094                   .dbline 43
 0094           ;           Read_Card();      //  读IC-Card 函数
 0094 00D0              rcall _Read_Card
 0096                   .dbline 44
 0096           ;               Card_Verify();
 0096 00D0              rcall _Card_Verify
 0098                   .dbline 45
 0098           ;       }
 0098           L10:
 0098                   .dbline 46
 0098           ;       }
 0098           L8:
 0098                   .dbline 48
 0098 00D0              rcall _Menu
 009A                   .dbline 49
 009A           L6:
 009A                   .dbline 36
 009A EFCF              rjmp L5
 009C           X0:
 009C                   .dbline -2
 009C           L2:
 009C 2296              adiw R28,2
 009E 00D0              rcall pop_gset3
 00A0                   .dbline 0 ; func end
 00A0 0895              ret
 00A2                   .dbsym r Total_ge 20 c
 00A2                   .dbsym r Total_shi 22 c
 00A2                   .dbsym r Total 10 c
 00A2                   .dbend
 00A2                   .dbfunc e main _main fV
                        .even
 00A2           _main::
 00A2                   .dbline -1
 00A2                   .dbline 54
 00A2           ;       
 00A2           ;       Menu();
 00A2           ;   }
 00A2           ; }
 00A2           ; 
 00A2           ; 
 00A2           ; void main (void)
 00A2           ; {
 00A2                   .dbline 55
 00A2           ;   port_init();   //  端口初始化
 00A2 AEDF              rcall _port_init
 00A4                   .dbline 57
 00A4           ;   
 00A4           ;   delay_nms(1);
 00A4 01E0              ldi R16,1
 00A6 10E0              ldi R17,0
 00A8 00D0              rcall _delay_nms
 00AA                   .dbline 59
 00AA           ;   
 00AA           ;   menu_Init();
 00AA B7DF              rcall _menu_Init
 00AC                   .dbline -2
 00AC           L12:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\main.c
 0000           L4:
 0000                   .blkb 14
                        .area idata
 0000 546F74616C203A2020202F383300      .byte 'T,'o,'t,'a,'l,32,58,32,32,32,47,56,51,0
                        .area data(ram, con, rel)
 000E                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\main.c
 000E           L3:
 000E                   .blkb 15
                        .area idata
 000E 4A61736F6E20204A616E69746F7200    .byte 'J,'a,'s,'o,'n,32,32,'J,'a,'n,'i,'t,'o,'r,0
                        .area data(ram, con, rel)
 001D                   .dbfile D:\PROGRA~1\ICC\Pro(AVR)\环保型IC卡门禁系统\main.c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -