📄 init.lis
字号:
.module init.c
.area text(rom, con, rel)
0000 .dbfile D:\new_sd\init.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 4
0000 ;
0000 ; #include "glo.h"
0000 ; void port_init(void)
0000 ; {
0000 .dbline 5
0000 ; PORTA = 0xFF; //PORTx 端口x数据寄存器
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 6
0004 ; DDRA = 0xFF; //DDRx 端口x方向寄存器 1为输出,0为输入
0004 8ABB out 0x1a,R24
0006 .dbline 8
0006 ;
0006 ; PORTB = 0xFF;
0006 88BB out 0x18,R24
0008 .dbline 9
0008 ; DDRB = 0x00;
0008 2224 clr R2
000A 27BA out 0x17,R2
000C .dbline 11
000C ;
000C ; PORTC = 0x00; //m103 output only
000C 25BA out 0x15,R2
000E .dbline 12
000E ; DDRC = 0xFF;
000E 84BB out 0x14,R24
0010 .dbline 14
0010 ;
0010 ; PORTD = 0x7F;
0010 8FE7 ldi R24,127
0012 82BB out 0x12,R24
0014 .dbline 15
0014 ; DDRD = 0x00;
0014 21BA out 0x11,R2
0016 .dbline 17
0016 ;
0016 ; DDRE = 0xFC;
0016 8CEF ldi R24,252
0018 82B9 out 0x2,R24
001A .dbline 18
001A ; PORTE = 0x0B;
001A 8BE0 ldi R24,11
001C 83B9 out 0x3,R24
001E .dbline 19
001E ; DDRE = 0x00;
001E 22B8 out 0x2,R2
0020 .dbline 21
0020 ;
0020 ; PORTF = 0xFF;
0020 8FEF ldi R24,255
0022 80936200 sts 98,R24
0026 .dbline 22
0026 ; DDRF = 0x00;
0026 20926100 sts 97,R2
002A .dbline 24
002A ;
002A ; PORTG = 0x00;
002A 20926500 sts 101,R2
002E .dbline 26
002E ;
002E ; DDRB |= 0XFF; //PB.4/PB.5/PB.6按键输出
002E 87B3 in R24,0x17
0030 8F6F ori R24,255
0032 87BB out 0x17,R24
0034 .dbline 28
0034 ;
0034 ; DDRF |= 0xF0; //CS1~CS4 输出
0034 80916100 lds R24,97
0038 806F ori R24,240
003A 80936100 sts 97,R24
003E .dbline 31
003E ; // DDRF &= 0xFE; //MIC输入
003E ;
003E ; DDRG |= 0x07; //ALE/RD/WE输出
003E 80916400 lds R24,100
0042 8760 ori R24,7
0044 80936400 sts 100,R24
0048 .dbline 32
0048 ; DDRG &= 0xE7; //DDRG.3,DDRG.4输入
0048 80916400 lds R24,100
004C 877E andi R24,231
004E 80936400 sts 100,R24
0052 .dbline 34
0052 ;
0052 ; DDRD |= 0x70; //LCD_RS/LCD_RST/LCD_CS输出
0052 81B3 in R24,0x11
0054 8067 ori R24,112
0056 81BB out 0x11,R24
0058 .dbline 35
0058 ; DDRD |= 0X01; //SCK I2C时钟线输出
0058 889A sbi 0x11,0
005A .dbline 36
005A ; DDRD |= 0X08; //OE 输出0
005A 8B9A sbi 0x11,3
005C .dbline 38
005C ;
005C ; DDRD |= 0x80; //A16输出0
005C 8F9A sbi 0x11,7
005E .dbline 39
005E ; PORTD&= 0x7F;
005E 82B3 in R24,0x12
0060 8F77 andi R24,127
0062 82BB out 0x12,R24
0064 .dbline -2
0064 L1:
0064 .dbline 0 ; func end
0064 0895 ret
0066 .dbend
0066 .dbfunc e spi_init _spi_init fV
.even
0066 _spi_init::
0066 .dbline -1
0066 .dbline 46
0066 ;
0066 ;
0066 ; }
0066 ;
0066 ;
0066 ; void spi_init(void)
0066 ; {
0066 .dbline 47
0066 ; DDRB |=0x07;
0066 87B3 in R24,0x17
0068 8760 ori R24,7
006A 87BB out 0x17,R24
006C .dbline 48
006C ; PORTB &=0xf8; //选择3548
006C 88B3 in R24,0x18
006E 887F andi R24,248
0070 88BB out 0x18,R24
0072 .dbline 49
0072 ; SPCR = 0x54; //setup SPI,SPI使能,主机模式,为1/4分频
0072 84E5 ldi R24,84
0074 8DB9 out 0xd,R24
0076 .dbline 50
0076 ; SPSR= 0x01; //setup SPI SPI选择加速,为1/2分频
0076 81E0 ldi R24,1
0078 8EB9 out 0xe,R24
007A .dbline -2
007A L2:
007A .dbline 0 ; func end
007A 0895 ret
007C .dbend
007C .dbfunc e uart0_init _uart0_init fV
.even
007C _uart0_init::
007C .dbline -1
007C .dbline 54
007C ; }
007C ;
007C ; void uart0_init(void)
007C ; {
007C .dbline 55
007C ; UCSR0B = 0x00; //disable while setting baud rate
007C 2224 clr R2
007E 2AB8 out 0xa,R2
0080 .dbline 56
0080 ; UCSR0A = 0x00; //发送等待缓冲器
0080 2BB8 out 0xb,R2
0082 .dbline 57
0082 ; UCSR0C = 0x06; //异步通信,8位数据
0082 86E0 ldi R24,6
0084 80939500 sts 149,R24
0088 .dbline 58
0088 ; UBRR0L = 0x5F; //0x08; //set baud rate lo 9600
0088 8FE5 ldi R24,95
008A 89B9 out 0x9,R24
008C .dbline 59
008C ; UBRR0H = 0x00; //set baud rate hi
008C 20929000 sts 144,R2
0090 .dbline 61
0090 ; // UCSR0B =0X00;
0090 ; UCSR0B = 0x98; //接收结束中断使能,接收使能,发送使能
0090 88E9 ldi R24,152
0092 8AB9 out 0xa,R24
0094 .dbline -2
0094 L3:
0094 .dbline 0 ; func end
0094 0895 ret
0096 .dbend
0096 .dbfunc e init_devices _init_devices fV
.even
0096 _init_devices::
0096 .dbline -1
0096 .dbline 71
0096 ; }
0096 ;
0096 ; //-------------------------------------------------------------------------------
0096 ; /*
0096 ; MCU初始化
0096 ; */
0096 ; //-------------------------------------------------------------------------------
0096 ; //call this routine to initialize all peripherals
0096 ; void init_devices(void)
0096 ; {
0096 .dbline 73
0096 ;
0096 ; CLI();
0096 F894 cli
0098 .dbline 75
0098 ;
0098 ; XDIV=0x00 ;
0098 2224 clr R2
009A 2CBE out 0x3c,R2
009C .dbline 78
009C ;
009C ; //timer1_init();
009C ; port_init();
009C B1DF xcall _port_init
009E .dbline 80
009E ; //
009E ; spi_init();
009E E3DF xcall _spi_init
00A0 .dbline 82
00A0 ; //
00A0 ; uart0_init();
00A0 EDDF xcall _uart0_init
00A2 .dbline 92
00A2 ; //
00A2 ; // adc_init();
00A2 ;
00A2 ; // int_isr_init();
00A2 ; //中断设置
00A2 ;
00A2 ; // Initial_3544();
00A2 ; //
00A2 ; // i2c_init();
00A2 ; LCD_init();
00A2 0E940000 xcall _LCD_init
00A6 .dbline 95
00A6 ; //MCUCR = 0x00;//电源管理控制寄存器
00A6 ;
00A6 ; TIMSK=0x04 ;
00A6 84E0 ldi R24,4
00A8 87BF out 0x37,R24
00AA .dbline 97
00AA ;
00AA ; ETIMSK=0x00 ;
00AA 2224 clr R2
00AC 20927D00 sts 125,R2
00B0 .dbline 99
00B0 ;
00B0 ; MCUCR=0xc0 ;
00B0 80EC ldi R24,192
00B2 85BF out 0x35,R24
00B4 .dbline 103
00B4 ;
00B4 ;
00B4 ; //1100 0000
00B4 ; XMCRA=0x0e ;
00B4 8EE0 ldi R24,14
00B6 80936D00 sts 109,R24
00BA .dbline 108
00BA ; // 读/写操作插入2个等待周期。输出新地址之前还要插入1个等待周期
00BA ; //- SRL2 SRL1 SRL0 SRW01 SRW00 SRW11 -
00BA ; //7------------------------0
00BA ;
00BA ; XMCRB=0 ;
00BA 20926C00 sts 108,R2
00BE .dbline 114
00BE ; //(1<<XMBK); // 使能外部扩展随机存储器总线保持功能
00BE ; //XMBK - - - - XMM2 XMM1 XMM0
00BE ; //XMBK 外部存储器总线保持功能使能
00BE ; //XMM2~0 外部存储器高地址屏蔽
00BE ;
00BE ; UCSR0B|=0x80 ;
00BE 579A sbi 0xa,7
00C0 .dbline 116
00C0 ; //开串口接收中断
00C0 ; SEI();
00C0 7894 sei
00C2 .dbline -2
00C2 L4:
00C2 .dbline 0 ; func end
00C2 0895 ret
00C4 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -