📄 led-8-2.lis
字号:
.module led-8-2.c
.area text(rom, con, rel)
0000 .dbfile E:\16实验程序\数码管显示2\led-8-2.c
0000 .dbfile E:\16实验程序\数码管显示2\encoder.h
0000 .dbfunc e encoder _encoder fc
0000 ; code -> R20
0000 ; num -> R16
.even
0000 _encoder::
0000 0E940000 xcall push_xgsetF000
0004 .dbline -1
0004 .dbline 3
0004 ; //数码管显示程序
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 .dbline 5
0004 ; #include<iom16v.h>
0004 ; //7段译码
0004 602F mov R22,R16
0006 7727 clr R23
0008 6030 cpi R22,0
000A 6707 cpc R22,R23
000C 29F1 breq L5
000E X0:
000E 6130 cpi R22,1
0010 E0E0 ldi R30,0
0012 7E07 cpc R23,R30
0014 19F1 breq L6
0016 X1:
0016 6230 cpi R22,2
0018 E0E0 ldi R30,0
001A 7E07 cpc R23,R30
001C 09F1 breq L7
001E X2:
001E 6330 cpi R22,3
0020 E0E0 ldi R30,0
0022 7E07 cpc R23,R30
0024 F9F0 breq L8
0026 X3:
0026 6430 cpi R22,4
0028 E0E0 ldi R30,0
002A 7E07 cpc R23,R30
002C E9F0 breq L9
002E X4:
002E 6530 cpi R22,5
0030 E0E0 ldi R30,0
0032 7E07 cpc R23,R30
0034 D9F0 breq L10
0036 X5:
0036 6630 cpi R22,6
0038 E0E0 ldi R30,0
003A 7E07 cpc R23,R30
003C C9F0 breq L11
003E X6:
003E 6730 cpi R22,7
0040 E0E0 ldi R30,0
0042 7E07 cpc R23,R30
0044 B9F0 breq L12
0046 X7:
0046 6830 cpi R22,8
0048 E0E0 ldi R30,0
004A 7E07 cpc R23,R30
004C A9F0 breq L13
004E X8:
004E 6930 cpi R22,9
0050 E0E0 ldi R30,0
0052 7E07 cpc R23,R30
0054 99F0 breq L14
0056 X9:
0056 13C0 xjmp L2
0058 L5:
0058 .dbline 8
0058 ; #include"encoder.h"
0058 ; //写74hc595
0058 ; #include"ch595.h"
0058 40EC ldi R20,192
005A .dbline 8
005A 11C0 xjmp L3
005C L6:
005C .dbline 10
005C ; #define ls138a 7
005C ; #define ls138b 6
005C 49EF ldi R20,249
005E .dbline 10
005E 0FC0 xjmp L3
0060 L7:
0060 .dbline 12
0060 ; #define ls138c 5
0060 ; #define ls138en 4
0060 44EA ldi R20,164
0062 .dbline 12
0062 0DC0 xjmp L3
0064 L8:
0064 .dbline 14
0064 ;
0064 ; unsigned long a1,a2,a3,a4,a5,a6,a7,a8;
0064 40EB ldi R20,176
0066 .dbline 14
0066 0BC0 xjmp L3
0068 L9:
0068 .dbline 16
0068 ;
0068 ; //按10进制分解各个位
0068 49E9 ldi R20,153
006A .dbline 16
006A 09C0 xjmp L3
006C L10:
006C .dbline 18
006C ; void disa(unsigned long data)
006C ; {
006C 42E9 ldi R20,146
006E .dbline 18
006E 07C0 xjmp L3
0070 L11:
0070 .dbline 20
0070 ; a8=data/10000000;
0070 ; a7=(data-a8*10000000)/1000000;
0070 42E8 ldi R20,130
0072 .dbline 20
0072 05C0 xjmp L3
0074 L12:
0074 .dbline 22
0074 ; a6=(data-a8*10000000-a7*1000000)/100000;
0074 ; a5=(data-a8*10000000-a7*1000000-a6*100000)/10000;
0074 48EF ldi R20,248
0076 .dbline 22
0076 03C0 xjmp L3
0078 L13:
0078 .dbline 24
0078 ; a4=(data-a8*10000000-a7*1000000-a6*100000-a5*10000)/1000;
0078 ; a3=(data-a8*10000000-a7*1000000-a6*100000-a5*10000-a4*1000)/100;
0078 40E8 ldi R20,128
007A .dbline 24
007A 01C0 xjmp L3
007C L14:
007C .dbline 26
007C ; a2=(data-a8*10000000-a7*1000000-a6*100000-a5*10000-a4*1000-a3*100)/10;
007C ; a1=(data-a8*10000000-a7*1000000-a6*100000-a5*10000-a4*1000-a3*100-a2*10);
007C 40E9 ldi R20,144
007E .dbline 26
007E L2:
007E L3:
007E .dbline 28
007E ; }
007E ;
007E 042F mov R16,R20
0080 .dbline -2
0080 L1:
0080 .dbline 0 ; func end
0080 0C940000 xjmp pop_xgsetF000
0084 .dbsym r code 20 c
0084 .dbsym r num 16 c
0084 .dbend
0084 .dbfile E:\16实验程序\数码管显示2\ch595.h
0084 .dbfunc e s_ms _s_ms fV
0084 ; t -> R16,R17
.even
0084 _s_ms::
0084 .dbline -1
0084 .dbline 8
0084 ; //ch595的数据输入
0084 ; #define clk 1
0084 ; #define rclk 2
0084 ; #define dat 3
0084 ;
0084 ; //延时函数
0084 ; void s_ms(unsigned int t)
0084 ; {
0084 .dbline 9
0084 ; for(;t>1;t--)
0084 02C0 xjmp L19
0086 L16:
0086 .dbline 10
0086 ; {
0086 .dbline 11
0086 ; }
0086 L17:
0086 .dbline 9
0086 0150 subi R16,1
0088 1040 sbci R17,0
008A L19:
008A .dbline 9
008A 81E0 ldi R24,1
008C 90E0 ldi R25,0
008E 8017 cp R24,R16
0090 9107 cpc R25,R17
0092 C8F3 brlo L16
0094 X10:
0094 .dbline -2
0094 L15:
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbsym r t 16 i
0096 .dbend
0096 .dbfunc e sendbyte _sendbyte fV
0096 ; tem -> R10
0096 ; i -> R22
0096 ; byte -> R20
.even
0096 _sendbyte::
0096 0E940000 xcall push_xgsetF00C
009A 402F mov R20,R16
009C .dbline -1
009C .dbline 15
009C ; }
009C ; //写74hc595函数
009C ; void sendbyte(uchar byte)
009C ; {
009C .dbline 17
009C ; uchar i,tem;
009C ; byte=encoder(byte); //译码
009C 042F mov R16,R20
009E B0DF xcall _encoder
00A0 402F mov R20,R16
00A2 .dbline 18
00A2 ; for(i=0;i<8;i++)
00A2 6627 clr R22
00A4 0CC0 xjmp L24
00A6 L21:
00A6 .dbline 19
00A6 ; {
00A6 .dbline 20
00A6 ; PORTA&=~(1<<clk);
00A6 D998 cbi 0x1b,1
00A8 .dbline 21
00A8 ; tem=(byte&0x80);
00A8 842F mov R24,R20
00AA 8078 andi R24,128
00AC A82E mov R10,R24
00AE .dbline 22
00AE ; if(tem==0)
00AE 8823 tst R24
00B0 11F4 brne L25
00B2 X11:
00B2 .dbline 23
00B2 ; {
00B2 .dbline 24
00B2 ; PORTA&=~(1<<dat);
00B2 DB98 cbi 0x1b,3
00B4 .dbline 25
00B4 ; }
00B4 01C0 xjmp L26
00B6 L25:
00B6 .dbline 27
00B6 ; else
00B6 ; {
00B6 .dbline 28
00B6 ; PORTA|=(1<<dat);
00B6 DB9A sbi 0x1b,3
00B8 .dbline 29
00B8 ; }
00B8 L26:
00B8 .dbline 30
00B8 ; byte=byte<<1;
00B8 440F lsl R20
00BA .dbline 31
00BA ; PORTA|=(1<<clk);
00BA D99A sbi 0x1b,1
00BC .dbline 32
00BC ; }
00BC L22:
00BC .dbline 18
00BC 6395 inc R22
00BE L24:
00BE .dbline 18
00BE 6830 cpi R22,8
00C0 90F3 brlo L21
00C2 X12:
00C2 .dbline 33
00C2 ; PORTA&=~(1<<rclk);
00C2 DA98 cbi 0x1b,2
00C4 .dbline 34
00C4 ; s_ms(100);
00C4 04E6 ldi R16,100
00C6 10E0 ldi R17,0
00C8 DDDF xcall _s_ms
00CA .dbline 35
00CA ; PORTA|=(1<<rclk);
00CA DA9A sbi 0x1b,2
00CC .dbline -2
00CC L20:
00CC .dbline 0 ; func end
00CC 0C940000 xjmp pop_xgsetF00C
00D0 .dbsym r tem 10 c
00D0 .dbsym r i 22 c
00D0 .dbsym r byte 20 c
00D0 .dbend
00D0 .dbfile E:\16实验程序\数码管显示2\led-8-2.c
00D0 .dbfunc e disa _disa fV
00D0 ; data -> y+6
.even
00D0 _disa::
00D0 0E940000 xcall push_arg4
00D4 0E940000 xcall push_xgsetF00C
00D8 .dbline -1
00D8 .dbline 18
00D8 .dbline 19
00D8 40E8 ldi R20,128
00DA 56E9 ldi R21,150
00DC 68E9 ldi R22,152
00DE 70E0 ldi R23,0
00E0 0E81 ldd R16,y+6
00E2 1F81 ldd R17,y+7
00E4 2885 ldd R18,y+8
00E6 3985 ldd R19,y+9
00E8 7A93 st -y,R23
00EA 6A93 st -y,R22
00EC 5A93 st -y,R21
00EE 4A93 st -y,R20
00F0 0E940000 xcall div32u
00F4 10930100 sts _a8+1,R17
00F8 00930000 sts _a8,R16
00FC 30930300 sts _a8+2+1,R19
0100 20930200 sts _a8+2,R18
0104 .dbline 20
0104 40E8 ldi R20,128
0106 56E9 ldi R21,150
0108 68E9 ldi R22,152
010A 70E0 ldi R23,0
010C 3A93 st -y,R19
010E 2A93 st -y,R18
0110 1A93 st -y,R17
0112 0A93 st -y,R16
0114 8A01 movw R16,R20
0116 9B01 movw R18,R22
0118 0E940000 xcall empy32u
011C 1801 movw R2,R16
011E 2901 movw R4,R18
0120 0E81 ldd R16,y+6
0122 1F81 ldd R17,y+7
0124 2885 ldd R18,y+8
0126 3985 ldd R19,y+9
0128 0219 sub R16,R2
012A 1309 sbc R17,R3
012C 2409 sbc R18,R4
012E 3509 sbc R19,R5
0130 40E4 ldi R20,64
0132 52E4 ldi R21,66
0134 6FE0 ldi R22,15
0136 70E0 ldi R23,0
0138 7A93 st -y,R23
013A 6A93 st -y,R22
013C 5A93 st -y,R21
013E 4A93 st -y,R20
0140 0E940000 xcall div32u
0144 10930500 sts _a7+1,R17
0148 00930400 sts _a7,R16
014C 30930700 sts _a7+2+1,R19
0150 20930600 sts _a7+2,R18
0154 .dbline 21
0154 40900200 lds R4,_a8+2
0158 50900300 lds R5,_a8+2+1
015C 20900000 lds R2,_a8
0160 30900100 lds R3,_a8+1
0164 40E8 ldi R20,128
0166 56E9 ldi R21,150
0168 68E9 ldi R22,152
016A 70E0 ldi R23,0
016C 5A92 st -y,R5
016E 4A92 st -y,R4
0170 3A92 st -y,R3
0172 2A92 st -y,R2
0174 8A01 movw R16,R20
0176 9B01 movw R18,R22
0178 0E940000 xcall empy32u
017C 2E80 ldd R2,y+6
017E 3F80 ldd R3,y+7
0180 4884 ldd R4,y+8
0182 5984 ldd R5,y+9
0184 201A sub R2,R16
0186 310A sbc R3,R17
0188 420A sbc R4,R18
018A 530A sbc R5,R19
018C 80900600 lds R8,_a7+2
0190 90900700 lds R9,_a7+2+1
0194 60900400 lds R6,_a7
0198 70900500 lds R7,_a7+1
019C 40E4 ldi R20,64
019E 52E4 ldi R21,66
01A0 6FE0 ldi R22,15
01A2 70E0 ldi R23,0
01A4 9A92 st -y,R9
01A6 8A92 st -y,R8
01A8 7A92 st -y,R7
01AA 6A92 st -y,R6
01AC 8A01 movw R16,R20
01AE 9B01 movw R18,R22
01B0 0E940000 xcall empy32u
01B4 201A sub R2,R16
01B6 310A sbc R3,R17
01B8 420A sbc R4,R18
01BA 530A sbc R5,R19
01BC 40EA ldi R20,160
01BE 56E8 ldi R21,134
01C0 61E0 ldi R22,1
01C2 70E0 ldi R23,0
01C4 7A93 st -y,R23
01C6 6A93 st -y,R22
01C8 5A93 st -y,R21
01CA 4A93 st -y,R20
01CC 8101 movw R16,R2
01CE 9201 movw R18,R4
01D0 0E940000 xcall div32u
01D4 10930900 sts _a6+1,R17
01D8 00930800 sts _a6,R16
01DC 30930B00 sts _a6+2+1,R19
01E0 20930A00 sts _a6+2,R18
01E4 .dbline 22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -