📄 pp.lis
字号:
.module pp.c
.area lit(rom, con, rel)
0000 _table_1::
0000 2020202057454C434F4D452100 .byte 32,32,32,32,'W,'E,'L,'C,'O,'M,'E,33,0
000D .dbfile I:\刷卡器/define.h
000D .dbsym e table_1 _table_1 A[13:13]kc
000D _table_2::
000D 46444C4B464C444C4600 .byte 'F,'D,'L,'K,'F,'L,'D,'L,'F,0
0017 .dbsym e table_2 _table_2 A[10:10]kc
0017 _readcal1::
0017 AABB .byte 170,187
0019 0A21 .byte 10,33
001B 0001 .byte 0,1
001D FFFF .byte 255,255
001F FFFF .byte 255,255
0021 FFFF .byte 255,255
0023 2A .byte 42
0024 .dbsym e readcal1 _readcal1 A[13:13]kc
0024 _writecal1::
0024 AABB .byte 170,187
0026 1A22 .byte 26,34
0028 0001 .byte 0,1
002A FFFF .byte 255,255
002C FFFF .byte 255,255
002E FFFF .byte 255,255
0030 .dbsym e writecal1 _writecal1 A[12:12]kc
0030 _writecal2::
0030 506964616E2020323239313336303120 .byte 'P,'i,'d,'a,'n,32,32,50,50,57,49,51,54,48,49,32
0040 00 .byte 0
0041 .dbsym e writecal2 _writecal2 A[17:17]kc
0041 _Name::
0041 4E414D453A00 .byte 'N,'A,'M,'E,58,0
0047 .dbsym e Name _Name A[6:6]kc
0047 _Num::
0047 4E554D3A00 .byte 'N,'U,'M,58,0
004C .dbsym e Num _Num A[5:5]kc
.area text(rom, con, rel)
0000 .dbfile I:\刷卡器/define.h
0000 .dbfile I:\刷卡器\pp.c
0000 .dbfunc e WriteDataLCM _WriteDataLCM fV
0000 ; WDLCM -> R20
.even
0000 _WriteDataLCM::
0000 00D0 rcall push_gset1
0002 402F mov R20,R16
0004 .dbline -1
0004 .dbline 7
0004 ; /*****************0XDFE4*****************************库定义*/
0004 ; #include <iom8v.h>
0004 ; #include <macros.h>
0004 ; #include "define.h"
0004 ; //*******************************************************************写数据11//
0004 ; void WriteDataLCM(unsigned char WDLCM)
0004 ; {
0004 .dbline 8
0004 ; ReadStatusLCM(); //检测忙
0004 22D0 rcall _ReadStatusLCM
0006 .dbline 9
0006 ; PORTB = WDLCM;
0006 48BB out 0x18,R20
0008 .dbline 10
0008 ; SET_LCD_RS;CLR_LCD_RW;SET_LCD_RS;CLR_LCD_RW;
0008 959A sbi 0x12,5
000A .dbline 10
000A 9698 cbi 0x12,6
000C .dbline 10
000C 959A sbi 0x12,5
000E .dbline 10
000E 9698 cbi 0x12,6
0010 .dbline 11
0010 ; CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;
0010 9798 cbi 0x12,7
0012 .dbline 11
0012 9798 cbi 0x12,7
0014 .dbline 11
0014 9798 cbi 0x12,7
0016 .dbline 11
0016 9798 cbi 0x12,7
0018 .dbline 11
0018 9798 cbi 0x12,7
001A .dbline 11
001A 9798 cbi 0x12,7
001C .dbline 12
001C ; SET_LCD_E;SET_LCD_E;
001C 979A sbi 0x12,7
001E .dbline 12
001E 979A sbi 0x12,7
0020 .dbline -2
0020 L1:
0020 00D0 rcall pop_gset1
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbsym r WDLCM 20 c
0024 .dbend
0024 .dbfunc e WriteCommandLCM _WriteCommandLCM fV
0024 ; BuysC -> R22
0024 ; WCLCM -> R20
.even
0024 _WriteCommandLCM::
0024 00D0 rcall push_gset2
0026 622F mov R22,R18
0028 402F mov R20,R16
002A .dbline -1
002A .dbline 16
002A ; }
002A ; //********************************************************************写指令12//
002A ; void WriteCommandLCM(unsigned char WCLCM,unsigned char BuysC) //BuysC为0时忽略忙检测
002A ; {
002A .dbline 17
002A ; if (BuysC) ReadStatusLCM(); //根据需要检测忙
002A 6623 tst R22
002C 09F0 breq L3
002E .dbline 17
002E 0DD0 rcall _ReadStatusLCM
0030 L3:
0030 .dbline 18
0030 ; PORTB = WCLCM;
0030 48BB out 0x18,R20
0032 .dbline 19
0032 ; CLR_LCD_RS;CLR_LCD_RW;
0032 9598 cbi 0x12,5
0034 .dbline 19
0034 9698 cbi 0x12,6
0036 .dbline 20
0036 ; CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;
0036 9798 cbi 0x12,7
0038 .dbline 20
0038 9798 cbi 0x12,7
003A .dbline 20
003A 9798 cbi 0x12,7
003C .dbline 20
003C 9798 cbi 0x12,7
003E .dbline 20
003E 9798 cbi 0x12,7
0040 .dbline 20
0040 9798 cbi 0x12,7
0042 .dbline 21
0042 ; SET_LCD_E;SET_LCD_E;
0042 979A sbi 0x12,7
0044 .dbline 21
0044 979A sbi 0x12,7
0046 .dbline -2
0046 L2:
0046 00D0 rcall pop_gset2
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbsym r BuysC 22 c
004A .dbsym r WCLCM 20 c
004A .dbend
004A .dbfunc e ReadStatusLCM _ReadStatusLCM fc
.even
004A _ReadStatusLCM::
004A .dbline -1
004A .dbline 25
004A ; }
004A ; //*******************************************************************读状态13//
004A ; unsigned char ReadStatusLCM(void)
004A ; {
004A .dbline 26
004A ; DDRB=0x00; //输入
004A 2224 clr R2
004C 27BA out 0x17,R2
004E .dbline 27
004E ; CLR_LCD_RS;SET_LCD_RW;
004E 9598 cbi 0x12,5
0050 .dbline 27
0050 969A sbi 0x12,6
0052 .dbline 28
0052 ; CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;CLR_LCD_E;
0052 9798 cbi 0x12,7
0054 .dbline 28
0054 9798 cbi 0x12,7
0056 .dbline 28
0056 9798 cbi 0x12,7
0058 .dbline 28
0058 9798 cbi 0x12,7
005A .dbline 28
005A 9798 cbi 0x12,7
005C .dbline 28
005C 9798 cbi 0x12,7
005E .dbline 29
005E ; SET_LCD_E;SET_LCD_E;
005E 979A sbi 0x12,7
0060 .dbline 29
0060 979A sbi 0x12,7
0062 L6:
0062 .dbline 30
0062 L7:
0062 .dbline 30
0062 ; while (PINB&0x80); //检测忙信号
0062 B799 sbic 0x16,7
0064 FECF rjmp L6
0066 .dbline 31
0066 ; DDRB=0xff;//变回输出
0066 8FEF ldi R24,255
0068 87BB out 0x17,R24
006A .dbline 32
006A ; return(PINB);
006A 06B3 in R16,0x16
006C .dbline -2
006C L5:
006C .dbline 0 ; func end
006C 0895 ret
006E .dbend
006E .dbfunc e DisplayOneChar _DisplayOneChar fV
006E ; DData -> y+4
006E ; Y -> R22
006E ; X -> R20
.even
006E _DisplayOneChar::
006E 00D0 rcall push_gset2
0070 622F mov R22,R18
0072 402F mov R20,R16
0074 .dbline -1
0074 .dbline 36
0074 ; }
0074 ; //*************************************************************显示一个字符14//
0074 ; void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
0074 ; {
0074 .dbline 37
0074 ; Y &= 0x1; X &= 0xF;
0074 6170 andi R22,1
0076 .dbline 37
0076 4F70 andi R20,15
0078 .dbline 38
0078 ; if (Y) X |= 0x40;
0078 6623 tst R22
007A 09F0 breq L10
007C .dbline 38
007C 4064 ori R20,64
007E L10:
007E .dbline 39
007E ; X |= 0x80;
007E 4068 ori R20,128
0080 .dbline 40
0080 ; WriteCommandLCM(X, 1);
0080 21E0 ldi R18,1
0082 042F mov R16,R20
0084 CFDF rcall _WriteCommandLCM
0086 .dbline 41
0086 ; WriteDataLCM(DData);
0086 0C81 ldd R16,y+4
0088 BBDF rcall _WriteDataLCM
008A .dbline 42
008A ; WriteCommandLCM(X, 1);
008A 21E0 ldi R18,1
008C 042F mov R16,R20
008E CADF rcall _WriteCommandLCM
0090 .dbline -2
0090 L9:
0090 00D0 rcall pop_gset2
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbsym l DData 4 c
0094 .dbsym r Y 22 c
0094 .dbsym r X 20 c
0094 .dbend
0094 .dbfunc e DisplayListChar _DisplayListChar fV
0094 ; j -> R20
0094 ; Leng -> R22
0094 ; DData -> R10,R11
0094 ; Y -> R12
0094 ; X -> R14
.even
0094 _DisplayListChar::
0094 00D0 rcall push_gset5
0096 C22E mov R12,R18
0098 E02E mov R14,R16
009A 2197 sbiw R28,1
009C AB84 ldd R10,y+11
009E BC84 ldd R11,y+12
00A0 6D85 ldd R22,y+13
00A2 .dbline -1
00A2 .dbline 46
00A2 ; }
00A2 ; //************************************************************显示ROM字符串15//
00A2 ; void DisplayListChar(unsigned char X, unsigned char Y, const unsigned char *DData,unsigned char Leng)
00A2 ; {
00A2 .dbline 48
00A2 ; unsigned char j;
00A2 ; Y &= 0x01;X &= 0x0F;
00A2 8C2D mov R24,R12
00A4 8170 andi R24,1
00A6 C82E mov R12,R24
00A8 .dbline 48
00A8 8E2D mov R24,R14
00AA 8F70 andi R24,15
00AC E82E mov R14,R24
00AE .dbline 49
00AE ; for(j=0;j<Leng;X++,j++)
00AE 4427 clr R20
00B0 0EC0 rjmp L16
00B2 L13:
00B2 .dbline 50
00B2 ; {
00B2 .dbline 51
00B2 ; if(X<=0xf)DisplayOneChar(X,Y,DData[j]);
00B2 8FE0 ldi R24,15
00B4 8E15 cp R24,R14
00B6 48F0 brlo L17
00B8 .dbline 51
00B8 E42F mov R30,R20
00BA FF27 clr R31
00BC EA0D add R30,R10
00BE FB1D adc R31,R11
00C0 E491 lpm R30,Z
00C2 E883 std y+0,R30
00C4 2C2D mov R18,R12
00C6 0E2D mov R16,R14
00C8 D2DF rcall _DisplayOneChar
00CA L17:
00CA .dbline 52
00CA L14:
00CA .dbline 49
00CA E394 inc R14
00CC 4395 inc R20
00CE L16:
00CE .dbline 49
00CE 4617 cp R20,R22
00D0 80F3 brlo L13
00D2 .dbline -2
00D2 L12:
00D2 2196 adiw R28,1
00D4 00D0 rcall pop_gset5
00D6 .dbline 0 ; func end
00D6 0895 ret
00D8 .dbsym r j 20 c
00D8 .dbsym r Leng 22 c
00D8 .dbsym r DData 10 pkc
00D8 .dbsym r Y 12 c
00D8 .dbsym r X 14 c
00D8 .dbend
00D8 .dbfunc e DisplayListChar1 _DisplayListChar1 fV
00D8 ; j -> R20
00D8 ; Leng -> R22
00D8 ; DData -> R10,R11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -