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

📄 ad2disp.lis

📁 用ICC编写的程序包括SPI
💻 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 + -