📄 ssle4442.lis
字号:
.module SSLE4442.c
.area data(ram, con, rel)
0000 _table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .blkb 2
.area idata
000A 7971 .byte 'y,'q
.area data(ram, con, rel)
000C .blkb 2
.area idata
000C 7300 .byte 's,0
.area data(ram, con, rel)
000E .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
000E .dbsym e table _table A[14:14]c
000E _EEEEE::
000E .blkb 2
.area idata
000E 7979 .byte 'y,'y
.area data(ram, con, rel)
0010 .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
0010 .blkb 2
.area idata
0010 7979 .byte 'y,'y
.area data(ram, con, rel)
0012 .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
0012 .blkb 1
.area idata
0012 00 .byte 0
.area data(ram, con, rel)
0013 .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
0013 .dbsym e EEEEE _EEEEE A[5:5]c
0013 _FFFFF::
0013 .blkb 2
.area idata
0013 7171 .byte 'q,'q
.area data(ram, con, rel)
0015 .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
0015 .blkb 2
.area idata
0015 7171 .byte 'q,'q
.area data(ram, con, rel)
0017 .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
0017 .blkb 1
.area idata
0017 00 .byte 0
.area data(ram, con, rel)
0018 .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
0018 .dbsym e FFFFF _FFFFF A[5:5]c
.area text(rom, con, rel)
0000 .dbfile E:\张军\AVR\光盘内容\实例源文件\第六章程序\SSLE4442.c
0000 .dbfunc e Voice _Voice fV
0000 ; PD -> R16
.even
0000 _Voice::
0000 .dbline -1
0000 .dbline 32
0000 ; //*********************FileName:Main.c*********************//
0000 ; //*********************Author:Steaven2000@163.com**********//
0000 ; //********************Version:1.2*************************//
0000 ; //******************LastUpdate:2004-11-03*****************//
0000 ;
0000 ; #include <io8535v.h>
0000 ; #include <macros.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; //**********定义全局变量*******************//
0000 ; //查表0 1 2 3 4 5 6 7 8 9 E F P OFF
0000 ; uchar table[14]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x71,0x73,0x00};
0000 ; uchar ICcode[4];//定义IC卡复位时读出的4字节代码;
0000 ; uchar ICcontent[14];//定义IC卡有效信息;
0000 ; uchar Money[5];//定义IC卡内金额;
0000 ; uchar EEEEE[5]={0x79,0x79,0x79,0x79};
0000 ; uchar FFFFF[5]={0x71,0x71,0x71,0x71};
0000 ; uchar IC_Flag;//定义IC卡上电标志;
0000 ; uchar Num_Flag;//数标志;
0000 ; uchar Add_Flag;//加标志
0000 ; uchar Sub_Flag;//减标志
0000 ; uchar Init_Flag;//初始化标志
0000 ; uchar Repair_Flag;//修卡标志;
0000 ; uchar Enter_Flag;//确认标志
0000 ; uchar Point_Flag;//.标志
0000 ; uchar Key_Flag; //按键标志;
0000 ;
0000 ;
0000 ; //***********IC卡引脚信号处理***************//
0000 ; void Voice(uchar PD) //Voice=PD^7
0000 ; {if(PD==1) PORTD|=0x80;//Voice置1
0000 .dbline 32
0000 0130 cpi R16,1
0002 11F4 brne L2
0004 .dbline 32
0004 979A sbi 0x12,7
0006 03C0 rjmp L3
0008 L2:
0008 .dbline 33
0008 82B3 in R24,0x12
000A 8F7A andi R24,175
000C 82BB out 0x12,R24
000E L3:
000E .dbline -2
000E .dbline 34
000E ; else PORTD&=~80; //Voice置0
000E ; }
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r PD 16 c
0010 .dbend
0010 .dbfunc e RST _RST fV
0010 ; PD -> R16
.even
0010 _RST::
0010 .dbline -1
0010 .dbline 37
0010 ;
0010 ; void RST(uchar PD) //RST=PD^6
0010 ; {if(PD==1) PORTD|=0x40;//RST置1
0010 .dbline 37
0010 0130 cpi R16,1
0012 11F4 brne L5
0014 .dbline 37
0014 969A sbi 0x12,6
0016 01C0 rjmp L6
0018 L5:
0018 .dbline 38
0018 9698 cbi 0x12,6
001A L6:
001A .dbline -2
001A .dbline 39
001A ; else PORTD&=~0x40;//RST置0
001A ; }
001A L4:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r PD 16 c
001C .dbend
001C .dbfunc e CLK _CLK fV
001C ; PD -> R16
.even
001C _CLK::
001C .dbline -1
001C .dbline 42
001C ;
001C ; void CLK(uchar PD) //CLK=PD^5
001C ; {if(PD==1) PORTD|=0x20;//CLK置1
001C .dbline 42
001C 0130 cpi R16,1
001E 11F4 brne L8
0020 .dbline 42
0020 959A sbi 0x12,5
0022 01C0 rjmp L9
0024 L8:
0024 .dbline 43
0024 9598 cbi 0x12,5
0026 L9:
0026 .dbline -2
0026 .dbline 44
0026 ; else PORTD&=~0x20;//CLK置0
0026 ; }
0026 L7:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r PD 16 c
0028 .dbend
0028 .dbfunc e IO _IO fV
0028 ; PD -> R16
.even
0028 _IO::
0028 .dbline -1
0028 .dbline 47
0028 ;
0028 ; void IO(uchar PD) //IO=PD^4
0028 ; {if(PD==1) PORTD|=0x10;//IO置1
0028 .dbline 47
0028 0130 cpi R16,1
002A 11F4 brne L11
002C .dbline 47
002C 949A sbi 0x12,4
002E 01C0 rjmp L12
0030 L11:
0030 .dbline 48
0030 9498 cbi 0x12,4
0032 L12:
0032 .dbline -2
0032 .dbline 49
0032 ; else PORTD&=~0x10;//IO置0
0032 ; }
0032 L10:
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbsym r PD 16 c
0034 .dbend
0034 .dbfunc e SetIO _SetIO fV
0034 ; i -> R16
.even
0034 _SetIO::
0034 .dbline -1
0034 .dbline 52
0034 ;
0034 ; void SetIO(uchar i)//设置IO口属性
0034 ; {if(i==1) DDRD=0xf0; //IO口输出:1111 0000
0034 .dbline 52
0034 0130 cpi R16,1
0036 19F4 brne L14
0038 .dbline 52
0038 80EF ldi R24,240
003A 81BB out 0x11,R24
003C 02C0 rjmp L15
003E L14:
003E .dbline 53
003E ; else DDRD=0xe0; //IO口输如:1110 0000
003E 80EE ldi R24,224
0040 81BB out 0x11,R24
0042 L15:
0042 .dbline 54
0042 ; PORTD=0x00;//不带上拉电阻;
0042 2224 clr R2
0044 22BA out 0x12,R2
0046 .dbline -2
0046 .dbline 55
0046 ; }
0046 L13:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbsym r i 16 c
0048 .dbend
0048 .dbfunc e DelayUs _DelayUs fV
0048 ; i -> R16
.even
0048 _DelayUs::
0048 .dbline -1
0048 .dbline 60
0048 ;
0048 ; //**********延时函数(Us数量级)*********//
0048 ; //单周期指令执行时间,执行时间1/8us*分频系数(取8分频则刚好1us);
0048 ; void DelayUs(uchar i)
0048 ; {for(;i!=0;i--)
0048 .dbline 60
0048 02C0 rjmp L20
004A L17:
004A .dbline 61
004A 0000 nop
004C L18:
004C .dbline 60
004C 0A95 dec R16
004E L20:
004E .dbline 60
004E 0023 tst R16
0050 E1F7 brne L17
0052 .dbline -2
0052 .dbline 62
0052 ; NOP();
0052 ; }
0052 L16:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 16 c
0054 .dbend
0054 .dbfunc e DelayMs _DelayMs fV
0054 ; k -> R20
0054 ; j -> R22
0054 ; i -> R16,R17
.even
0054 _DelayMs::
0054 00D0 rcall push_gset2
0056 .dbline -1
0056 .dbline 66
0056 ;
0056 ; //****************延时函数(Ms数量级)*********//
0056 ; void DelayMs(uint i)
0056 ; {uchar j,k;
0056 .dbline 67
0056 ; for(;i!=0;i--)
0056 0DC0 rjmp L25
0058 L22:
0058 .dbline 68
0058 ; {for(k=0;k<4;k++)
0058 .dbline 68
0058 4427 clr R20
005A 07C0 rjmp L29
005C L26:
005C .dbline 69
005C .dbline 69
005C 6AEF ldi R22,250
005E 02C0 rjmp L33
0060 L30:
0060 .dbline 69
0060 0000 nop
0062 L31:
0062 .dbline 69
0062 6A95 dec R22
0064 L33:
0064 .dbline 69
0064 6623 tst R22
0066 E1F7 brne L30
0068 .dbline 69
0068 L27:
0068 .dbline 68
0068 4395 inc R20
006A L29:
006A .dbline 68
006A 4430 cpi R20,4
006C B8F3 brlo L26
006E .dbline 70
006E L23:
006E .dbline 67
006E 0150 subi R16,1
0070 1040 sbci R17,0
0072 L25:
0072 .dbline 67
0072 0030 cpi R16,0
0074 0107 cpc R16,R17
0076 81F7 brne L22
0078 X0:
0078 .dbline -2
0078 .dbline 71
0078 ; {for(j=250;j!=0;j--) NOP();}
0078 ; }
0078 ; }
0078 L21:
0078 00D0 rcall pop_gset2
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r k 20 c
007C .dbsym r j 22 c
007C .dbsym r i 16 i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -