📄 dac_tlc5615.lis
字号:
0218 ; Close_SMG_BIT;
0218 DA98 cbi 0x1b,2
021A .dbline -2
021A L48:
021A .dbline 0 ; func end
021A 0895 ret
021C .dbend
021C .dbfunc e Spi_Init _Spi_Init fV
021C ; i -> R16
.even
021C _Spi_Init::
021C .dbline -1
021C .dbline 200
021C ; }
021C ; /*******************************************************/
021C ; /****** 函数名称: Spi_Init() ******/
021C ; /****** 功 能: 初始化SPI接口 ******/
021C ; /****** 参 数: 无 ******/
021C ; /****** 返回值 : 无 ******/
021C ; /*******************************************************/
021C ; void Spi_Init(void)
021C ; {
021C .dbline 202
021C ; unsigned char i;
021C ; DDRB|=0xb0; //MISO输入MOSI,SCK,SS输出
021C 87B3 in R24,0x17
021E 806B ori R24,176
0220 87BB out 0x17,R24
0222 .dbline 203
0222 ; DDRB&=~0x40;
0222 BE98 cbi 0x17,6
0224 .dbline 204
0224 ; PORTB|=0x40; //MISO上拉有效
0224 C69A sbi 0x18,6
0226 .dbline 205
0226 ; SPSR=0x01; //SPI允许,主机模式,高位在先,极性00,1/2系统时钟速率
0226 81E0 ldi R24,1
0228 8EB9 out 0xe,R24
022A .dbline 206
022A ; SPCR=0x50;
022A 80E5 ldi R24,80
022C 8DB9 out 0xd,R24
022E .dbline 207
022E ; i=SPSR;
022E 0EB1 in R16,0xe
0230 .dbline 208
0230 ; i=SPDR; //清空SPI,和中断标志,使SPI空闲
0230 0FB1 in R16,0xf
0232 .dbline -2
0232 L49:
0232 .dbline 0 ; func end
0232 0895 ret
0234 .dbsym r i 16 c
0234 .dbend
0234 .dbfunc e PutSPIchar _PutSPIchar fV
0234 ; data -> R16
.even
0234 _PutSPIchar::
0234 .dbline -1
0234 .dbline 217
0234 ; }
0234 ; /*******************************************************/
0234 ; /****** 函数名称: PutSPIchar() ******/
0234 ; /****** 功 能: 用SPI发送数据 ******/
0234 ; /****** 参 数: data--待发的数据 ******/
0234 ; /****** 返回值 : 无 ******/
0234 ; /*******************************************************/
0234 ; void PutSPIchar(char data)
0234 ; {
0234 .dbline 218
0234 ; SPDR=data;
0234 0FB9 out 0xf,R16
0236 L51:
0236 .dbline 219
0236 ; while(!(SPSR&(1<<SPIF))); //等待发送完毕
0236 L52:
0236 .dbline 219
0236 779B sbis 0xe,7
0238 FECF rjmp L51
023A X34:
023A .dbline -2
023A L50:
023A .dbline 0 ; func end
023A 0895 ret
023C .dbsym r data 16 c
023C .dbend
023C .dbfunc e CPU_Init _CPU_Init fV
.even
023C _CPU_Init::
023C .dbline -1
023C .dbline 228
023C ; }
023C ; /*******************************************************/
023C ; /****** 函数名称: CPU_Init() ******/
023C ; /****** 功 能: 初始化CPU端口 ******/
023C ; /****** 参 数: 无 ******/
023C ; /****** 返回值 : 无 ******/
023C ; /*******************************************************/
023C ; void CPU_Init(void)
023C ; {
023C .dbline 229
023C ; PORTB=0xff;
023C 8FEF ldi R24,255
023E 88BB out 0x18,R24
0240 .dbline 230
0240 ; DDRB=0xff;
0240 87BB out 0x17,R24
0242 .dbline 231
0242 ; PORTA=0x80;
0242 80E8 ldi R24,128
0244 8BBB out 0x1b,R24
0246 .dbline 232
0246 ; DDRA=0xdc;
0246 8CED ldi R24,220
0248 8ABB out 0x1a,R24
024A .dbline 233
024A ; DDRB=0x00;
024A 2224 clr R2
024C 27BA out 0x17,R2
024E .dbline 234
024E ; PORTC=0xff;
024E 8FEF ldi R24,255
0250 85BB out 0x15,R24
0252 .dbline 235
0252 ; DDRC=0x00;
0252 24BA out 0x14,R2
0254 .dbline 236
0254 ; PORTD=0xff;
0254 82BB out 0x12,R24
0256 .dbline 237
0256 ; DDRD=0x00;
0256 21BA out 0x11,R2
0258 .dbline 238
0258 ; Un_Led();
0258 D2DF xcall _Un_Led
025A .dbline 239
025A ; Clear_SMG();
025A D7DF xcall _Clear_SMG
025C .dbline -2
025C L54:
025C .dbline 0 ; func end
025C 0895 ret
025E .dbend
025E .dbfile D:\垃圾站\5615\DAC_TLC5615.c
025E .dbfunc e main _main fV
025E ; i -> R20,R21
.even
025E _main::
025E .dbline -1
025E .dbline 21
025E ; /////////////////////////////////////////////////////////////
025E ; // 文件:DAC_TLC5615.C //
025E ; // 环境:编译为ICC AVR6.31A,仿真为AVR Studio4.12sp4 //
025E ; // 硬件:ATMEGA16芯片 //
025E ; // 日期:2007年5月28日 //
025E ; // 功能:DA输出模拟电压控制LED亮度渐变 //
025E ; // 备注: //
025E ; /////////////////////////////////////////////////////////////
025E ; #include <iom16v.h> //包含单片机型号头文件
025E ; #include <macros.h> //包含"位"操作头文件
025E ; #include "delay.h" //包含延时头文件
025E ; #include "AVR_XQV12.h" //包含通用函数及宏定义头文件
025E ;
025E ; /*******************************************************/
025E ; /****** 函数名称: main() ******/
025E ; /****** 功 能: DA输出模拟电压控制LED亮度渐变 ******/
025E ; /****** 参 数: 无 ******/
025E ; /****** 返回值 : 无 ******/
025E ; /*******************************************************/
025E ; void main(void)
025E ; {
025E .dbline 23
025E ; unsigned int i;
025E ; CPU_Init(); //初始化单片机
025E EEDF xcall _CPU_Init
0260 .dbline 24
0260 ; Spi_Init(); //初始化SPI接口
0260 DDDF xcall _Spi_Init
0262 14C0 xjmp L57
0264 L56:
0264 .dbline 26
0264 ; while(1) //无限循环
0264 ; {
0264 .dbline 28
0264 ;
0264 ; i=256;
0264 .dbline 29
0264 ; Clr_CS5615; //片选TLC5615 ((i&0x03c0)>>6)
0264 DC98 cbi 0x1b,4
0266 .dbline 30
0266 ; PutSPIchar((unsigned char) 0x00);//发送数据)((i&0x003f)<<2)
0266 0027 clr R16
0268 E5DF xcall _PutSPIchar
026A .dbline 31
026A ; PutSPIchar((unsigned char) 0x00);
026A 0027 clr R16
026C E3DF xcall _PutSPIchar
026E .dbline 32
026E ; Set_CS5615; //释放TLC5615
026E DC9A sbi 0x1b,4
0270 .dbline 33
0270 ; delay_nms(5); //延时
0270 05E0 ldi R16,5
0272 10E0 ldi R17,0
0274 D3DE xcall _delay_nms
0276 .dbline 36
0276 ;
0276 ;
0276 ; i=1023;
0276 4FEF ldi R20,1023
0278 53E0 ldi R21,3
027A .dbline 37
027A ; Clr_CS5615; //片选TLC5615
027A DC98 cbi 0x1b,4
027C .dbline 38
027C ; PutSPIchar((unsigned char) 0xff);//发送数据((i&0x03c0)>>6)
027C 0FEF ldi R16,255
027E DADF xcall _PutSPIchar
0280 .dbline 39
0280 ; PutSPIchar((unsigned char) 0xff);
0280 0FEF ldi R16,255
0282 D8DF xcall _PutSPIchar
0284 .dbline 40
0284 ; Set_CS5615; //释放TLC5615)((i&0x003f)<<2)
0284 DC9A sbi 0x1b,4
0286 .dbline 41
0286 ; delay_nms(5); //延时
0286 05E0 ldi R16,5
0288 10E0 ldi R17,0
028A C8DE xcall _delay_nms
028C .dbline 43
028C ;
028C ; }
028C L57:
028C .dbline 25
028C EBCF xjmp L56
028E X35:
028E .dbline -2
028E L55:
028E .dbline 0 ; func end
028E 0895 ret
0290 .dbsym r i 20 i
0290 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\垃圾站\5615\DAC_TLC5615.c
0000 _temprter::
0000 .blkb 2
0002 .dbfile D:\垃圾站\5615\AVR_XQV12.h
0002 .dbsym e temprter _temprter i
0002 _Key_Number::
0002 .blkb 1
0003 .dbsym e Key_Number _Key_Number c
0003 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -