📄 1.lis
字号:
.module _1.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\新建文件夹\1.c
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 10
0000 ; #include <iom16v.h>
0000 ; #define clk 4 //pd4
0000 ; #define dat 3 //pd5
0000 ; #define load 5 //pd6
0000 ; #define load1 6 //pd7
0000 ; #define XTAL 4 //晶振频率,单位MHz
0000 ; #define uchar unsigned char
0000 ; /*******************************延时函数***********************************/
0000 ; void delay_1us(void) //1us延时函数
0000 ; {
0000 .dbline 11
0000 ; asm("nop");
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 00D0 rcall push_gset2
0006 602F mov R22,R16
0008 712F mov R23,R17
000A .dbline -1
000A .dbline 15
000A ; }
000A ;
000A ; void delay_nus(unsigned int n) //N us延时函数
000A ; {
000A .dbline 16
000A ; unsigned int i=0;
000A 4427 clr R20
000C 5527 clr R21
000E .dbline 17
000E ; for (i=0;i<n;i++)
000E 03C0 rjmp L6
0010 L3:
0010 .dbline 18
0010 F7DF rcall _delay_1us
0012 L4:
0012 .dbline 17
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 17
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C L2:
001C 00D0 rcall pop_gset2
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r i 20 i
0020 .dbsym r n 22 i
0020 .dbend
0020 .dbfunc e delay_1ms _delay_1ms fV
0020 ; i -> R16,R17
.even
0020 _delay_1ms::
0020 .dbline -1
0020 .dbline 22
0020 ; delay_1us();
0020 ; }
0020 ;
0020 ; void delay_1ms(void) //1ms延时函数
0020 ; {
0020 .dbline 24
0020 0027 clr R16
0022 1127 clr R17
0024 02C0 rjmp L11
0026 L8:
0026 .dbline 24
0026 L9:
0026 .dbline 24
0026 0F5F subi R16,255 ; offset = 1
0028 1F4F sbci R17,255
002A L11:
002A .dbline 24
002A ; unsigned int i;
002A ; for (i=0;i<(unsigned int)(XTAL*143-2);i++);
002A 8AE3 ldi R24,570
002C 92E0 ldi R25,2
002E 0817 cp R16,R24
0030 1907 cpc R17,R25
0032 C8F3 brlo L8
0034 .dbline -2
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; i -> R20,R21
0036 ; n -> R22,R23
.even
0036 _delay_nms::
0036 00D0 rcall push_gset2
0038 602F mov R22,R16
003A 712F mov R23,R17
003C .dbline -1
003C .dbline 28
003C ; }
003C ;
003C ; void delay_nms(unsigned int n) //N ms延时函数
003C ; {
003C .dbline 29
003C ; unsigned int i=0;
003C 4427 clr R20
003E 5527 clr R21
0040 .dbline 30
0040 ; for (i=0;i<n;i++)
0040 03C0 rjmp L16
0042 L13:
0042 .dbline 31
0042 .dbline 32
0042 EEDF rcall _delay_1ms
0044 .dbline 33
0044 L14:
0044 .dbline 30
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 30
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E L12:
004E 00D0 rcall pop_gset2
0050 .dbline 0 ; func end
0050 0895 ret
0052 .dbsym r i 20 i
0052 .dbsym r n 22 i
0052 .dbend
0052 .dbfunc e write _write fV
0052 ; i -> R10,R11
0052 ; ch -> y+0
0052 ; x -> y+10
.even
0052 _write::
0052 00D0 rcall push_arg4
0054 00D0 rcall push_gset3
0056 2497 sbiw R28,4
0058 .dbline -1
0058 .dbline 38
0058 ; {
0058 ; delay_1ms();
0058 ; }
0058 ; }
0058 ; /*******************************451写指令***********************************/
0058 ;
0058 ; void write(long int x)
0058 ; {
0058 .dbline 41
0058 ; long int ch;
0058 ; int i;
0058 ; ch = x;
0058 2A84 ldd R2,y+10
005A 3B84 ldd R3,y+11
005C 4C84 ldd R4,y+12
005E 5D84 ldd R5,y+13
0060 2882 std y+0,R2
0062 3982 std y+1,R3
0064 4A82 std y+2,R4
0066 5B82 std y+3,R5
0068 .dbline 42
0068 ; PORTD&= ~(1<<clk); // CLK
0068 9498 cbi 0x12,4
006A .dbline 43
006A ; PORTD&= ~(1<<load);
006A 9598 cbi 0x12,5
006C .dbline 44
006C ; for(i=0; i<12; i++)
006C AA24 clr R10
006E BB24 clr R11
0070 L18:
0070 .dbline 45
0070 ; {
0070 .dbline 46
0070 ; if(ch&0x001)
0070 41E0 ldi R20,1
0072 50E0 ldi R21,0
0074 60E0 ldi R22,0
0076 70E0 ldi R23,0
0078 2880 ldd R2,y+0
007A 3980 ldd R3,y+1
007C 4A80 ldd R4,y+2
007E 5B80 ldd R5,y+3
0080 2422 and R2,R20
0082 3522 and R3,R21
0084 4622 and R4,R22
0086 5722 and R5,R23
0088 40E0 ldi R20,0
008A 50E0 ldi R21,0
008C 60E0 ldi R22,0
008E 70E0 ldi R23,0
0090 2416 cp R2,R20
0092 3506 cpc R3,R21
0094 4606 cpc R4,R22
0096 5706 cpc R5,R23
0098 81F0 breq L22
009A .dbline 47
009A ; {
009A .dbline 48
009A ; PORTD|= 0x08; //数据为1 00100000
009A 939A sbi 0x12,3
009C .dbline 49
009C ; ch >>= 1;
009C 2880 ldd R2,y+0
009E 3980 ldd R3,y+1
00A0 4A80 ldd R4,y+2
00A2 5B80 ldd R5,y+3
00A4 5594 asr R5
00A6 4794 ror R4
00A8 3794 ror R3
00AA 2794 ror R2
00AC 2882 std y+0,R2
00AE 3982 std y+1,R3
00B0 4A82 std y+2,R4
00B2 5B82 std y+3,R5
00B4 .dbline 50
00B4 ; PORTD&= ~(1<<clk);
00B4 9498 cbi 0x12,4
00B6 .dbline 51
00B6 ; PORTD|= (1<<clk);
00B6 949A sbi 0x12,4
00B8 .dbline 53
00B8 ;
00B8 ; }
00B8 0FC0 rjmp L23
00BA L22:
00BA .dbline 55
00BA ; else
00BA ; {
00BA .dbline 56
00BA ; PORTD&= ~(0x08); //数据为0
00BA 9398 cbi 0x12,3
00BC .dbline 57
00BC ; ch >>= 1;
00BC 2880 ldd R2,y+0
00BE 3980 ldd R3,y+1
00C0 4A80 ldd R4,y+2
00C2 5B80 ldd R5,y+3
00C4 5594 asr R5
00C6 4794 ror R4
00C8 3794 ror R3
00CA 2794 ror R2
00CC 2882 std y+0,R2
00CE 3982 std y+1,R3
00D0 4A82 std y+2,R4
00D2 5B82 std y+3,R5
00D4 .dbline 58
00D4 ; PORTD&= ~(1<<clk);
00D4 9498 cbi 0x12,4
00D6 .dbline 59
00D6 ; PORTD|= (1<<clk);
00D6 949A sbi 0x12,4
00D8 .dbline 61
00D8 ;
00D8 ; }
00D8 L23:
00D8 .dbline 63
00D8 L19:
00D8 .dbline 44
00D8 8A2D mov R24,R10
00DA 9B2D mov R25,R11
00DC 0196 adiw R24,1
00DE A82E mov R10,R24
00E0 B92E mov R11,R25
00E2 .dbline 44
00E2 8C30 cpi R24,12
00E4 E0E0 ldi R30,0
00E6 9E07 cpc R25,R30
00E8 1CF2 brlt L18
00EA .dbline 64
00EA ;
00EA ; }
00EA ; PORTD|= 1<<load;
00EA 959A sbi 0x12,5
00EC .dbline -2
00EC L17:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -