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

📄 dac.lis

📁 AVR单片机DAC范例程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00A4           ; 
 00A4           ; void spi_init()
 00A4           ; {
 00A4                   .dbline 73
 00A4           ;      DDRB|=0XA0;
 00A4 87B3              in R24,0x17
 00A6 806A              ori R24,160
 00A8 87BB              out 0x17,R24
 00AA                   .dbline 74
 00AA           ;        DDRA|=BIT(PA1);
 00AA D19A              sbi 0x1a,1
 00AC                   .dbline 75
 00AC           ;        SPCR=0X57;
 00AC 87E5              ldi R24,87
 00AE 8DB9              out 0xd,R24
 00B0                   .dbline -2
 00B0                   .dbline 76
 00B0           ; }
 00B0           L26:
 00B0                   .dbline 0 ; func end
 00B0 0895              ret
 00B2                   .dbend
 00B2                   .dbfunc e ad5300 _ad5300 fV
 00B2           ;          temp2 -> R22
 00B2           ;          temp1 -> R20
 00B2           ;         status -> R22
 00B2           ;         daword -> R10
                        .even
 00B2           _ad5300::
 00B2 00D0              rcall push_gset3
 00B4 A02E              mov R10,R16
 00B6                   .dbline -1
 00B6                   .dbline 78
 00B6           ; void ad5300(uchar daword)
 00B6           ; {
 00B6                   .dbline 79
 00B6           ;     uchar temp1=0,temp2=0,status;
 00B6 4427              clr R20
 00B8                   .dbline 79
 00B8 6627              clr R22
 00BA                   .dbline 80
 00BA           ;     temp1|=daword<<4;//1101 1001
 00BA 8A2D              mov R24,R10
 00BC 8F70              andi R24,#0x0F
 00BE 8295              swap R24
 00C0 482B              or R20,R24
 00C2                   .dbline 81
 00C2           ;     temp2|=daword>>4;
 00C2 8A2D              mov R24,R10
 00C4 8295              swap R24
 00C6 8F70              andi R24,#0x0F
 00C8 682B              or R22,R24
 00CA                   .dbline 83
 00CA           ;       
 00CA           ;       PORTA&=~BIT(PA1);
 00CA D998              cbi 0x1b,1
 00CC                   .dbline 84
 00CC           ;       SPSR=0;
 00CC 2224              clr R2
 00CE 2EB8              out 0xe,R2
 00D0                   .dbline 85
 00D0           ;       SPDR=temp2;
 00D0 6FB9              out 0xf,R22
 00D2           L28:
 00D2                   .dbline 87
 00D2           ;     do
 00D2           ;       {
 00D2                   .dbline 88
 00D2           ;         status=SPSR;
 00D2 6EB1              in R22,0xe
 00D4                   .dbline 89
 00D4           L29:
 00D4                   .dbline 89
 00D4           ;       }while(!(status&=0X80));
 00D4 862F              mov R24,R22
 00D6 8078              andi R24,128
 00D8 682F              mov R22,R24
 00DA 8823              tst R24
 00DC D1F3              breq L28
 00DE                   .dbline 91
 00DE           ;       
 00DE           ;       delay(10);
 00DE 0AE0              ldi R16,10
 00E0 10E0              ldi R17,0
 00E2 8EDF              rcall _delay
 00E4                   .dbline 92
 00E4           ;       SPSR=0;
 00E4 2224              clr R2
 00E6 2EB8              out 0xe,R2
 00E8                   .dbline 93
 00E8           ;       SPDR=temp1;
 00E8 4FB9              out 0xf,R20
 00EA           L31:
 00EA                   .dbline 95
 00EA           ;       do
 00EA           ;       {
 00EA                   .dbline 96
 00EA           ;         status=SPSR;
 00EA 6EB1              in R22,0xe
 00EC                   .dbline 97
 00EC           L32:
 00EC                   .dbline 97
 00EC           ;       }while(!(status&=0X80));
 00EC 862F              mov R24,R22
 00EE 8078              andi R24,128
 00F0 682F              mov R22,R24
 00F2 8823              tst R24
 00F4 D1F3              breq L31
 00F6                   .dbline 98
 00F6           ;       SPSR=0;
 00F6 2224              clr R2
 00F8 2EB8              out 0xe,R2
 00FA                   .dbline 99
 00FA           ;       delay(10);
 00FA 0AE0              ldi R16,10
 00FC 10E0              ldi R17,0
 00FE 80DF              rcall _delay
 0100                   .dbline 100
 0100           ;       PORTA|=BIT(PA1);
 0100 D99A              sbi 0x1b,1
 0102                   .dbline -2
 0102                   .dbline 101
 0102           ; } 
 0102           L27:
 0102 00D0              rcall pop_gset3
 0104                   .dbline 0 ; func end
 0104 0895              ret
 0106                   .dbsym r temp2 22 c
 0106                   .dbsym r temp1 20 c
 0106                   .dbsym r status 22 c
 0106                   .dbsym r daword 10 c
 0106                   .dbend
 0106                   .dbfunc e main _main fV
 0106           ;           data -> R20
 0106           ;              i -> R10
                        .even
 0106           _main::
 0106                   .dbline -1
 0106                   .dbline 103
 0106           ; void main()
 0106           ; {
 0106                   .dbline 104
 0106           ;     uchar i,data=128;
 0106 40E8              ldi R20,128
 0108                   .dbline 105
 0108           ;     DDRB=0XFF;
 0108 8FEF              ldi R24,255
 010A 87BB              out 0x17,R24
 010C                   .dbline 106
 010C           ;       spi_init();
 010C CBDF              rcall _spi_init
 010E                   .dbline 107
 010E           ;       ad5300(0);
 010E 0027              clr R16
 0110 D0DF              rcall _ad5300
 0112                   .dbline 108
 0112           ;       ad5300(data);
 0112 042F              mov R16,R20
 0114 CEDF              rcall _ad5300
 0116 20C0              rjmp L36
 0118           L35:
 0118                   .dbline 111
 0118           ;       
 0118           ;       while(1)
 0118           ;       {
 0118                   .dbline 112
 0118           ;          if(key_press())
 0118 87DF              rcall _key_press
 011A 0023              tst R16
 011C E9F0              breq L38
 011E                   .dbline 113
 011E           ;          {
 011E                   .dbline 114
 011E           ;             i=key_scan();
 011E 95DF              rcall _key_scan
 0120 A02E              mov R10,R16
 0122                   .dbline 115
 0122           ;                 switch(i)
 0122 6A2D              mov R22,R10
 0124 7727              clr R23
 0126 6030              cpi R22,0
 0128 6707              cpc R22,R23
 012A 69F0              breq L43
 012C           X1:
 012C 6130              cpi R22,1
 012E E0E0              ldi R30,0
 0130 7E07              cpc R23,R30
 0132 59F0              breq L44
 0134 6230              cpi R22,2
 0136 E0E0              ldi R30,0
 0138 7E07              cpc R23,R30
 013A 49F0              breq L45
 013C 6330              cpi R22,3
 013E E0E0              ldi R30,0
 0140 7E07              cpc R23,R30
 0142 39F0              breq L46
 0144 07C0              rjmp L40
 0146           X2:
 0146                   .dbline 116
 0146           ;                 {
 0146           L43:
 0146                   .dbline 118
 0146           ;                   case 0:
 0146           ;                         data=data+16;
 0146 405F              subi R20,240    ; addi 16
 0148                   .dbline 119
 0148           ;                         break;
 0148 05C0              rjmp L41
 014A           L44:
 014A                   .dbline 121
 014A           ;                       case 1:
 014A           ;                         data=data-16;
 014A 4051              subi R20,16
 014C                   .dbline 122
 014C           ;                         break;
 014C 03C0              rjmp L41
 014E           L45:
 014E                   .dbline 124
 014E           ;                       case 2:
 014E           ;                         data=0;
 014E 4427              clr R20
 0150                   .dbline 125
 0150           ;                         break;
 0150 01C0              rjmp L41
 0152           L46:
 0152                   .dbline 127
 0152           ;                        case 3:
 0152           ;                         data=255;
 0152 4FEF              ldi R20,255
 0154                   .dbline 128
 0154           ;                         break;      
 0154           L40:
 0154           L41:
 0154                   .dbline 130
 0154           ;                 }
 0154           ;                 ad5300(data);
 0154 042F              mov R16,R20
 0156 ADDF              rcall _ad5300
 0158                   .dbline 131
 0158           ;          }
 0158           L38:
 0158                   .dbline 132
 0158           L36:
 0158                   .dbline 110
 0158 DFCF              rjmp L35
 015A           X3:
 015A                   .dbline -2
 015A                   .dbline 133
 015A           ;       }
 015A           ; }
 015A           L34:
 015A                   .dbline 0 ; func end
 015A 0895              ret
 015C                   .dbsym r data 20 c
 015C                   .dbsym r i 10 c
 015C                   .dbend

⌨️ 快捷键说明

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