📄 tl5615.s
字号:
.module tl5615.c
.area text(rom, con, rel)
.dbfile D:\bibo\icc\TL5615\tl5615.c
.dbfunc e SPI_chuangsong _SPI_chuangsong fV
; data -> R16
.even
_SPI_chuangsong::
.dbline -1
.dbline 10
; #include<iom16v.h>
; #include<macros.h>
; #define set5615 PORTA|=BIT(4)
; #define clr5615 PORTA&=~BIT(4)
; #define out5615 DDRA|=BIT(4)
; #define in5615 DDRA&=~BIT(4)
; #define uchar unsigned char
;
; void SPI_chuangsong(uchar data)
; {
.dbline 11
; SPDR=data; //数据输出
out 0xf,R16
L2:
.dbline 12
L3:
.dbline 12
; while(!(SPSR&(1<<SPIF))); //SPCR为控制寄存器SPIF为1中断标志位
sbis 0xe,7
rjmp L2
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.dbfunc e SPI_chushihua _SPI_chushihua fV
.even
_SPI_chushihua::
.dbline -1
.dbline 15
; }
; void SPI_chushihua()
; {
.dbline 16
; out5615; //DDRA4=1,输出
sbi 0x1a,4
.dbline 17
; DDRB|=0xb0; //SCK,MOSI,SS输出,MISO输入
in R24,0x17
ori R24,176
out 0x17,R24
.dbline 18
; SPCR|=0X50; //使能SPI,MSB先发,主模式,CPOL为0
in R24,0xd
ori R24,80
out 0xd,R24
.dbline -2
L5:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; i -> R20,R21
; j -> R22,R23
.even
_main::
.dbline -1
.dbline 21
; }
; void main()
; {
.dbline 23
; unsigned int i,j;
; SPI_chushihua(); //初始化SPI和5615设置
xcall _SPI_chushihua
xjmp L8
L7:
.dbline 26
;
; while(1)
; {
.dbline 27
; for(i=180;i<1024;i++)
ldi R20,180
ldi R21,0
xjmp L13
L10:
.dbline 28
; {
.dbline 29
; clr5615; //片选TLC5615
cbi 0x1b,4
.dbline 30
; SPI_chuangsong((uchar)(i>>6)); //发送数
ldi R18,6
ldi R19,0
movw R16,R20
xcall lsr16
xcall _SPI_chuangsong
.dbline 31
; SPI_chuangsong((uchar)(i<<2)); //
mov R16,R20
lsl R16
rol R17
lsl R16
rol R17
xcall _SPI_chuangsong
.dbline 32
; set5615; //释放TLC5615
sbi 0x1b,4
.dbline 33
; for(j=0;j<5000;j++)
clr R22
clr R23
xjmp L17
L14:
.dbline 34
.dbline 35
nop
.dbline 35
nop
.dbline 35
nop
.dbline 35
nop
.dbline 36
L15:
.dbline 33
subi R22,255 ; offset = 1
sbci R23,255
L17:
.dbline 33
cpi R22,136
ldi R30,19
cpc R23,R30
brlo L14
.dbline 37
L11:
.dbline 27
subi R20,255 ; offset = 1
sbci R21,255
L13:
.dbline 27
cpi R20,0
ldi R30,4
cpc R21,R30
brlo L10
.dbline 38
L8:
.dbline 25
xjmp L7
X0:
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r j 22 i
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -