?? tlc5615.lis
字號:
.module TLC5615.C
.area text(rom, con, rel)
0000 .dbfile D:\TLC5615調試\TLC5615S\TLC5615.C
0000 .dbfunc e PutSPIchar _PutSPIchar fV
0000 ; data -> R16
.even
0000 _PutSPIchar::
0000 .dbline -1
0000 .dbline 9
0000 ; #include<iom16v.h>
0000 ; #include<macros.h>
0000 ; //#include"TLC5615.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 ; void PutSPIchar(unsigned char data)
0000 ; {
0000 .dbline 10
0000 ; SPDR=data; //數據輸出
0000 0FB9 out 0xf,R16
0002 L2:
0002 .dbline 11
0002 ; while(!(SPSR&(1<<SPIF)));//SPIF為1跳出
0002 L3:
0002 .dbline 11
0002 779B sbis 0xe,7
0004 FECF rjmp L2
0006 X0:
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_Init _SPI_Init fV
.even
0008 _SPI_Init::
0008 .dbline -1
0008 .dbline 14
0008 ; }
0008 ; void SPI_Init(void)
0008 ; {
0008 .dbline 15
0008 ; out5615; //DDRA4=1,輸出
0008 D49A sbi 0x1a,4
000A .dbline 16
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 ; //SPSR|=0x00; //振蕩器頻率fosc/2
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 27
0018 ; unsigned int i,j;
0018 ; /*out5615;
0018 ; DDRB|=0xb0;
0018 ; SPCR|=0X50;
0018 ; SPSR=0x01;*/
0018 ; SPI_Init(); //初始化SPI和5615設置
0018 F7DF xcall _SPI_Init
001A 24C0 xjmp L8
001C L7:
001C .dbline 35
001C ; /*
001C ; clr5615; //PA4=0,選中5615
001C ; PutSPIchar(800>>6);//發送數據前4位,輸出某個值的電壓
001C ; PutSPIchar(800<<2);//后6位
001C ; set5615; //PA4=1,釋放TLC5615*/
001C ; ///////小燈慢慢亮起來,最后有滅了,然后有漸漸亮起來
001C ; while(1)
001C ; {
001C .dbline 36
001C ; for(i=80;i<1024;i++) //電壓逐漸變高
001C 40E5 ldi R20,80
001E 50E0 ldi R21,0
0020 1DC0 xjmp L13
0022 L10:
0022 .dbline 37
0022 ; {
0022 .dbline 38
0022 ; clr5615; //片選TLC5615
0022 DC98 cbi 0x1b,4
0024 .dbline 39
0024 ; PutSPIchar((unsigned char)(i>>6));//發送數
0024 26E0 ldi R18,6
0026 30E0 ldi R19,0
0028 8A01 movw R16,R20
002A 0E940000 xcall lsr16
002E E8DF xcall _PutSPIchar
0030 .dbline 40
0030 ; PutSPIchar((unsigned char)(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 _PutSPIchar
003C .dbline 41
003C ; set5615; //釋放TLC5615
003C DC9A sbi 0x1b,4
003E .dbline 42
003E ; for(j=0;j<5000;j++)
003E 6627 clr R22
0040 7727 clr R23
0042 06C0 xjmp L17
0044 L14:
0044 .dbline 43
0044 ; {
0044 .dbline 44
0044 ; asm("nop");asm("nop");asm("nop");asm("nop");
0044 0000 nop
0046 .dbline 44
0046 0000 nop
0048 .dbline 44
0048 0000 nop
004A .dbline 44
004A 0000 nop
004C .dbline 45
004C ; }
004C L15:
004C .dbline 42
004C 6F5F subi R22,255 ; offset = 1
004E 7F4F sbci R23,255
0050 L17:
0050 .dbline 42
0050 6838 cpi R22,136
0052 E3E1 ldi R30,19
0054 7E07 cpc R23,R30
0056 B0F3 brlo L14
0058 X1:
0058 .dbline 46
0058 ; }
0058 L11:
0058 .dbline 36
0058 4F5F subi R20,255 ; offset = 1
005A 5F4F sbci R21,255
005C L13:
005C .dbline 36
005C 4030 cpi R20,0
005E E4E0 ldi R30,4
0060 5E07 cpc R21,R30
0062 F8F2 brlo L10
0064 X2:
0064 .dbline 47
0064 ; }
0064 L8:
0064 .dbline 34
0064 DBCF xjmp L7
0066 X3:
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
0068 ; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -