📄 tlc5615s.lst
字号:
__start:
__text_start:
2A E5CF LDI R28,0x5F
2B E0D4 LDI R29,4
2C BFCD OUT 0x3D,R28
2D BFDE OUT 0x3E,R29
2E 51C0 SUBI R28,0x10
2F 40D0 SBCI R29,0
30 EA0A LDI R16,0xAA
31 8308 STD Y+0,R16
32 2400 CLR R0
33 E6E0 LDI R30,0x60
34 E0F0 LDI R31,0
35 E010 LDI R17,0
36 36E0 CPI R30,0x60
37 07F1 CPC R31,R17
38 F011 BEQ 0x003B
39 9201 ST R0,Z+
3A CFFB RJMP 0x0036
3B 8300 STD Z+0,R16
3C E5E4 LDI R30,0x54
3D E0F0 LDI R31,0
3E E6A0 LDI R26,0x60
3F E0B0 LDI R27,0
40 E010 LDI R17,0
41 35E4 CPI R30,0x54
42 07F1 CPC R31,R17
43 F021 BEQ 0x0048
44 95C8 LPM
45 9631 ADIW R30,1
46 920D ST R0,X+
47 CFF9 RJMP 0x0041
48 940E 0057 CALL _main
_exit:
4A CFFF RJMP _exit
FILE: D:\TLC5615调试\TLC5615S\TLC5615.C
(0001) #include<iom16v.h>
(0002) #include<macros.h>
(0003) //#include"TLC5615.h"
(0004) #define set5615 PORTA|=BIT(4)
(0005) #define clr5615 PORTA&=~BIT(4)
(0006) #define out5615 DDRA|=BIT(4)
(0007) #define in5615 DDRA&=~BIT(4)
(0008) void PutSPIchar(unsigned char data)
(0009) {
(0010) SPDR=data; //数据输出
_PutSPIchar:
data --> R16
4B B90F OUT 0x0F,R16
(0011) while(!(SPSR&(1<<SPIF)));//SPIF为1跳出
4C 9B77 SBIS 0x0E,7
4D CFFE RJMP 0x004C
4E 9508 RET
(0012) }
(0013) void SPI_Init(void)
(0014) {
(0015) out5615; //DDRA4=1,输出
_SPI_Init:
4F 9AD4 SBI 0x1A,4
(0016) DDRB|=0xb0; //SCK,MOSI,SS输出,MISO输入
50 B387 IN R24,0x17
51 6B80 ORI R24,0xB0
52 BB87 OUT 0x17,R24
(0017) //SPSR|=0x00; //振荡器频率fosc/2
(0018) SPCR|=0X50; //使能SPI,MSB先发,主模式,CPOL为0
53 B18D IN R24,0x0D
54 6580 ORI R24,0x50
55 B98D OUT 0x0D,R24
56 9508 RET
(0019) }
(0020) void main()
(0021) {
(0022) unsigned int i,j;
(0023) /*out5615;
(0024) DDRB|=0xb0;
(0025) SPCR|=0X50;
(0026) SPSR=0x01;*/
(0027) SPI_Init(); //初始化SPI和5615设置
_main:
i --> R20
j --> R22
57 DFF7 RCALL _SPI_Init
58 C024 RJMP 0x007D
(0028) /*
(0029) clr5615; //PA4=0,选中5615
(0030) PutSPIchar(800>>6);//发送数据前4位,输出某个值的电压
(0031) PutSPIchar(800<<2);//后6位
(0032) set5615; //PA4=1,释放TLC5615*/
(0033) ///////小灯慢慢亮起来,最后有灭了,然后有渐渐亮起来
(0034) while(1)
(0035) {
(0036) for(i=80;i<1024;i++) //电压逐渐变高
59 E540 LDI R20,0x50
5A E050 LDI R21,0
5B C01D RJMP 0x0079
(0037) {
(0038) clr5615; //片选TLC5615
5C 98DC CBI 0x1B,4
(0039) PutSPIchar((unsigned char)(i>>6));//发送数
5D E026 LDI R18,6
5E E030 LDI R19,0
5F 018A MOVW R16,R20
60 940E 007F CALL lsr16
62 DFE8 RCALL _PutSPIchar
(0040) PutSPIchar((unsigned char)(i<<2));//
63 2F04 MOV R16,R20
64 0F00 LSL R16
65 1F11 ROL R17
66 0F00 LSL R16
67 1F11 ROL R17
68 DFE2 RCALL _PutSPIchar
(0041) set5615; //释放TLC5615
69 9ADC SBI 0x1B,4
(0042) for(j=0;j<5000;j++)
6A 2766 CLR R22
6B 2777 CLR R23
6C C006 RJMP 0x0073
(0043) {
(0044) asm("nop");asm("nop");asm("nop");asm("nop");
FILE: <library>
6D 0000 NOP
6E 0000 NOP
6F 0000 NOP
70 0000 NOP
71 5F6F SUBI R22,0xFF
72 4F7F SBCI R23,0xFF
73 3868 CPI R22,0x88
74 E1E3 LDI R30,0x13
75 077E CPC R23,R30
76 F3B0 BCS 0x006D
77 5F4F SUBI R20,0xFF
78 4F5F SBCI R21,0xFF
79 3040 CPI R20,0
7A E0E4 LDI R30,4
7B 075E CPC R21,R30
7C F2F8 BCS 0x005C
7D CFDB RJMP 0x0059
7E 9508 RET
lsr16:
7F 2322 TST R18
80 F021 BEQ 0x0085
81 9516 LSR R17
82 9507 ROR R16
83 952A DEC R18
84 CFFA RJMP lsr16
85 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -