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

📄 system_init.lis

📁 这是一个电池放电器
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module system_init.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\system_init.c
 0000                   .dbfunc e init_devices _init_devices fV
                        .even
 0000           _init_devices::
 0000 2297              sbiw R28,2
 0002                   .dbline -1
 0002                   .dbline 8
 0002           ; #include <iom8v.h> //和单片机类型相对应的头文件,选择Atmega8做实验;
 0002           ; #include <macros.h>
 0002           ; #include "discharge.h"
 0002           ; #include <stdio.h>
 0002           ; #include "LCD_1602.h"
 0002           ; 
 0002           ; void init_devices(void)
 0002           ; {
 0002                   .dbline 9
 0002           ;  CLI(); //禁止所有中断
 0002 F894              cli
 0004                   .dbline 10
 0004           ;  MCUCR  = 0x00;
 0004 2224              clr R2
 0006 25BE              out 0x35,R2
 0008                   .dbline 11
 0008           ;  MCUCSR = 0x80;//禁止JTAG
 0008 80E8              ldi R24,128
 000A 84BF              out 0x34,R24
 000C                   .dbline 12
 000C           ;  GICR   = 0x00;
 000C 2BBE              out 0x3b,R2
 000E                   .dbline 13
 000E           ;  port_init(); 
 000E 13D0              rcall _port_init
 0010                   .dbline 14
 0010           ;  usart_init();
 0010 1BD0              rcall _usart_init
 0012                   .dbline 15
 0012           ;  timer1_init(10,10,4000);//PWM上限 4000
 0012 80EA              ldi R24,4000
 0014 9FE0              ldi R25,15
 0016 9983              std y+1,R25
 0018 8883              std y+0,R24
 001A 2AE0              ldi R18,10
 001C 30E0              ldi R19,0
 001E 0AE0              ldi R16,10
 0020 10E0              ldi R17,0
 0022 2AD0              rcall _timer1_init
 0024                   .dbline 16
 0024           ;  timer2_init();
 0024 1CD0              rcall _timer2_init
 0026                   .dbline 17
 0026           ;  AD_init(); 
 0026 3DD0              rcall _AD_init
 0028                   .dbline 18
 0028           ;  LCD_init();
 0028 00D0              rcall _LCD_init
 002A                   .dbline 19
 002A           ;  delay_nms(10);
 002A 0AE0              ldi R16,10
 002C 10E0              ldi R17,0
 002E 60D0              rcall _delay_nms
 0030                   .dbline 20
 0030           ;  SEI();//开全局中断
 0030 7894              sei
 0032                   .dbline -2
 0032           L1:
 0032 2296              adiw R28,2
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbend
 0036                   .dbfunc e port_init _port_init fV
                        .even
 0036           _port_init::
 0036                   .dbline -1
 0036                   .dbline 25
 0036           ; }
 0036           ; 
 0036           ; //端口初始化
 0036           ; void port_init(void)
 0036           ; {      
 0036                   .dbline 26
 0036           ;    DDRB&=~(1<<0)|(1<<3)|(1<<4)|(1<<5);//KEY 输入
 0036 B898              cbi 0x17,0
 0038                   .dbline 27
 0038           ;    PORTB|=(1<<0)|(1<<3)|(1<<4)|(1<<5);//KEY 开上拉
 0038 88B3              in R24,0x18
 003A 8963              ori R24,57
 003C 88BB              out 0x18,R24
 003E                   .dbline 28
 003E           ;    DDRC|=(1<<4)|(1<<5);//LED_G  LED_R  
 003E 84B3              in R24,0x14
 0040 8063              ori R24,48
 0042 84BB              out 0x14,R24
 0044                   .dbline 29
 0044           ;    DDRB&=~(1<<1)|(1<<2);//PWMA PWMB 设为输入,即关闭
 0044 B998              cbi 0x17,1
 0046                   .dbline -2
 0046           L2:
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbend
 0048                   .dbfunc e usart_init _usart_init fV
                        .even
 0048           _usart_init::
 0048                   .dbline -1
 0048                   .dbline 34
 0048           ; }
 0048           ; 
 0048           ; //串口通信初始化//38400kbps 
 0048           ; void usart_init(void)
 0048           ; {
 0048                   .dbline 35
 0048           ;  UCSRB = 0x00;//禁止中断
 0048 2224              clr R2
 004A 2AB8              out 0xa,R2
 004C                   .dbline 36
 004C           ;  UCSRA = 0x00;
 004C 2BB8              out 0xb,R2
 004E                   .dbline 37
 004E           ;  UCSRC = BIT(URSEL) | 0x06;
 004E 86E8              ldi R24,134
 0050 80BD              out 0x20,R24
 0052                   .dbline 38
 0052           ;  UBRRL = 0x0C;
 0052 8CE0              ldi R24,12
 0054 89B9              out 0x9,R24
 0056                   .dbline 39
 0056           ;  UBRRH = 0x00;
 0056 20BC              out 0x20,R2
 0058                   .dbline 40
 0058           ;  UCSRB = 0x18;
 0058 88E1              ldi R24,24
 005A 8AB9              out 0xa,R24
 005C                   .dbline -2
 005C           L3:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbend
 005E                   .dbfunc e timer2_init _timer2_init fV
                        .even
 005E           _timer2_init::
 005E                   .dbline -1
 005E                   .dbline 45
 005E           ; }
 005E           ; 
 005E           ; //定时器T2初始化
 005E           ; void timer2_init(void)
 005E           ; {
 005E                   .dbline 46
 005E           ;  TCCR2  = 0x00;//停止定时器
 005E 2224              clr R2
 0060 25BC              out 0x25,R2
 0062                   .dbline 47
 0062           ;  ASSR   = 0x00;//异步时钟模式
 0062 22BC              out 0x22,R2
 0064                   .dbline 48
 0064           ;  TCNT2  = 0x06;//初始值
 0064 86E0              ldi R24,6
 0066 84BD              out 0x24,R24
 0068                   .dbline 49
 0068           ;  OCR2   = 0x05;//匹配值
 0068 85E0              ldi R24,5
 006A 83BD              out 0x23,R24
 006C                   .dbline 50
 006C           ;  TIMSK |= 0x40;//中断允许
 006C 89B7              in R24,0x39
 006E 8064              ori R24,64
 0070 89BF              out 0x39,R24
 0072                   .dbline 51
 0072           ;  TCCR2  = 0x06;//启动定时器
 0072 86E0              ldi R24,6
 0074 85BD              out 0x25,R24
 0076                   .dbline -2
 0076           L4:
 0076                   .dbline 0 ; func end
 0076 0895              ret
 0078                   .dbend
 0078                   .dbfunc e timer1_init _timer1_init fV
 0078           ;            top -> y+0
 0078           ;              b -> R18,R19
 0078           ;              a -> R16,R17
                        .even
 0078           _timer1_init::
 0078                   .dbline -1
 0078                   .dbline 56
 0078           ; }
 0078           ; 
 0078           ; //定时T1初始化
 0078           ; void timer1_init(unsigned int a,unsigned int b,unsigned int top)
 0078           ; {
 0078                   .dbline 57
 0078           ;  TCCR1B = 0x00;//停止定时器
 0078 2224              clr R2
 007A 2EBC              out 0x2e,R2
 007C                   .dbline 58
 007C           ;  TIMSK |= 0x00;//中断允许
 007C 29B6              in R2,0x39
 007E 29BE              out 0x39,R2
 0080                   .dbline 59
 0080           ;  TCNT1H = 0x00;
 0080 2224              clr R2
 0082 2DBC              out 0x2d,R2
 0084                   .dbline 60
 0084           ;  TCNT1L = 0x00;//初始值
 0084 2CBC              out 0x2c,R2
 0086                   .dbline 61
 0086           ;  OCR1A=a;//匹配A值
 0086 1BBD              out 0x2b,R17
 0088 0ABD              out 0x2a,R16
 008A                   .dbline 62
 008A           ;  OCR1B=b;//匹配B值
 008A 39BD              out 0x29,R19
 008C 28BD              out 0x28,R18
 008E                   .dbline 63
 008E           ;  ICR1=top-1;//输入捕捉匹配值
 008E 8881              ldd R24,y+0
 0090 9981              ldd R25,y+1
 0092 0197              sbiw R24,1

⌨️ 快捷键说明

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