📄 tlc5615.s
字号:
.module TLC5615.C
.area text(rom, con, rel)
.dbfile D:\TLC5615调试\TLC5615S\TLC5615.C
.dbfunc e PutSPIchar _PutSPIchar fV
; data -> R16
.even
_PutSPIchar::
.dbline -1
.dbline 9
; #include<iom16v.h>
; #include<macros.h>
; //#include"TLC5615.h"
; #define set5615 PORTA|=BIT(4)
; #define clr5615 PORTA&=~BIT(4)
; #define out5615 DDRA|=BIT(4)
; #define in5615 DDRA&=~BIT(4)
; void PutSPIchar(unsigned char data)
; {
.dbline 10
; SPDR=data; //数据输出
out 0xf,R16
L2:
.dbline 11
; while(!(SPSR&(1<<SPIF)));//SPIF为1跳出
L3:
.dbline 11
sbis 0xe,7
rjmp L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.dbfunc e SPI_Init _SPI_Init fV
.even
_SPI_Init::
.dbline -1
.dbline 14
; }
; void SPI_Init(void)
; {
.dbline 15
; out5615; //DDRA4=1,输出
sbi 0x1a,4
.dbline 16
; DDRB|=0xb0; //SCK,MOSI,SS输出,MISO输入
in R24,0x17
ori R24,176
out 0x17,R24
.dbline 18
; //SPSR|=0x00; //振荡器频率fosc/2
; 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 27
; unsigned int i,j;
; /*out5615;
; DDRB|=0xb0;
; SPCR|=0X50;
; SPSR=0x01;*/
; SPI_Init(); //初始化SPI和5615设置
xcall _SPI_Init
xjmp L8
L7:
.dbline 35
; /*
; clr5615; //PA4=0,选中5615
; PutSPIchar(800>>6);//发送数据前4位,输出某个值的电压
; PutSPIchar(800<<2);//后6位
; set5615; //PA4=1,释放TLC5615*/
; ///////小灯慢慢亮起来,最后有灭了,然后有渐渐亮起来
; while(1)
; {
.dbline 36
; for(i=80;i<1024;i++) //电压逐渐变高
ldi R20,80
ldi R21,0
xjmp L13
L10:
.dbline 37
; {
.dbline 38
; clr5615; //片选TLC5615
cbi 0x1b,4
.dbline 39
; PutSPIchar((unsigned char)(i>>6));//发送数
ldi R18,6
ldi R19,0
movw R16,R20
xcall lsr16
xcall _PutSPIchar
.dbline 40
; PutSPIchar((unsigned char)(i<<2));//
mov R16,R20
lsl R16
rol R17
lsl R16
rol R17
xcall _PutSPIchar
.dbline 41
; set5615; //释放TLC5615
sbi 0x1b,4
.dbline 42
; for(j=0;j<5000;j++)
clr R22
clr R23
xjmp L17
L14:
.dbline 43
; {
.dbline 44
; asm("nop");asm("nop");asm("nop");asm("nop");
nop
.dbline 44
nop
.dbline 44
nop
.dbline 44
nop
.dbline 45
; }
L15:
.dbline 42
subi R22,255 ; offset = 1
sbci R23,255
L17:
.dbline 42
cpi R22,136
ldi R30,19
cpc R23,R30
brlo L14
X1:
.dbline 46
; }
L11:
.dbline 36
subi R20,255 ; offset = 1
sbci R21,255
L13:
.dbline 36
cpi R20,0
ldi R30,4
cpc R21,R30
brlo L10
X2:
.dbline 47
; }
L8:
.dbline 34
xjmp L7
X3:
.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 + -