📄 tl5615.lis
字号:
.module tl5615.c
.area text(rom, con, rel)
0000 .dbfile D:\bibo\icc\TL5615\tl5615.c
0000 .dbfunc e SPI_chuangsong _SPI_chuangsong fV
0000 ; data -> R16
.even
0000 _SPI_chuangsong::
0000 .dbline -1
0000 .dbline 10
0000 ; #include<iom16v.h>
0000 ; #include<macros.h>
0000 ; #define set5615 PORTA|=BIT(4)
0000 ; #define clr5615 PORTA&=~BIT(4)
0000 ; #define out5615 DDRA|=BIT(4)
0000 ; #define in5615 DDRA&=~BIT(4)
0000 ; #define uchar unsigned char
0000 ;
0000 ; void SPI_chuangsong(uchar data)
0000 ; {
0000 .dbline 11
0000 ; SPDR=data; //数据输出
0000 0FB9 out 0xf,R16
0002 L2:
0002 .dbline 12
0002 L3:
0002 .dbline 12
0002 ; while(!(SPSR&(1<<SPIF))); //SPCR为控制寄存器SPIF为1中断标志位
0002 779B sbis 0xe,7
0004 FECF rjmp L2
0006 .dbline -2
0006 L1:
0006 .dbline 0 ; func end
0006 0895 ret
0008 .dbsym r data 16 c
0008 .dbend
0008 .dbfunc e SPI_chushihua _SPI_chushihua fV
.even
0008 _SPI_chushihua::
0008 .dbline -1
0008 .dbline 15
0008 ; }
0008 ; void SPI_chushihua()
0008 ; {
0008 .dbline 16
0008 ; out5615; //DDRA4=1,输出
0008 D49A sbi 0x1a,4
000A .dbline 17
000A ; DDRB|=0xb0; //SCK,MOSI,SS输出,MISO输入
000A 87B3 in R24,0x17
000C 806B ori R24,176
000E 87BB out 0x17,R24
0010 .dbline 18
0010 ; SPCR|=0X50; //使能SPI,MSB先发,主模式,CPOL为0
0010 8DB1 in R24,0xd
0012 8065 ori R24,80
0014 8DB9 out 0xd,R24
0016 .dbline -2
0016 L5:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e main _main fV
0018 ; i -> R20,R21
0018 ; j -> R22,R23
.even
0018 _main::
0018 .dbline -1
0018 .dbline 21
0018 ; }
0018 ; void main()
0018 ; {
0018 .dbline 23
0018 ; unsigned int i,j;
0018 ; SPI_chushihua(); //初始化SPI和5615设置
0018 F7DF xcall _SPI_chushihua
001A 24C0 xjmp L8
001C L7:
001C .dbline 26
001C ;
001C ; while(1)
001C ; {
001C .dbline 27
001C ; for(i=180;i<1024;i++)
001C 44EB ldi R20,180
001E 50E0 ldi R21,0
0020 1DC0 xjmp L13
0022 L10:
0022 .dbline 28
0022 ; {
0022 .dbline 29
0022 ; clr5615; //片选TLC5615
0022 DC98 cbi 0x1b,4
0024 .dbline 30
0024 ; SPI_chuangsong((uchar)(i>>6)); //发送数
0024 26E0 ldi R18,6
0026 30E0 ldi R19,0
0028 8A01 movw R16,R20
002A 0E940000 xcall lsr16
002E E8DF xcall _SPI_chuangsong
0030 .dbline 31
0030 ; SPI_chuangsong((uchar)(i<<2)); //
0030 042F mov R16,R20
0032 000F lsl R16
0034 111F rol R17
0036 000F lsl R16
0038 111F rol R17
003A E2DF xcall _SPI_chuangsong
003C .dbline 32
003C ; set5615; //释放TLC5615
003C DC9A sbi 0x1b,4
003E .dbline 33
003E ; for(j=0;j<5000;j++)
003E 6627 clr R22
0040 7727 clr R23
0042 06C0 xjmp L17
0044 L14:
0044 .dbline 34
0044 .dbline 35
0044 0000 nop
0046 .dbline 35
0046 0000 nop
0048 .dbline 35
0048 0000 nop
004A .dbline 35
004A 0000 nop
004C .dbline 36
004C L15:
004C .dbline 33
004C 6F5F subi R22,255 ; offset = 1
004E 7F4F sbci R23,255
0050 L17:
0050 .dbline 33
0050 6838 cpi R22,136
0052 E3E1 ldi R30,19
0054 7E07 cpc R23,R30
0056 B0F3 brlo L14
0058 .dbline 37
0058 L11:
0058 .dbline 27
0058 4F5F subi R20,255 ; offset = 1
005A 5F4F sbci R21,255
005C L13:
005C .dbline 27
005C 4030 cpi R20,0
005E E4E0 ldi R30,4
0060 5E07 cpc R21,R30
0062 F8F2 brlo L10
0064 .dbline 38
0064 L8:
0064 .dbline 25
0064 DBCF xjmp L7
0066 X0:
0066 .dbline -2
0066 L6:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r i 20 i
0068 .dbsym r j 22 i
0068 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -