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

📄 tl5615.lis

📁 基于ATMEGA16的DA转换的C程序源代码
💻 LIS
字号:
                        .module tl5615.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\bibo\icc\TL5615\tl5615.c
 0000                   .dbfunc e SPI_chuangsong _SPI_chuangsong fV
 0000           ;           data -> R16
                        .even
 0000           _SPI_chuangsong::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ; #include<iom16v.h>
 0000           ; #include<macros.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           ; #define  uchar unsigned char
 0000           ; 
 0000           ; void SPI_chuangsong(uchar data)
 0000           ; {
 0000                   .dbline 11
 0000           ;   SPDR=data;                   //数据输出
 0000 0FB9              out 0xf,R16
 0002           L2:
 0002                   .dbline 12
 0002           L3:
 0002                   .dbline 12
 0002           ;   while(!(SPSR&(1<<SPIF)));    //SPCR为控制寄存器SPIF为1中断标志位   
 0002 779B              sbis 0xe,7
 0004 FECF              rjmp L2
 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_chushihua _SPI_chushihua fV
                        .even
 0008           _SPI_chushihua::
 0008                   .dbline -1
 0008                   .dbline 15
 0008           ; }
 0008           ; void SPI_chushihua()
 0008           ; {
 0008                   .dbline 16
 0008           ;  out5615;          //DDRA4=1,输出
 0008 D49A              sbi 0x1a,4
 000A                   .dbline 17
 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           ;  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 23
 0018           ;    unsigned int i,j;     
 0018           ;    SPI_chushihua();        //初始化SPI和5615设置
 0018 F7DF              xcall _SPI_chushihua
 001A 24C0              xjmp L8
 001C           L7:
 001C                   .dbline 26
 001C           ;    
 001C           ;     while(1)
 001C           ;      {
 001C                   .dbline 27
 001C           ;               for(i=180;i<1024;i++)                            
 001C 44EB              ldi R20,180
 001E 50E0              ldi R21,0
 0020 1DC0              xjmp L13
 0022           L10:
 0022                   .dbline 28
 0022           ;                {
 0022                   .dbline 29
 0022           ;                       clr5615;                                           //片选TLC5615
 0022 DC98              cbi 0x1b,4
 0024                   .dbline 30
 0024           ;                       SPI_chuangsong((uchar)(i>>6)); //发送数
 0024 26E0              ldi R18,6
 0026 30E0              ldi R19,0
 0028 8A01              movw R16,R20
 002A 0E940000          xcall lsr16
 002E E8DF              xcall _SPI_chuangsong
 0030                   .dbline 31
 0030           ;                       SPI_chuangsong((uchar)(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 _SPI_chuangsong
 003C                   .dbline 32
 003C           ;                       set5615;                                              //释放TLC5615
 003C DC9A              sbi 0x1b,4
 003E                   .dbline 33
 003E           ;            for(j=0;j<5000;j++)
 003E 6627              clr R22
 0040 7727              clr R23
 0042 06C0              xjmp L17
 0044           L14:
 0044                   .dbline 34
 0044                   .dbline 35
 0044 0000              nop
 0046                   .dbline 35
 0046 0000              nop
 0048                   .dbline 35
 0048 0000              nop
 004A                   .dbline 35
 004A 0000              nop
 004C                   .dbline 36
 004C           L15:
 004C                   .dbline 33
 004C 6F5F              subi R22,255  ; offset = 1
 004E 7F4F              sbci R23,255
 0050           L17:
 0050                   .dbline 33
 0050 6838              cpi R22,136
 0052 E3E1              ldi R30,19
 0054 7E07              cpc R23,R30
 0056 B0F3              brlo L14
 0058                   .dbline 37
 0058           L11:
 0058                   .dbline 27
 0058 4F5F              subi R20,255  ; offset = 1
 005A 5F4F              sbci R21,255
 005C           L13:
 005C                   .dbline 27
 005C 4030              cpi R20,0
 005E E4E0              ldi R30,4
 0060 5E07              cpc R21,R30
 0062 F8F2              brlo L10
 0064                   .dbline 38
 0064           L8:
 0064                   .dbline 25
 0064 DBCF              xjmp L7
 0066           X0:
 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

⌨️ 快捷键说明

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