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

📄 dac.lis

📁 为苏州一家公司所做的的恒温恒湿车间控制 系统
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00BB CD0000            jsr _Delay
 00BE 95                tsx
 00BF                   .dbline 67
 00BF           ;     SPIDR=0b10010000;       //发送高8位数据(CTRL1地址为1001)
 00BF A690              lda #-112
 00C1 B712              sta 0x12
 00C3           L18:
 00C3                   .dbline 68
 00C3           L19:
 00C3                   .dbline 68
 00C3           ;       while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 00C3 0711FD            brclr #3,0x11,L18
 00C6                   .dbline 70
 00C6           ;                                              //发送完毕 
 00C6           ;       SPIDR=0b00001111;       //发送低8位数据(正常电压,快速)
 00C6 A60F              lda #15
 00C8 B712              sta 0x12
 00CA           L21:
 00CA                   .dbline 71
 00CA           L22:
 00CA                   .dbline 71
 00CA 0711FD            brclr #3,0x11,L21
 00CD                   .dbline 73
 00CD F6                lda ,X
 00CE AB02              add #2
 00D0 6E0100            mov #1,*__r2
 00D3 A407              and #7
 00D5 2704              beq X7
 00D7           X6:
 00D7 3800              lsl *__r2
 00D9 4BFC              dbnza X6
 00DB           X7:
 00DB B602              lda 0x2
 00DD BA00              ora *__r2
 00DF B702              sta 0x2
 00E1                   .dbline 74
 00E1           L9:
 00E1                   .dbline 44
 00E1 7C                inc ,X
 00E2           L11:
 00E2                   .dbline 44
 00E2 F6                lda ,X
 00E3 A101              cmp #1
 00E5 2203              bhi X8
 00E7 CC0057            jmp L8
 00EA           X8:
 00EA                   .dbline -2
 00EA           L7:
 00EA A701              ais #1
 00EC                   .dbline 0 ; func end
 00EC 81                rts
 00ED                   .dbsym l fs 0 c
 00ED                   .dbend
 00ED                   .dbfunc e TLV5608Z _TLV5608Z fV
 00ED           ;          value -> 0,X
 00ED           ;             fs -> 2,X
 00ED           ;            buf -> 7,X
 00ED           ;        channel -> 5,X
 00ED           _TLV5608Z::
 00ED                   .dbline -1
 00ED A7FD              ais #-3
 00EF 95                tsx
 00F0                   .dbline 86
 00F0           ;       while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 00F0           ;                                              //发送完毕                                             
 00F0           ;       CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平
 00F0           ;   }                                    
 00F0           ; }
 00F0           ; /*TLV5608芯片D/A转换子程序(TLV5608Z.c)--------------------------*
 00F0           ; *TLV5608的接线:                                                 *
 00F0           ; *             ① SCLK(3)接MC08HC908GP32的SPSCK(18)              *
 00F0           ; *             ② DIN(2)接MC08HC908GP32的MISO(17)                *
 00F0           ; *             ③ LDAC(18)接MC08HC908GP32的PTC4                  *
 00F0           ; *             ④ 0-1片FS(4作为片选信号)接分别接的PTC2~3         *
 00F0           ; *                MODE接高电平,选择uC模式                       *
 00F0           ; *入口:channel-通道号(1-16),buf-存放数据                        *
 00F0           ; *--------------------------------------------------------------*/
 00F0           ; void TLV5608Z(INT16U channel, INT16U buf)
 00F0           ; {
 00F0                   .dbline 89
 00F0           ;   INT8U fs;//片选号
 00F0           ;   INT16U value;
 00F0           ;   channel=1;
 00F0 4F                clra
 00F1 E705              sta 5,X
 00F3 A601              lda #1
 00F5 E706              sta 6,X
 00F7                   .dbline 90
 00F7           ;   if((channel>0)&&(channel<9))
 00F7 E605              lda 5,X
 00F9 2604              bne X9
 00FB E606              lda 6,X
 00FD 2714              beq L25
 00FF           X9:
 00FF E606              lda 6,X
 0101 B700              sta *__r1
 0103 E605              lda 5,X
 0105 B700              sta *__r0
 0107 5500              ldhx *__r0
 0109 650009            cphx #9
 010C 95                tsx
 010D 2404              bhs L25
 010F                   .dbline 91
 010F           ;      fs=0;
 010F 6F02              clr 2,X
 0111 2004              bra L26
 0113           L25:
 0113                   .dbline 93
 0113           ;   else
 0113           ;      fs=1; 
 0113 A601              lda #1
 0115 E702              sta 2,X
 0117           L26:
 0117                   .dbline 95
 0117           ;   //整合要发送的16位数据-(value的高4位为通道号,后12位为数据位)  
 0117           ;   value=((channel-fs*8-1)<<12)|buf;
 0117 3F00              clr *__r0
 0119 E602              lda 2,X
 011B B700              sta *__r1
 011D 3800              lsl *__r1
 011F 3900              rol *__r0
 0121 3800              lsl *__r1
 0123 3900              rol *__r0
 0125 3800              lsl *__r1
 0127 3900              rol *__r0
 0129 E606              lda 6,X
 012B B000              sub *__r1
 012D B700              sta *__r1
 012F E605              lda 5,X
 0131 B200              sbc *__r0
 0133 B700              sta *__r0
 0135 B600              lda *__r1
 0137 A001              sub #1
 0139 B700              sta *__r1
 013B B600              lda *__r0
 013D A200              sbc #0
 013F B700              sta *__r0
 0141 A60C              lda #12
 0143           X10:
 0143 3800              lsl *__r1
 0145 3900              rol *__r0
 0147 4BFA              dbnza X10
 0149 B600              lda *__r1
 014B EA08              ora 8,X
 014D E701              sta 1,X
 014F B600              lda *__r0
 0151 EA07              ora 7,X
 0153 F7                sta ,X
 0154                   .dbline 97
 0154           ;   //发送16位数据
 0154           ;   CS_D |=0b00001100;  //定义PTC2~3为输出
 0154 B606              lda 0x6
 0156 AA0C              ora #12
 0158 B706              sta 0x6
 015A                   .dbline 98
 015A           ;   CS_P |=0b00001100;  //PTC2~3输出为高电平
 015A B602              lda 0x2
 015C AA0C              ora #12
 015E B702              sta 0x2
 0160                   .dbline 101
 0160           ;       
 0160           ;   //TLV5608.FS=1    
 0160           ;   CS_P &= ~(1<<(fs+2));   //相应片TLV.FS由高电平变为低电平,产生下降沿
 0160 E602              lda 2,X
 0162 AB02              add #2
 0164 6E0100            mov #1,*__r2
 0167 A407              and #7
 0169 2704              beq X12
 016B           X11:
 016B 3800              lsl *__r2
 016D 4BFC              dbnza X11
 016F           X12:
 016F 4E0000            mov *__r2,*__r0
 0172 3300              com *__r0
 0174 B602              lda 0x2
 0176 B400              and *__r0
 0178 B702              sta 0x2
 017A                   .dbline 103
 017A           ;                       //此后在每个SCLK的下降沿传送一位数据  
 017A           ;   Delay();           //延时20个时钟周期                       
 017A CD0000            jsr _Delay
 017D 95                tsx
 017E                   .dbline 104
 017E           ;   SPIDR=value>>8;       //发送高8位数据 
 017E F6                lda ,X
 017F B712              sta 0x12
 0181           L27:
 0181                   .dbline 105
 0181           L28:
 0181                   .dbline 105
 0181           ;   while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 0181 0711FD            brclr #3,0x11,L27
 0184                   .dbline 107
 0184           ;                                              //发送完毕 
 0184           ;   SPIDR=value;         //发送低8位数据
 0184 E601              lda 1,X
 0186 B712              sta 0x12
 0188           L30:
 0188                   .dbline 108
 0188           L31:
 0188                   .dbline 108
 0188           ;   while((SPISCR & (1<<SendEmyptBit)) == 0); //为0等待,也就是等待SPTE为1 
 0188 0711FD            brclr #3,0x11,L30
 018B                   .dbline 110
 018B           ;                                              //发送完毕
 018B           ;   asm("nop");
 018B 9D                nop
 018C                   .dbline 111
 018C           ;   CS_P |= (1<<(fs+2));   //数据传输完毕,相应片TLV.FS由低电平变为高电平              
 018C E602              lda 2,X
 018E AB02              add #2
 0190 6E0100            mov #1,*__r2
 0193 A407              and #7
 0195 2704              beq X14
 0197           X13:
 0197 3800              lsl *__r2
 0199 4BFC              dbnza X13
 019B           X14:
 019B B602              lda 0x2
 019D BA00              ora *__r2
 019F B702              sta 0x2
 01A1                   .dbline -2
 01A1           L24:
 01A1 A703              ais #3
 01A3                   .dbline 0 ; func end
 01A3 81                rts
 01A4                   .dbsym l value 0 s
 01A4                   .dbsym l fs 2 c
 01A4                   .dbsym l buf 7 s
 01A4                   .dbsym l channel 5 s
 01A4                   .dbend

⌨️ 快捷键说明

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