📄 zz.lis
字号:
.module zz.c
.area text(rom, con, rel)
0000 .dbfile ..\..\181286~1\12864_~1\zz.c
0000 .dbfile F:\新学习板程序\avr程序\181286~1\12864_~1\12864.h
0000 .dbfunc e delay _delay fV
.even
0000 _delay::
0000 .dbline -1
0000 .dbline 15
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #define clk 7
0000 ; #define set_clk PORTC |= BIT(clk)
0000 ; #define clr_clk PORTC &= ~BIT(clk)
0000 ;
0000 ; #define sid 6
0000 ; #define clr_sid PORTC &= ~BIT(sid)
0000 ; #define set_sid PORTC |= BIT(sid)
0000 ;
0000 ; void delay()
0000 ; {
0000 .dbline 16
0000 ; NOP();
0000 0000 nop
0002 .dbline 17
0002 ; NOP();
0002 0000 nop
0004 .dbline -2
0004 L1:
0004 .dbline 0 ; func end
0004 0895 ret
0006 .dbend
0006 .dbfunc e delay_us _delay_us fV
0006 ; i -> R16,R17
.even
0006 _delay_us::
0006 .dbline -1
0006 .dbline 20
0006 ; }
0006 ; void delay_us(uint i)
0006 ; {
0006 L3:
0006 .dbline 22
0006 ; while(i--)
0006 ; {;}
0006 .dbline 22
0006 .dbline 22
0006 L4:
0006 .dbline 21
0006 1801 movw R2,R16
0008 0150 subi R16,1
000A 1040 sbci R17,0
000C 2220 tst R2
000E D9F7 brne L3
0010 3320 tst R3
0012 C9F7 brne L3
0014 X0:
0014 .dbline -2
0014 L2:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym r i 16 i
0016 .dbend
0016 .dbfunc e delay_ms _delay_ms fV
0016 ; a -> R20,R21
0016 ; i -> R16,R17
.even
0016 _delay_ms::
0016 4A93 st -y,R20
0018 5A93 st -y,R21
001A .dbline -1
001A .dbline 25
001A ; }
001A ; void delay_ms(uint i)
001A ; {
001A .dbline 27
001A ; uint a;
001A ; for(;i;i--)
001A 0BC0 xjmp L10
001C L7:
001C .dbline 28
001C ; {
001C .dbline 29
001C ; for(a=0;a<672;a++);
001C 4427 clr R20
001E 5527 clr R21
0020 02C0 xjmp L14
0022 L11:
0022 .dbline 29
0022 L12:
0022 .dbline 29
0022 4F5F subi R20,255 ; offset = 1
0024 5F4F sbci R21,255
0026 L14:
0026 .dbline 29
0026 403A cpi R20,160
0028 E2E0 ldi R30,2
002A 5E07 cpc R21,R30
002C D0F3 brlo L11
002E X1:
002E .dbline 30
002E ; }
002E L8:
002E .dbline 27
002E 0150 subi R16,1
0030 1040 sbci R17,0
0032 L10:
0032 .dbline 27
0032 0030 cpi R16,0
0034 0107 cpc R16,R17
0036 91F7 brne L7
0038 X2:
0038 .dbline -2
0038 L6:
0038 .dbline 0 ; func end
0038 5991 ld R21,y+
003A 4991 ld R20,y+
003C 0895 ret
003E .dbsym r a 20 i
003E .dbsym r i 16 i
003E .dbend
003E .dbfunc e wr_bit _wr_bit fV
003E ; data -> R10
003E ; n -> R12
.even
003E _wr_bit::
003E AA92 st -y,R10
0040 CA92 st -y,R12
0042 A22E mov R10,R18
0044 C02E mov R12,R16
0046 .dbline -1
0046 .dbline 33
0046 ; }
0046 ; void wr_bit(uchar n,uchar data)
0046 ; {
0046 .dbline 34
0046 ; for(;n;n--) //写入位数
0046 0BC0 xjmp L19
0048 L16:
0048 .dbline 35
0048 ; {
0048 .dbline 36
0048 ; if(data&0x80)
0048 A7FE sbrs R10,7
004A 02C0 rjmp L20
004C X3:
004C .dbline 37
004C ; {set_sid;}
004C .dbline 37
004C AE9A sbi 0x15,6
004E .dbline 37
004E 01C0 xjmp L21
0050 L20:
0050 .dbline 39
0050 ; else
0050 ; {clr_sid;}
0050 .dbline 39
0050 AE98 cbi 0x15,6
0052 .dbline 39
0052 L21:
0052 .dbline 40
0052 ; data=data<<1;
0052 AA0C lsl R10
0054 .dbline 41
0054 ; delay();
0054 D5DF xcall _delay
0056 .dbline 42
0056 ; set_clk;
0056 AF9A sbi 0x15,7
0058 .dbline 43
0058 ; delay();
0058 D3DF xcall _delay
005A .dbline 44
005A ; clr_clk;
005A AF98 cbi 0x15,7
005C .dbline 45
005C ; }
005C L17:
005C .dbline 34
005C CA94 dec R12
005E L19:
005E .dbline 34
005E CC20 tst R12
0060 99F7 brne L16
0062 X4:
0062 .dbline -2
0062 L15:
0062 .dbline 0 ; func end
0062 C990 ld R12,y+
0064 A990 ld R10,y+
0066 0895 ret
0068 .dbsym r data 10 c
0068 .dbsym r n 12 c
0068 .dbend
0068 .dbfunc e write_shuju _write_shuju fV
0068 ; b -> R20
0068 ; a -> R10
.even
0068 _write_shuju::
0068 AA92 st -y,R10
006A 4A93 st -y,R20
006C 422F mov R20,R18
006E A02E mov R10,R16
0070 .dbline -1
0070 .dbline 48
0070 ; }
0070 ; void write_shuju(uchar a,uchar b)
0070 ; {
0070 .dbline 49
0070 ; clr_clk;
0070 AF98 cbi 0x15,7
0072 .dbline 51
0072 ;
0072 ; wr_bit(5,0xFF);
0072 2FEF ldi R18,255
0074 05E0 ldi R16,5
0076 E3DF xcall _wr_bit
0078 .dbline 53
0078 ;
0078 ; wr_bit(1,0x00);
0078 2227 clr R18
007A 01E0 ldi R16,1
007C E0DF xcall _wr_bit
007E .dbline 55
007E ;
007E ; if(a==0)
007E AA20 tst R10
0080 21F4 brne L23
0082 X5:
0082 .dbline 56
0082 ; wr_bit(1,0x00);
0082 2227 clr R18
0084 01E0 ldi R16,1
0086 DBDF xcall _wr_bit
0088 03C0 xjmp L24
008A L23:
008A .dbline 58
008A ; else
008A ; wr_bit(1,0x80);
008A 20E8 ldi R18,128
008C 01E0 ldi R16,1
008E D7DF xcall _wr_bit
0090 L24:
0090 .dbline 60
0090 ;
0090 ; wr_bit(1,0x00); //写入一个0
0090 2227 clr R18
0092 01E0 ldi R16,1
0094 D4DF xcall _wr_bit
0096 .dbline 62
0096 ;
0096 ; wr_bit(4,b); //写入数据的高4位
0096 242F mov R18,R20
0098 04E0 ldi R16,4
009A D1DF xcall _wr_bit
009C .dbline 64
009C ;
009C ; wr_bit(4,0x00); //写入4个0
009C 2227 clr R18
009E 04E0 ldi R16,4
00A0 CEDF xcall _wr_bit
00A2 .dbline 66
00A2 ;
00A2 ; wr_bit(4,(b<<4)); //写入数据的低4位
00A2 242F mov R18,R20
00A4 2F70 andi R18,#0x0F
00A6 2295 swap R18
00A8 04E0 ldi R16,4
00AA C9DF xcall _wr_bit
00AC .dbline 68
00AC ;
00AC ; wr_bit(4,0x00); //写入4个0
00AC 2227 clr R18
00AE 04E0 ldi R16,4
00B0 C6DF xcall _wr_bit
00B2 .dbline 70
00B2 ;
00B2 ; set_sid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -