📄 display.lis
字号:
.module display.c
.area text(rom, con, rel)
0000 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\display.c
.area data(ram, con, rel)
0000 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\display.c
0000 _Led_CHR::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\display.c
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\display.c
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\display.c
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\display.c
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\display.c
000A .dbfile C:\DOCUME~1\Administrator\桌面\手操器\display.c
000A .dbsym e Led_CHR _Led_CHR A[10:10]c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\手操器\display.c
0000 .dbfunc e WordToBcd _WordToBcd fV
0000 ; WordP -> R10,R11
.even
0000 _WordToBcd::
0000 AA92 st -y,R10
0002 BA92 st -y,R11
0004 5801 movw R10,R16
0006 .dbline -1
0006 .dbline 28
0006 ; #include <iom16v.h>
0006 ; #include <macros.h>
0006 ; #include "TypeDef.h"
0006 ; #define LED_Black 0x00
0006 ; #define LED_C 0x39
0006 ; #define LED_U 0x3e
0006 ; #define LED_u 0x1c
0006 ; #define LED_S 0x6d
0006 ; #define LED_I 0x04
0006 ; #define LED_n 0x54
0006 ; #define LED_o 0x5c
0006 ; #define LED__ 0x40
0006 ; #define LED_H 0x76
0006 ; #define LED_L 0x38
0006 ; #define LED_e 0x7b
0006 ; #define LED_r 0x60
0006 ; unsigned char const Led_CHR[10]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
0006 ; extern unsigned int NeedModifyVariable;
0006 ; extern DataPackageType OutputSignal;
0006 ; unsigned char BCDCodeArray[4];
0006 ; extern unsigned char DisStatus;
0006 ; extern unsigned char DisBuffer[8];
0006 ; extern unsigned char SysErrorCode;
0006 ; extern DataPackageType Current4_20mA;
0006 ; extern unsigned char Para_Dis_mody;
0006 ;
0006 ; void WordToBcd(unsigned int WordP)
0006 ; {
0006 .dbline 30
0006 ;
0006 ; BCDCodeArray[0]=WordP/1000%10;
0006 28EE ldi R18,1000
0008 33E0 ldi R19,3
000A 8501 movw R16,R10
000C 0E940000 xcall div16u
0010 2AE0 ldi R18,10
0012 30E0 ldi R19,0
0014 0E940000 xcall mod16u
0018 00930000 sts _BCDCodeArray,R16
001C .dbline 31
001C ; BCDCodeArray[1]=WordP/100%10;
001C 24E6 ldi R18,100
001E 30E0 ldi R19,0
0020 8501 movw R16,R10
0022 0E940000 xcall div16u
0026 2AE0 ldi R18,10
0028 30E0 ldi R19,0
002A 0E940000 xcall mod16u
002E 00930100 sts _BCDCodeArray+1,R16
0032 .dbline 32
0032 ; BCDCodeArray[2]=WordP/10%10;
0032 2AE0 ldi R18,10
0034 30E0 ldi R19,0
0036 8501 movw R16,R10
0038 0E940000 xcall div16u
003C 2AE0 ldi R18,10
003E 30E0 ldi R19,0
0040 0E940000 xcall mod16u
0044 00930200 sts _BCDCodeArray+2,R16
0048 .dbline 33
0048 ; BCDCodeArray[3]=WordP%10;
0048 2AE0 ldi R18,10
004A 30E0 ldi R19,0
004C 8501 movw R16,R10
004E 0E940000 xcall mod16u
0052 00930300 sts _BCDCodeArray+3,R16
0056 .dbline -2
0056 L5:
0056 .dbline 0 ; func end
0056 B990 ld R11,y+
0058 A990 ld R10,y+
005A 0895 ret
005C .dbsym r WordP 10 i
005C .dbend
005C .dbfunc e FillBCDToDisBuffer _FillBCDToDisBuffer fV
005C ; i -> R16
.even
005C _FillBCDToDisBuffer::
005C .dbline -1
005C .dbline 39
005C ; }
005C ;
005C ;
005C ; //填写BCD码到显示缓冲区,并做灭零处理。
005C ; void FillBCDToDisBuffer(void)
005C ; {
005C .dbline 41
005C ; unsigned char i;
005C ; DisBuffer[4]=Led_CHR[BCDCodeArray[0]];
005C 80E0 ldi R24,<_Led_CHR
005E 90E0 ldi R25,>_Led_CHR
0060 E0910000 lds R30,_BCDCodeArray
0064 FF27 clr R31
0066 E80F add R30,R24
0068 F91F adc R31,R25
006A 2080 ldd R2,z+0
006C 20920400 sts _DisBuffer+4,R2
0070 .dbline 42
0070 ; DisBuffer[5]=Led_CHR[BCDCodeArray[1]];
0070 E0910100 lds R30,_BCDCodeArray+1
0074 FF27 clr R31
0076 E80F add R30,R24
0078 F91F adc R31,R25
007A 2080 ldd R2,z+0
007C 20920500 sts _DisBuffer+5,R2
0080 .dbline 43
0080 ; DisBuffer[6]=Led_CHR[BCDCodeArray[2]];
0080 E0910200 lds R30,_BCDCodeArray+2
0084 FF27 clr R31
0086 E80F add R30,R24
0088 F91F adc R31,R25
008A 2080 ldd R2,z+0
008C 20920600 sts _DisBuffer+6,R2
0090 .dbline 44
0090 ; DisBuffer[7]=Led_CHR[BCDCodeArray[3]];
0090 E0910300 lds R30,_BCDCodeArray+3
0094 FF27 clr R31
0096 E80F add R30,R24
0098 F91F adc R31,R25
009A 2080 ldd R2,z+0
009C 20920700 sts _DisBuffer+7,R2
00A0 .dbline 46
00A0 ;
00A0 ; for( i=0;i<3;i++ )
00A0 0027 clr R16
00A2 12C0 xjmp L20
00A4 L17:
00A4 .dbline 47
00A4 ; {
00A4 .dbline 48
00A4 ; if( DisBuffer[4+i]==Led_CHR[0] )
00A4 80E0 ldi R24,<_DisBuffer+4
00A6 90E0 ldi R25,>_DisBuffer+4
00A8 E02F mov R30,R16
00AA FF27 clr R31
00AC E80F add R30,R24
00AE F91F adc R31,R25
00B0 2080 ldd R2,z+0
00B2 30900000 lds R3,_Led_CHR
00B6 2314 cp R2,R3
00B8 49F4 brne L19
00BA X0:
00BA .dbline 49
00BA ; DisBuffer[4+i]=LED_Black;
00BA E02F mov R30,R16
00BC FF27 clr R31
00BE E80F add R30,R24
00C0 F91F adc R31,R25
00C2 2224 clr R2
00C4 2082 std z+0,R2
00C6 .dbline 50
00C6 ; else break;
00C6 L22:
00C6 .dbline 51
00C6 ; }
00C6 L18:
00C6 .dbline 46
00C6 0395 inc R16
00C8 L20:
00C8 .dbline 46
00C8 0330 cpi R16,3
00CA 60F3 brlo L17
00CC X1:
00CC L19:
00CC .dbline -2
00CC L9:
00CC .dbline 0 ; func end
00CC 0895 ret
00CE .dbsym r i 16 c
00CE .dbend
00CE .dbfunc e UpdateDisplay _UpdateDisplay fV
00CE ; i -> R20
.even
00CE _UpdateDisplay::
00CE 0E940000 xcall push_xgsetF000
00D2 .dbline -1
00D2 .dbline 59
00D2 ; }
00D2 ;
00D2 ;
00D2 ;
00D2 ; //--------------------------------------------------------------------------------------
00D2 ; //更新显示函数,
00D2 ; void UpdateDisplay(void)
00D2 ; {
00D2 .dbline 62
00D2 ; unsigned char i;
00D2 ;
00D2 ; for( i=0;i<4;i++ )
00D2 4427 clr R20
00D4 09C0 xjmp L29
00D6 L26:
00D6 .dbline 63
00D6 ; DisBuffer[i+4]=LED_Black;
00D6 80E0 ldi R24,<_DisBuffer+4
00D8 90E0 ldi R25,>_DisBuffer+4
00DA E42F mov R30,R20
00DC FF27 clr R31
00DE E80F add R30,R24
00E0 F91F adc R31,R25
00E2 2224 clr R2
00E4 2082 std z+0,R2
00E6 L27:
00E6 .dbline 62
00E6 4395 inc R20
00E8 L29:
00E8 .dbline 62
00E8 4430 cpi R20,4
00EA A8F3 brlo L26
00EC X2:
00EC .dbline 64
00EC ; switch(DisStatus)
00EC 60910000 lds R22,_DisStatus
00F0 7727 clr R23
00F2 6030 cpi R22,0
00F4 6707 cpc R22,R23
00F6 A9F0 breq L34
00F8 X3:
00F8 6130 cpi R22,1
00FA E0E0 ldi R30,0
00FC 7E07 cpc R23,R30
00FE 09F4 brne X17
0100 92C0 xjmp L64
0102 X17:
0102 X4:
0102 6230 cpi R22,2
0104 E0E0 ldi R30,0
0106 7E07 cpc R23,R30
0108 09F4 brne X18
010A 8DC0 xjmp L64
010C X18:
010C X5:
010C 6330 cpi R22,3
010E E0E0 ldi R30,0
0110 7E07 cpc R23,R30
0112 09F4 brne X19
0114 A7C0 xjmp L71
0116 X19:
0116 X6:
0116 6430 cpi R22,4
0118 E0E0 ldi R30,0
011A 7E07 cpc R23,R30
011C 09F4 brne X20
011E A2C0 xjmp L71
0120 X20:
0120 X7:
0120 D4C0 xjmp L32
0122 L34:
0122 .dbline 67
0122 ; {
0122 ; case Working_DDS :
0122 ; WordToBcd(Current4_20mA.Pv);
0122 00910A00 lds R16,_Current4_20mA+10
0126 10910B00 lds R17,_Current4_20mA+10+1
012A 6ADF xcall _WordToBcd
012C .dbline 68
012C ; DisBuffer[0]=Led_CHR[BCDCodeArray[0]];
012C 80E0 ldi R24,<_Led_CHR
012E 90E0 ldi R25,>_Led_CHR
0130 E0910000 lds R30,_BCDCodeArray
0134 FF27 clr R31
0136 E80F add R30,R24
0138 F91F adc R31,R25
013A 2080 ldd R2,z+0
013C 20920000 sts _DisBuffer,R2
0140 .dbline 69
0140 ; DisBuffer[1]=Led_CHR[BCDCodeArray[1]];
0140 E0910100 lds R30,_BCDCodeArray+1
0144 FF27 clr R31
0146 E80F add R30,R24
0148 F91F adc R31,R25
014A 2080 ldd R2,z+0
014C 20920100 sts _DisBuffer+1,R2
0150 .dbline 70
0150 ; DisBuffer[2]=Led_CHR[BCDCodeArray[2]] | 0x80;
0150 E0910200 lds R30,_BCDCodeArray+2
0154 FF27 clr R31
0156 E80F add R30,R24
0158 F91F adc R31,R25
015A 8081 ldd R24,z+0
015C 8068 ori R24,128
015E 80930200 sts _DisBuffer+2,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -