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

📄 init.lis

📁 本设计以ATMEL公司生产的AT90S8515作为控制核心
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module init.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\hujie\init.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 26
 0000           ; // init.c
 0000           ; // 
 0000           ; 
 0000           ; #include <io8515v.h>
 0000           ; #include <macros.h>
 0000           ; #include "1602LCD.h"
 0000           ; #include "PID.h"
 0000           ; #include "main.h"
 0000           ; 
 0000           ; // ADC寄存器
 0000           ; #define ADCCR (*(volatile unsigned char *) 0x4000)      // ADC控制器
 0000           ; #define ADCH  (*(volatile unsigned char *) 0x4001)      // 高4位寄存器
 0000           ; #define ADCL  (*(volatile unsigned char *) 0x4000)      // 低8位寄存器
 0000           ; // DAC寄存器
 0000           ; #define DAC1  (*(volatile unsigned char *) 0x8000)      // 通道1      
 0000           ; #define DAC2  (*(volatile unsigned char *) 0x8001)            // 通道2
 0000           ; #define DAC3  (*(volatile unsigned char *) 0x8002)            // 通道3
 0000           ; #define DAC4  (*(volatile unsigned char *) 0x8003)            // 通道4
 0000           ; #define DACEN (*(volatile unsigned char *) 0xc000)      // 转换开始
 0000           ; 
 0000           ; //#define K0    32.76    // DAC转换系数
 0000           ; //#define K1    2.01      // ADC转换系数
 0000           ; 
 0000           ; // 端口初始化
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 27
 0000           ;     PORTA = 0xFF;
 0000 8FEF              ldi R24,255
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 28
 0004           ;       DDRA  = 0x00;
 0004 2224              clr R2
 0006 2ABA              out 0x1a,R2
 0008                   .dbline 29
 0008           ;       PORTB = 0xFF;
 0008 88BB              out 0x18,R24
 000A                   .dbline 30
 000A           ;       DDRB  = 0xFF;
 000A 87BB              out 0x17,R24
 000C                   .dbline 31
 000C           ;       PORTC = 0xFF;
 000C 85BB              out 0x15,R24
 000E                   .dbline 32
 000E           ;       DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 33
 0010           ;       PORTD = 0xFF;
 0010 82BB              out 0x12,R24
 0012                   .dbline 34
 0012           ;       DDRD  = 0x04; 
 0012 84E0              ldi R24,4
 0014 81BB              out 0x11,R24
 0016                   .dbline -2
 0016                   .dbline 35
 0016           ; }
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbend
 0018                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0018           _timer0_init::
 0018                   .dbline -1
 0018                   .dbline 38
 0018           ; // TIMER0初始化 
 0018           ; void timer0_init(void)
 0018           ; {
 0018                   .dbline 39
 0018           ;     TCCR0 = 0x00; //stop timer
 0018 2224              clr R2
 001A 23BE              out 0x33,R2
 001C                   .dbline 40
 001C           ;       TCNT0 = 0xD9; //set count value
 001C 89ED              ldi R24,217
 001E 82BF              out 0x32,R24
 0020                   .dbline 41
 0020           ;       TCCR0 = 0x05; //start timer
 0020 85E0              ldi R24,5
 0022 83BF              out 0x33,R24
 0024                   .dbline -2
 0024                   .dbline 42
 0024           ; }
 0024           L2:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbend
 0026                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0026           _timer1_init::
 0026                   .dbline -1
 0026                   .dbline 45
 0026           ; // TIMER1初始化
 0026           ; void timer1_init(void)
 0026           ; {
 0026                   .dbline 46
 0026           ;  TCCR1A = 0x00;
 0026 2224              clr R2
 0028 2FBC              out 0x2f,R2
 002A                   .dbline 47
 002A           ;  TCCR1B = 0x00; //stop
 002A 2EBC              out 0x2e,R2
 002C                   .dbline 48
 002C           ;  OCR1AH = 0x07;
 002C 87E0              ldi R24,7
 002E 8BBD              out 0x2b,R24
 0030                   .dbline 49
 0030           ;  OCR1AL = 0xD0;
 0030 80ED              ldi R24,208
 0032 8ABD              out 0x2a,R24
 0034                   .dbline 50
 0034           ;  OCR1BH = 0x07;
 0034 87E0              ldi R24,7
 0036 89BD              out 0x29,R24
 0038                   .dbline 51
 0038           ;  OCR1BL = 0xD0;
 0038 80ED              ldi R24,208
 003A 88BD              out 0x28,R24
 003C                   .dbline 52
 003C           ;  TCNT1H = 0xF8; //setup
 003C 88EF              ldi R24,248
 003E 8DBD              out 0x2d,R24
 0040                   .dbline 53
 0040           ;  TCNT1L = 0x30;
 0040 80E3              ldi R24,48
 0042 8CBD              out 0x2c,R24
 0044                   .dbline 54
 0044           ;  TCCR1B = 0x02; //start Timer
 0044 82E0              ldi R24,2
 0046 8EBD              out 0x2e,R24
 0048                   .dbline -2
 0048                   .dbline 55
 0048           ; }
 0048           L3:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbend
 004A                   .dbfunc e data_init _data_init fV
 004A           ;              i -> R20,R21
 004A           ;           data -> R22,R23
                        .even
 004A           _data_init::
 004A 00D0              rcall push_gset2
 004C 602F              mov R22,R16
 004E 712F              mov R23,R17
 0050                   .dbline -1
 0050                   .dbline 58
 0050           ; // 数据格式转换
 0050           ; void data_init(unsigned int data)
 0050           ; {
 0050                   .dbline 61
 0050           ;     int i;
 0050           ; 
 0050           ;       for(i=4;i>=0;i--)
 0050 44E0              ldi R20,4
 0052 50E0              ldi R21,0
 0054           L5:
 0054                   .dbline 62
 0054                   .dbline 63
 0054 2AE0              ldi R18,10
 0056 30E0              ldi R19,0
 0058 062F              mov R16,R22
 005A 172F              mov R17,R23
 005C 00D0              rcall mod16u
 005E 80E0              ldi R24,<_value_table
 0060 90E0              ldi R25,>_value_table
 0062 E42F              mov R30,R20
 0064 F52F              mov R31,R21
 0066 E80F              add R30,R24
 0068 F91F              adc R31,R25
 006A 0083              std z+0,R16
 006C                   .dbline 64
 006C 2AE0              ldi R18,10
 006E 30E0              ldi R19,0
 0070 062F              mov R16,R22
 0072 172F              mov R17,R23
 0074 00D0              rcall div16u
 0076 602F              mov R22,R16
 0078 712F              mov R23,R17
 007A                   .dbline 65
 007A           L6:
 007A                   .dbline 61
 007A 4150              subi R20,1
 007C 5040              sbci R21,0
 007E                   .dbline 61
 007E 4030              cpi R20,0
 0080 E0E0              ldi R30,0
 0082 5E07              cpc R21,R30
 0084 3CF7              brge L5
 0086                   .dbline -2
 0086                   .dbline 66
 0086           ;       {
 0086           ;               value_table[i]=data%10;
 0086           ;         data/=10; 
 0086           ;       }
 0086           ; }
 0086           L4:
 0086 00D0              rcall pop_gset2
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r i 20 I
 008A                   .dbsym r data 22 i
 008A                   .dbend
 008A                   .dbfunc e init_devices _init_devices fV
                        .even
 008A           _init_devices::
 008A 00D0              rcall push_gset1
 008C 2697              sbiw R28,6
 008E                   .dbline -1
 008E                   .dbline 70
 008E           ; 
 008E           ; // 初始化
 008E           ; void init_devices(void)
 008E           ; {
 008E                   .dbline 71
 008E           ;       CLI();
 008E F894              cli
 0090                   .dbline 72
 0090           ;       port_init();
 0090 B7DF              rcall _port_init
 0092                   .dbline 73
 0092           ;       timer0_init();
 0092 C2DF              rcall _timer0_init
 0094                   .dbline 74
 0094           ;       timer1_init();
 0094 C8DF              rcall _timer1_init
 0096                   .dbline 75
 0096           ;       LCD_init();
 0096 00D0              rcall _LCD_init
 0098                   .dbline 77
 0098           ;       
 0098           ;       MCUCR = 0xC2;                          // 外部SRAM访问
 0098 82EC              ldi R24,194
 009A 85BF              out 0x35,R24
 009C                   .dbline 78
 009C           ;       GIMSK = 0x40;                          // INT0中断
 009C 80E4              ldi R24,64
 009E 8BBF              out 0x3b,R24
 00A0                   .dbline 79
 00A0           ;       TIMSK = 0x82;                          // T/C0、T/C1中断
 00A0 82E8              ldi R24,130
 00A2 89BF              out 0x39,R24
 00A4                   .dbline 81
 00A4           ;       
 00A4           ;       ADCCR=0x60;                            // 开启ADC 
 00A4 80E6              ldi R24,96
 00A6 80930040          sts 16384,R24
 00AA                   .dbline 82
 00AA           ;       ADCCR=0x40;                               
 00AA 80E4              ldi R24,64
 00AC 80930040          sts 16384,R24
 00B0                   .dbline 84
 00B0           ;               
 00B0           ;       DAC1=0;                                // 开启DAC通道1 
 00B0 2224              clr R2
 00B2 20920080          sts 32768,R2
 00B6                   .dbline 85
 00B6           ;       DAC2=0;                                // 开启DAC通道2 
 00B6 20920180          sts 32769,R2
 00BA                   .dbline 86
 00BA           ;       DAC3=0;                                // 开启DAC通道3 
 00BA 20920280          sts 32770,R2
 00BE                   .dbline 87
 00BE           ;       DAC4=DAC4_value;                       // 开启DAC通道4 
 00BE 20900000          lds R2,_DAC4_value
 00C2 20920380          sts 32771,R2
 00C6                   .dbline 88
 00C6           ;       DACEN=0;                                 
 00C6 2224              clr R2
 00C8 209200C0          sts 49152,R2
 00CC                   .dbline 90
 00CC           ; 
 00CC           ;       LCD_write_string(0,0,"O:0020 R:0000 mA");
 00CC 80E0              ldi R24,<L10
 00CE 90E0              ldi R25,>L10
 00D0 9983              std y+1,R25
 00D2 8883              std y+0,R24
 00D4 2227              clr R18
 00D6 0027              clr R16
 00D8 00D0              rcall _LCD_write_string
 00DA                   .dbline 91
 00DA           ;     LCD_write_string(0,1,"     ^ +/-ing...");

⌨️ 快捷键说明

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