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

📄 spi_tlc5615.lis

📁 ATmega16-ad1602
💻 LIS
字号:
                        .module spi_tlc5615.c
                        .area text(rom, con, rel)
 0000                   .dbfile spi_tlc5615.c
 0000                   .dbfile F:\file\数控电源3\ad_da\text\spi_tlc5615.c
 0000                   .dbfunc e spi_init _spi_init fV
                        .even
 0000           _spi_init::
 0000                   .dbline -1
 0000                   .dbline 4
 0000           ; #define SPI_TLC5615_C
 0000           ; #include "includes.h"
 0000           ; void spi_init(void)//SPI初始化
 0000           ; {
 0000                   .dbline 5
 0000           ;       SPCR=0X50; //使能SPI,MSB先发,主模式,CPOL为0,默认4分频
 0000 80E5              ldi R24,80
 0002 8DB9              out 0xd,R24
 0004                   .dbline -2
 0004           L1:
 0004                   .dbline 0 ; func end
 0004 0895              ret
 0006                   .dbend
 0006                   .dbfunc e spi_io_init _spi_io_init fV
                        .even
 0006           _spi_io_init::
 0006                   .dbline -1
 0006                   .dbline 9
 0006           ;       
 0006           ; }
 0006           ; void spi_io_init(void)
 0006           ; {
 0006                   .dbline 10
 0006           ;       DDRB|=(1<<PB4)|(1<<PB5)|(1<<PB7); //PB4-SS,PB5-MOSI,PB7-SCK
 0006 87B3              in R24,0x17
 0008 806B              ori R24,176
 000A 87BB              out 0x17,R24
 000C                   .dbline 11
 000C           ;       PORTB|=(1<<PB4)|(1<<PB5)|(1<<PB7);//PB4拉高TLC5615不使能;MOSI,SCK为高电平
 000C 88B3              in R24,0x18
 000E 806B              ori R24,176
 0010 88BB              out 0x18,R24
 0012                   .dbline -2
 0012           L2:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbend
 0014                   .dbfunc e spi_tlc5615 _spi_tlc5615 fV
 0014           ;           temp -> R22,R23
 0014           ;          temp2 -> R10
 0014           ;          temp1 -> R12
 0014           ;         status -> R20
 0014           ;          idata -> R20,R21
                        .even
 0014           _spi_tlc5615::
 0014 00D0              rcall push_xgsetF03C
 0016 A801              movw R20,R16
 0018                   .dbline -1
 0018                   .dbline 14
 0018           ; }
 0018           ; void spi_tlc5615(unsigned int idata)//0000 00(78 8765 4321)
 0018           ; {
 0018                   .dbline 16
 0018           ;       unsigned int temp;
 0018           ;       unsigned char temp1=0,temp2=0,status;
 0018                   .dbline 16
 0018                   .dbline 17
 0018           ;       temp=idata<<2;//0000 7887 6543 2100
 0018 BA01              movw R22,R20
 001A 660F              lsl R22
 001C 771F              rol R23
 001E 660F              lsl R22
 0020 771F              rol R23
 0022                   .dbline 18
 0022           ;       temp1=(temp&0xff00)>>8;//0000 0000 (0000 7887) 
 0022 CB01              movw R24,R22
 0024 8070              andi R24,0
 0026 6C01              movw R12,R24
 0028 CD2C              mov R12,R13
 002A DD24              clr R13
 002C                   .dbline 19
 002C           ;       temp2=(idata&0x00ff);//0000 0000 (6543 2100)
 002C CA01              movw R24,R20
 002E 9070              andi R25,0
 0030 A82E              mov R10,R24
 0032                   .dbline 21
 0032           ;       
 0032           ;       PORTB&=~(1<<PB4);//使能TLC5615
 0032 C498              cbi 0x18,4
 0034                   .dbline 22
 0034           ;       SPDR=temp1;//传送数据高二位
 0034 CFB8              out 0xf,R12
 0036           L4:
 0036                   .dbline 24
 0036           ;       do      
 0036           ;       {
 0036                   .dbline 25
 0036           ;         status=SPSR;
 0036 4EB1              in R20,0xe
 0038                   .dbline 26
 0038           ;       }while(!(status&=0X80));
 0038           L5:
 0038                   .dbline 26
 0038 842F              mov R24,R20
 003A 8078              andi R24,128
 003C 482F              mov R20,R24
 003E 8823              tst R24
 0040 D1F3              breq L4
 0042           X0:
 0042                   .dbline 28
 0042           ;       
 0042           ;       delay_nms(10);
 0042 0AE0              ldi R16,10
 0044 10E0              ldi R17,0
 0046 00D0              rcall _delay_nms
 0048                   .dbline 30
 0048           ;       
 0048           ;       SPSR=0;
 0048 2224              clr R2
 004A 2EB8              out 0xe,R2
 004C                   .dbline 31
 004C           ;       SPDR=temp2;//传送数据低八位
 004C AFB8              out 0xf,R10
 004E           L7:
 004E                   .dbline 33
 004E           ;       do
 004E           ;       {
 004E                   .dbline 34
 004E           ;         status=SPSR;
 004E 4EB1              in R20,0xe
 0050                   .dbline 35
 0050           ;       }while(!(status&=0X80));
 0050           L8:
 0050                   .dbline 35
 0050 842F              mov R24,R20
 0052 8078              andi R24,128
 0054 482F              mov R20,R24
 0056 8823              tst R24
 0058 D1F3              breq L7
 005A           X1:
 005A                   .dbline 36
 005A           ;       SPSR=0;
 005A 2224              clr R2
 005C 2EB8              out 0xe,R2
 005E                   .dbline 37
 005E           ;       delay_nms(10);
 005E 0AE0              ldi R16,10
 0060 10E0              ldi R17,0
 0062 00D0              rcall _delay_nms
 0064                   .dbline 38
 0064           ;       PORTB|=(1<<PB4);//TLC5615不使能
 0064 C49A              sbi 0x18,4
 0066                   .dbline -2
 0066           L3:
 0066                   .dbline 0 ; func end
 0066 00C0              rjmp pop_xgsetF03C
 0068                   .dbsym r temp 22 i
 0068                   .dbsym r temp2 10 c
 0068                   .dbsym r temp1 12 c
 0068                   .dbsym r status 20 c
 0068                   .dbsym r idata 20 i
 0068                   .dbend
 0068           ; }
 0068           ; 
 0068           ; 
 0068           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -