📄 dac.lis
字号:
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 + -