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

📄 init.lis

📁 433M收发,内有PCB(用99打开),源程序ICC打开,用了IC发送和三极管两种,接收用RX3310
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module init.c
                        .area data(ram, con, rel)
 0000           _ptr::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\abol\file\EMD\programme\init.c
 0003                   .dbsym e ptr _ptr A[3:3]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\abol\file\EMD\programme\init.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 22
 0000           ; /********************************************************/
 0000           ; /*                            ABOL                                                            */
 0000           ; /*                868MHZ数码管显示接收器                              */
 0000           ; /*     作者:于朝晖     2008-5-24 9:30:00                              */
 0000           ; /*     目标MCU:MEGA16  晶振:INT RC 8MHZ                               */
 0000           ; /* 文件名称:init.c  负责初始化MCU各内部资源及外部端口        */
 0000           ; /* 编译:ICC-AVR application builder                                  */
 0000           ; /* 当前版本: 1.0                                                                             */
 0000           ; /* 修改日期: 2008.5.24                                                                               */
 0000           ; /********************************************************/
 0000           ; 
 0000           ; #include <iom88v.h>    
 0000           ; #include <macros.h>
 0000           ; #include "eeprom.h"  
 0000           ; #include "delay.h"
 0000           ; #include "init.h"
 0000           ; #define bitset(var, bitno) ((var) |= (1 << (bitno)))
 0000           ; #define bitclr(var, bitno) ((var) &= ~(1 << (bitno)))
 0000           ; unsigned char ptr[3]={0,0,0};                                                                                                                                          
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 23
 0000           ;  PORTB = 0xff; //00010000     ff
 0000 8FEF              ldi R24,255
 0002 85B9              out 0x5,R24
 0004                   .dbline 24
 0004           ;  DDRB  = 0xff; //11111111     ff
 0004 84B9              out 0x4,R24
 0006                   .dbline 25
 0006           ;  PORTC = 0x0c; //00001100     0c
 0006 8CE0              ldi R24,12
 0008 88B9              out 0x8,R24
 000A                   .dbline 26
 000A           ;  DDRC  = 0xf7; //11111011     f7
 000A 87EF              ldi R24,247
 000C 87B9              out 0x7,R24
 000E                   .dbline 27
 000E           ;  PORTD = 0xee; //11101111     e7
 000E 8EEE              ldi R24,238
 0010 8BB9              out 0xb,R24
 0012                   .dbline 28
 0012           ;  DDRD  = 0x11; //00010001     19  
 0012 81E1              ldi R24,17
 0014 8AB9              out 0xa,R24
 0016                   .dbline -2
 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 32
 0018           ; }
 0018           ; 
 0018           ; void timer0_init(void)
 0018           ; {
 0018                   .dbline 33
 0018           ; TCNT0  =196;                                // T/C0开始值  
 0018 84EC              ldi R24,196
 001A 86BD              out 0x26,R24
 001C                   .dbline 34
 001C           ; TCCR0B=0x02;                            // 预分频 ck/8 ,计数允许 
 001C 82E0              ldi R24,2
 001E 85BD              out 0x25,R24
 0020                   .dbline 35
 0020           ; TIFR0=0;
 0020 2224              clr R2
 0022 25BA              out 0x15,R2
 0024                   .dbline 36
 0024           ; TIMSK0=1;
 0024 81E0              ldi R24,1
 0026 80936E00          sts 110,R24
 002A                   .dbline 37
 002A           ; TIFR0=1;
 002A 85BB              out 0x15,R24
 002C                   .dbline -2
 002C           L2:
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbend
 002E                   .dbfunc e timer2_init _timer2_init fV
                        .even
 002E           _timer2_init::
 002E                   .dbline -1
 002E                   .dbline 41
 002E           ; }
 002E           ; 
 002E           ; void timer2_init(void)
 002E           ; {
 002E                   .dbline 42
 002E           ; TIMSK2=0;
 002E 2224              clr R2
 0030 20927000          sts 112,R2
 0034                   .dbline 43
 0034           ; ASSR=32;                                              //外部时钟输入使能
 0034 80E2              ldi R24,32
 0036 8093B600          sts 182,R24
 003A                   .dbline 44
 003A           ; TCCR2A=0;                                             //普通模式
 003A 2092B000          sts 176,R2
 003E                   .dbline 45
 003E           ; TCCR2B=3;                                             //32分频
 003E 83E0              ldi R24,3
 0040 8093B100          sts 177,R24
 0044                   .dbline 46
 0044           ; TCNT2=0;                        // T/C2开始值 
 0044 2092B200          sts 178,R2
 0048                   .dbline 47
 0048           ; NOP(); 
 0048 0000              nop
 004A                   .dbline 49
 004A           ; 
 004A           ; NOP(); 
 004A 0000              nop
 004C                   .dbline 50
 004C           ; NOP(); 
 004C 0000              nop
 004E                   .dbline 51
 004E           ; NOP(); 
 004E 0000              nop
 0050                   .dbline 52
 0050           ; TIFR2=0;                                              //清标致位
 0050 27BA              out 0x17,R2
 0052                   .dbline 53
 0052           ; TIMSK2=0;                       // 预分频 32768/32 ,计数允许 
 0052 20927000          sts 112,R2
 0056                   .dbline 54
 0056           ; TIFR2=1;
 0056 81E0              ldi R24,1
 0058 87BB              out 0x17,R24
 005A                   .dbline -2
 005A           L3:
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbend
 005C                   .dbfunc e watchdog_init _watchdog_init fV
                        .even
 005C           _watchdog_init::
 005C                   .dbline -1
 005C                   .dbline 58
 005C           ; }
 005C           ; 
 005C           ; void watchdog_init(void)
 005C           ; {
 005C                   .dbline 59
 005C           ;  WDR(); //this prevents a timout on enabling
 005C A895              wdr
 005E                   .dbline 60
 005E           ;  WDTCSR=(1<<WDCE)|(1<<WDE);
 005E 88E1              ldi R24,24
 0060 80936000          sts 96,R24
 0064                   .dbline 61
 0064           ;  WDTCSR=(0<<WDE);
 0064 2224              clr R2
 0066 20926000          sts 96,R2
 006A                   .dbline -2
 006A           L4:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
 006C                   .dbfunc e init_devices _init_devices fV
                        .even
 006C           _init_devices::
 006C                   .dbline -1
 006C                   .dbline 67
 006C           ; }
 006C           ; 
 006C           ; 
 006C           ; //call this routine to initialize all peripherals
 006C           ; void init_devices(void)
 006C           ; {
 006C                   .dbline 69
 006C           ;  //stop errant interrupts until set up
 006C           ;  CLI(); //disable all interrupts
 006C F894              cli
 006E                   .dbline 70
 006E           ;  port_init();
 006E C8DF              rcall _port_init
 0070                   .dbline 71
 0070           ;  timer0_init();
 0070 D3DF              rcall _timer0_init
 0072                   .dbline 72
 0072           ;  timer2_init();
 0072 DDDF              rcall _timer2_init
 0074                   .dbline 75
 0074           ;  //watchdog_init();
 0074           ; 
 0074           ;  MCUCR = 0x00;
 0074 2224              clr R2
 0076 25BE              out 0x35,R2
 0078                   .dbline 76
 0078           ;  EIMSK = 0x00;
 0078 2DBA              out 0x1d,R2
 007A                   .dbline 77
 007A           ;  EICRA = 0x00; //extended ext ints
 007A 20926900          sts 105,R2
 007E                   .dbline 79
 007E           ;  
 007E           ;  TIMSK0 = 0x01; //timer 0 interrupt sources
 007E 81E0              ldi R24,1
 0080 80936E00          sts 110,R24
 0084                   .dbline 80
 0084           ;  TIMSK1 = 0x00; //timer 1 interrupt sources
 0084 20926F00          sts 111,R2
 0088                   .dbline 81
 0088           ;  TIMSK2 = 0x01; //timer 2 interrupt sources 
 0088 80937000          sts 112,R24
 008C                   .dbline 83
 008C           ; 
 008C           ;  PCMSK0 = 0x00; //pin change mask 0 
 008C 20926B00          sts 107,R2
 0090                   .dbline 84
 0090           ;  PCMSK1 = 0x00; //pin change mask 1 
 0090 20926C00          sts 108,R2
 0094                   .dbline 85
 0094           ;  PCMSK2 = 0x00; //pin change mask 2
 0094 20926D00          sts 109,R2
 0098                   .dbline 86
 0098           ;  PCICR = 0x00; //pin change enable 
 0098 20926800          sts 104,R2
 009C                   .dbline 88
 009C           ;  //PRR = 0xa2; //power controller
 009C           ;  SEI(); //re-enable interrupts
 009C 7894              sei
 009E                   .dbline 89
 009E           ;  ADCSRA=0X16;
 009E 86E1              ldi R24,22
 00A0 80937A00          sts 122,R24
 00A4                   .dbline 90
 00A4           ;  ADMUX=0X00;                          //关ADC
 00A4 20927C00          sts 124,R2
 00A8                   .dbline 91
 00A8           ;  ACSR=(1<<ACD);
 00A8 80E8              ldi R24,128
 00AA 80BF              out 0x30,R24
 00AC                   .dbline 92
 00AC           ;  SMCR=(0<<SM2)|(1<<SM1)|(0<<SM0);     //设定为掉电模式
 00AC 84E0              ldi R24,4
 00AE 83BF              out 0x33,R24
 00B0                   .dbline -2
 00B0           L5:
 00B0                   .dbline 0 ; func end
 00B0 0895              ret
 00B2                   .dbend
 00B2                   .dbfunc e ADconv _ADconv fV
                        .even
 00B2           _ADconv::
 00B2                   .dbline -1
 00B2                   .dbline 98
 00B2           ;  //all peripherals are now initialized
 00B2           ; }
 00B2           ; 
 00B2           ; /*            AD转换  */      
 00B2           ; void ADconv (void)
 00B2           ; {WDR();
 00B2                   .dbline 98
 00B2 A895              wdr
 00B4                   .dbline 99
 00B4           ;  CLI();
 00B4 F894              cli
 00B6                   .dbline 100
 00B6           ;  ADMUX=0XE0;               //1.1V基准,ADC0通道0B11100000
 00B6 80EE              ldi R24,224
 00B8 80937C00          sts 124,R24
 00BC                   .dbline 101
 00BC           ;  ADCSRA=0XC6;                    //使能和转换
 00BC 86EC              ldi R24,198
 00BE 80937A00          sts 122,R24
 00C2           L7:
 00C2                   .dbline 102
 00C2           L8:
 00C2                   .dbline 102
 00C2           ;  while(!(ADCSRA & (1<<ADIF)));//转换测试
 00C2 20907A00          lds R2,122
 00C6 24FE              sbrs R2,4
 00C8 FCCF              rjmp L7
 00CA                   .dbline 103
 00CA           ;  ADcon=ADCL;
 00CA 20907800          lds R2,120
 00CE 20920000          sts _ADcon,R2
 00D2                   .dbline 104
 00D2           ;  ADcon=ADCH;
 00D2 20907900          lds R2,121

⌨️ 快捷键说明

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