⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dac_tlc5615.lis

📁 ATmega16-TLC5615
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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:\8_DAC_TLC5615\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 3DC0              xjmp L57
 0264           L56:
 0264                   .dbline 26
 0264           ;       while(1)                                                                //无限循环
 0264           ;       {
 0264                   .dbline 27
 0264           ;               for(i=280;i<1024;i++)                           //电压逐渐变高
 0264 48E1              ldi R20,280
 0266 51E0              ldi R21,1
 0268 17C0              xjmp L62
 026A           L59:
 026A                   .dbline 28
 026A           ;               {
 026A                   .dbline 29
 026A           ;                       Clr_CS5615;                                             //片选TLC5615
 026A DF98              cbi 0x1b,7
 026C                   .dbline 30
 026C           ;                       PutSPIchar((unsigned char)((i&0x03c0)>>6));//发送数据
 026C 26E0              ldi R18,6
 026E 30E0              ldi R19,0
 0270 8A01              movw R16,R20
 0272 007C              andi R16,192
 0274 1370              andi R17,3
 0276 0E940000          xcall lsr16
 027A DCDF              xcall _PutSPIchar
 027C                   .dbline 31
 027C           ;                       PutSPIchar((unsigned char)((i&0x003f)<<2));
 027C 042F              mov R16,R20
 027E 0F73              andi R16,63
 0280 1070              andi R17,0
 0282 000F              lsl R16
 0284 111F              rol R17
 0286 000F              lsl R16
 0288 111F              rol R17
 028A D4DF              xcall _PutSPIchar
 028C                   .dbline 32
 028C           ;                       Set_CS5615;                                     //释放TLC5615
 028C DF9A              sbi 0x1b,7
 028E                   .dbline 33
 028E           ;                       delay_nms(2);                                   //延时
 028E 02E0              ldi R16,2
 0290 10E0              ldi R17,0
 0292 C4DE              xcall _delay_nms
 0294                   .dbline 34
 0294           ;               }
 0294           L60:
 0294                   .dbline 27
 0294 4F5F              subi R20,255  ; offset = 1
 0296 5F4F              sbci R21,255
 0298           L62:
 0298                   .dbline 27
 0298 4030              cpi R20,0
 029A E4E0              ldi R30,4
 029C 5E07              cpc R21,R30
 029E 28F3              brlo L59
 02A0           X35:
 02A0                   .dbline 35
 02A0           ;               for(i=1023;i>280;i--)                           //电压逐渐变低
 02A0 4FEF              ldi R20,1023
 02A2 53E0              ldi R21,3
 02A4 17C0              xjmp L66
 02A6           L63:
 02A6                   .dbline 36
 02A6           ;               {
 02A6                   .dbline 37
 02A6           ;                       Clr_CS5615;                                             //片选TLC5615
 02A6 DF98              cbi 0x1b,7
 02A8                   .dbline 38
 02A8           ;                       PutSPIchar((unsigned char)((i&0x03c0)>>6));//发送数据
 02A8 26E0              ldi R18,6
 02AA 30E0              ldi R19,0
 02AC 8A01              movw R16,R20
 02AE 007C              andi R16,192
 02B0 1370              andi R17,3
 02B2 0E940000          xcall lsr16
 02B6 BEDF              xcall _PutSPIchar
 02B8                   .dbline 39
 02B8           ;                       PutSPIchar((unsigned char)((i&0x003f)<<2));
 02B8 042F              mov R16,R20
 02BA 0F73              andi R16,63
 02BC 1070              andi R17,0
 02BE 000F              lsl R16
 02C0 111F              rol R17
 02C2 000F              lsl R16
 02C4 111F              rol R17
 02C6 B6DF              xcall _PutSPIchar
 02C8                   .dbline 40
 02C8           ;                       Set_CS5615;                                     //释放TLC5615
 02C8 DF9A              sbi 0x1b,7
 02CA                   .dbline 41
 02CA           ;                       delay_nms(2);                                   //延时
 02CA 02E0              ldi R16,2
 02CC 10E0              ldi R17,0
 02CE A6DE              xcall _delay_nms
 02D0                   .dbline 42
 02D0           ;               }
 02D0           L64:
 02D0                   .dbline 35
 02D0 4150              subi R20,1
 02D2 5040              sbci R21,0
 02D4           L66:
 02D4                   .dbline 35
 02D4 88E1              ldi R24,280
 02D6 91E0              ldi R25,1
 02D8 8417              cp R24,R20
 02DA 9507              cpc R25,R21
 02DC 20F3              brlo L63
 02DE           X36:
 02DE                   .dbline 43
 02DE           ;       }
 02DE           L57:
 02DE                   .dbline 25
 02DE C2CF              xjmp L56
 02E0           X37:
 02E0                   .dbline -2
 02E0           L55:
 02E0                   .dbline 0 ; func end
 02E0 0895              ret
 02E2                   .dbsym r i 20 i
 02E2                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\8_DAC_TLC5615\DAC_TLC5615.c
 0000           _temprter::
 0000                   .blkb 2
 0002                   .dbfile D:\8_DAC_TLC5615\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 + -