📄 main.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 + -