📄 ad2disp.lis
字号:
.module Ad2disp.c
.area data(ram, con, rel)
0000 _Itrans::
0000 .blkb 2
.area idata
0000 00F1 .byte 0,241
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 6458 .byte 'd,'X
.area data(ram, con, rel)
0004 .dbfile F:\IccAvr_Pro\Ad2disp.c
0004 .dbsym e Itrans _Itrans A[4:4]c
.area text(rom, con, rel)
0000 .dbfile F:\IccAvr_Pro\Ad2disp.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 22
0000 ; //ICC-AVR application builder : 2005-6-5 18:27:12
0000 ; // Target : M16
0000 ; // Crystal: 7.3728Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "time.h"
0000 ; #include "Display.h"
0000 ; #include "key.h"
0000 ; #include "ADC.h"
0000 ;
0000 ; extern const unsigned char ADChannel;
0000 ; extern unsigned int AdValue[8];
0000 ; extern unsigned char AdP;
0000 ; extern unsigned char time_flag;
0000 ; extern unsigned char keyflag[4];
0000 ; extern unsigned char AdFlag;
0000 ; extern unsigned char pwm;
0000 ;
0000 ; unsigned char Itrans[4]={0,241,100,88};
0000 ; void port_init(void)
0000 ; {
0000 .dbline 23
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 24
0004 ; DDRA = 0x00;
0004 2224 clr R2
0006 2ABA out 0x1a,R2
0008 .dbline 25
0008 ; PORTB = 0xFF;
0008 88BB out 0x18,R24
000A .dbline 26
000A ; DDRB = 0x00;
000A 27BA out 0x17,R2
000C .dbline 27
000C ; PORTC = 0xFF; //m103 output only
000C 85BB out 0x15,R24
000E .dbline 28
000E ; DDRC = 0x00;
000E 24BA out 0x14,R2
0010 .dbline 29
0010 ; PORTD = 0xFF;
0010 82BB out 0x12,R24
0012 .dbline 30
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 .dbline 31
0014 ; }
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e init_devices _init_devices fV
.even
0016 _init_devices::
0016 .dbline -1
0016 .dbline 38
0016 ;
0016 ;
0016 ;
0016 ;
0016 ; //call this routine to initialise all peripherals
0016 ; void init_devices(void)
0016 ; {
0016 .dbline 40
0016 ; //stop errant interrupts until set up
0016 ; CLI(); //disable all interrupts
0016 F894 cli
0018 .dbline 41
0018 ; port_init();
0018 F3DF xcall _port_init
001A .dbline 42
001A ; timer1_init();
001A 0E940000 xcall _timer1_init
001E .dbline 43
001E ; disp_init();
001E 0E940000 xcall _disp_init
0022 .dbline 44
0022 ; adc_init();
0022 0E940000 xcall _adc_init
0026 .dbline 45
0026 ; timer2_init();
0026 0E940000 xcall _timer2_init
002A .dbline 48
002A ;
002A ;
002A ; MCUCR = 0x00;
002A 2224 clr R2
002C 25BE out 0x35,R2
002E .dbline 49
002E ; GICR = 0x00;
002E 2BBE out 0x3b,R2
0030 .dbline 50
0030 ; TIMSK = 0x40; //timer interrupt sources
0030 80E4 ldi R24,64
0032 89BF out 0x39,R24
0034 .dbline 51
0034 ; SEI(); //re-enable interrupts
0034 7894 sei
0036 .dbline -2
0036 .dbline 53
0036 ; //all peripherals are now initialised
0036 ; }
0036 L2:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
0038 .dbfunc e main _main fV
0038 ; result -> y+0
0038 ; key -> R10
.even
0038 _main::
0038 2497 sbiw R28,4
003A .dbline -1
003A .dbline 57
003A ;
003A ; //
003A ; void main(void)
003A ; {
003A .dbline 58
003A ; unsigned char key=0;
003A AA24 clr R10
003C .dbline 59
003C ; unsigned long result=0;
003C 40E0 ldi R20,0
003E 50E0 ldi R21,0
0040 60E0 ldi R22,0
0042 70E0 ldi R23,0
0044 FE01 movw R30,R28
0046 4083 std z+0,R20
0048 5183 std z+1,R21
004A 6283 std z+2,R22
004C 7383 std z+3,R23
004E .dbline 62
004E ;
004E ;
004E ; init_devices();
004E E3DF xcall _init_devices
0050 87C0 xjmp L5
0052 L4:
0052 .dbline 65
0052 ; //insert your functional code here...
0052 ; while(1)
0052 ; {
0052 .dbline 66
0052 ; time_flag=0;
0052 2224 clr R2
0054 20920000 sts _time_flag,R2
0058 .dbline 67
0058 ; AdFlag=0;
0058 20920000 sts _AdFlag,R2
005C .dbline 69
005C ;
005C ; adc_start();
005C 0E940000 xcall _adc_start
0060 L7:
0060 .dbline 71
0060 L8:
0060 .dbline 71
0060 ;
0060 ; while(!AdFlag);
0060 20900000 lds R2,_AdFlag
0064 2220 tst R2
0066 E1F3 breq L7
0068 .dbline 72
0068 ; pwm=(unsigned char)(AdValue[7]>>2);
0068 20900E00 lds R2,_AdValue+14
006C 30900F00 lds R3,_AdValue+14+1
0070 3694 lsr R3
0072 2794 ror R2
0074 3694 lsr R3
0076 2794 ror R2
0078 20920000 sts _pwm,R2
007C .dbline 73
007C ; pwm_change(pwm);
007C 022D mov R16,R2
007E 0E940000 xcall _pwm_change
0082 .dbline 74
0082 ; if(key)
0082 AA20 tst R10
0084 09F4 brne X1
0086 46C0 xjmp L11
0088 X1:
0088 .dbline 75
0088 ; {
0088 .dbline 76
0088 ; if(key==4)
0088 8A2D mov R24,R10
008A 8430 cpi R24,4
008C 51F4 brne L13
008E .dbline 77
008E ; result=0;
008E 40E0 ldi R20,0
0090 50E0 ldi R21,0
0092 60E0 ldi R22,0
0094 70E0 ldi R23,0
0096 FE01 movw R30,R28
0098 4083 std z+0,R20
009A 5183 std z+1,R21
009C 6283 std z+2,R22
009E 7383 std z+3,R23
00A0 33C0 xjmp L14
00A2 L13:
00A2 .dbline 79
00A2 ; else
00A2 ; {
00A2 .dbline 80
00A2 ; result=(10*(long)AdValue[3]*Itrans[key])/AdValue[5];
00A2 80E0 ldi R24,<_Itrans
00A4 90E0 ldi R25,>_Itrans
00A6 EA2D mov R30,R10
00A8 FF27 clr R31
00AA E80F add R30,R24
00AC F91F adc R31,R25
00AE 2080 ldd R2,z+0
00B0 3324 clr R3
00B2 4424 clr R4
00B4 5524 clr R5
00B6 60900600 lds R6,_AdValue+6
00BA 70900700 lds R7,_AdValue+6+1
00BE 8824 clr R8
00C0 9924 clr R9
00C2 4AE0 ldi R20,10
00C4 50E0 ldi R21,0
00C6 60E0 ldi R22,0
00C8 70E0 ldi R23,0
00CA 9A92 st -y,R9
00CC 8A92 st -y,R8
00CE 7A92 st -y,R7
00D0 6A92 st -y,R6
00D2 8A01 movw R16,R20
00D4 9B01 movw R18,R22
00D6 0E940000 xcall empy32s
00DA 5A92 st -y,R5
00DC 4A92 st -y,R4
00DE 3A92 st -y,R3
00E0 2A92 st -y,R2
00E2 0E940000 xcall empy32s
00E6 20900A00 lds R2,_AdValue+10
00EA 30900B00 lds R3,_AdValue+10+1
00EE 4424 clr R4
00F0 5524 clr R5
00F2 5A92 st -y,R5
00F4 4A92 st -y,R4
00F6 3A92 st -y,R3
00F8 2A92 st -y,R2
00FA 0E940000 xcall div32s
00FE FE01 movw R30,R28
0100 0083 std z+0,R16
0102 1183 std z+1,R17
0104 2283 std z+2,R18
0106 3383 std z+3,R19
0108 .dbline 82
0108 ;
0108 ; }
0108 L14:
0108 .dbline 84
0108 ;
0108 ; display((unsigned int)(result),0);
0108 2227 clr R18
010A FE01 movw R30,R28
010C 0081 ldd R16,z+0
010E 1181 ldd R17,z+1
0110 0E940000 xcall _display
0114 .dbline 85
0114 ; }
0114 L11:
0114 .dbline 86
0114 ; display(AdValue[3],1);
0114 21E0 ldi R18,1
0116 00910600 lds R16,_AdValue+6
011A 10910700 lds R17,_AdValue+6+1
011E 0E940000 xcall _display
0122 .dbline 87
0122 ; display(AdValue[5],2);
0122 22E0 ldi R18,2
0124 00910A00 lds R16,_AdValue+10
0128 10910B00 lds R17,_AdValue+10+1
012C 0E940000 xcall _display
0130 .dbline 88
0130 ; display(AdValue[7]*5,3);
0130 23E0 ldi R18,3
0132 20900E00 lds R2,_AdValue+14
0136 30900F00 lds R3,_AdValue+14+1
013A 05E0 ldi R16,5
013C 10E0 ldi R17,0
013E 2F93 push R18
0140 3F93 push R19
0142 9101 movw R18,R2
0144 0E940000 xcall empy16s
0148 3F91 pop R19
014A 2F91 pop R18
014C 0E940000 xcall _display
0150 03C0 xjmp L21
0152 L20:
0152 .dbline 91
0152 0E940000 xcall _ReadKey
0156 A02E mov R10,R16
0158 L21:
0158 .dbline 90
0158 20900000 lds R2,_time_flag
015C 2220 tst R2
015E C9F3 breq L20
0160 .dbline 93
0160 L5:
0160 .dbline 64
0160 78CF xjmp L4
0162 X0:
0162 .dbline -2
0162 .dbline 94
0162 ;
0162 ; while(!time_flag)
0162 ; key=ReadKey();
0162 ;
0162 ; }
0162 ; }
0162 L3:
0162 2496 adiw R28,4
0164 .dbline 0 ; func end
0164 0895 ret
0166 .dbsym l result 0 l
0166 .dbsym r key 10 c
0166 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -