?? 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 + -