📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\AVR\Mega32_160X64Lcd\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 10
0000 ; //ICC-AVR application builder : 2006-12-29 13:02:24
0000 ; // Target : M32
0000 ; // Crystal: 7.3728Mhz
0000 ;
0000 ; #include "define.h"
0000 ;
0000 ; extern void Init_Lcd(void) ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 11
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 12
0004 ; DDRA = 0xFF;
0004 8FEF ldi R24,255
0006 8ABB out 0x1a,R24
0008 .dbline 13
0008 ; PORTB = 0x07;
0008 87E0 ldi R24,7
000A 88BB out 0x18,R24
000C .dbline 14
000C ; DDRB = 0xF8;
000C 88EF ldi R24,248
000E 87BB out 0x17,R24
0010 .dbline 15
0010 ; PORTC = 0xFF;
0010 8FEF ldi R24,255
0012 85BB out 0x15,R24
0014 .dbline 16
0014 ; DDRC = 0x00;
0014 24BA out 0x14,R2
0016 .dbline 17
0016 ; PORTD = 0x7F;
0016 8FE7 ldi R24,127
0018 82BB out 0x12,R24
001A .dbline 18
001A ; DDRD = 0x80;
001A 80E8 ldi R24,128
001C 81BB out 0x11,R24
001E .dbline -2
001E .dbline 19
001E ; }
001E L1:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e watchdog_init _watchdog_init fV
.even
0020 _watchdog_init::
0020 .dbline -1
0020 .dbline 24
0020 ;
0020 ; //Watchdog initialisation
0020 ; // prescale: 2048K cycles
0020 ; void watchdog_init(void)
0020 ; {
0020 .dbline 25
0020 ; WDR(); //this prevents a timout on enabling
0020 A895 wdr
0022 .dbline 26
0022 ; WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
0022 8FE0 ldi R24,15
0024 81BD out 0x21,R24
0026 .dbline -2
0026 .dbline 27
0026 ; }
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e timer0_init _timer0_init fV
.even
0028 _timer0_init::
0028 .dbline -1
0028 .dbline 34
0028 ;
0028 ; //TIMER0 initialisation - prescale:1024
0028 ; // WGM: Normal
0028 ; // desired value: 100Hz
0028 ; // actual value: 101.408Hz (1.4%)
0028 ; void timer0_init(void)
0028 ; {
0028 .dbline 35
0028 ; TCCR0 = 0x00; //stop
0028 2224 clr R2
002A 23BE out 0x33,R2
002C .dbline 36
002C ; TCNT0 = 0xB9; //set count
002C 89EB ldi R24,185
002E 82BF out 0x32,R24
0030 .dbline 37
0030 ; OCR0 = 0x47; //set compare
0030 87E4 ldi R24,71
0032 8CBF out 0x3c,R24
0034 .dbline 38
0034 ; TCCR0 = 0x05; //start timer
0034 85E0 ldi R24,5
0036 83BF out 0x33,R24
0038 .dbline -2
0038 .dbline 39
0038 ; }
0038 L3:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
.area vector(rom, abs)
.org 44
002C 0C941D00 jmp _timer0_ovf_isr
.area text(rom, con, rel)
003A .dbfile D:\AVR\Mega32_160X64Lcd\main.c
003A .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
003A _timer0_ovf_isr::
003A 8A93 st -y,R24
003C 8FB7 in R24,0x3f
003E 8A93 st -y,R24
0040 .dbline -1
0040 .dbline 43
0040 ;
0040 ; #pragma interrupt_handler timer0_ovf_isr:12
0040 ; void timer0_ovf_isr(void)
0040 ; {
0040 .dbline 44
0040 ; TCNT0 = 0xB9; //reload counter value
0040 89EB ldi R24,185
0042 82BF out 0x32,R24
0044 .dbline -2
0044 .dbline 45
0044 ; }
0044 L4:
0044 8991 ld R24,y+
0046 8FBF out 0x3f,R24
0048 8991 ld R24,y+
004A .dbline 0 ; func end
004A 1895 reti
004C .dbend
004C .dbfunc e uart0_init _uart0_init fV
.even
004C _uart0_init::
004C .dbline -1
004C .dbline 53
004C ;
004C ; //UART0 initialisation
004C ; // desired baud rate: 38400
004C ; // actual: baud rate:38400 (0.0%)
004C ; // char size: 8 bit
004C ; // parity: Disabled
004C ; void uart0_init(void)
004C ; {
004C .dbline 54
004C ; UCSRB = 0x00; //disable while setting baud rate
004C 2224 clr R2
004E 2AB8 out 0xa,R2
0050 .dbline 55
0050 ; UCSRA = 0x00;
0050 2BB8 out 0xb,R2
0052 .dbline 56
0052 ; UCSRC = 0x06;
0052 86E0 ldi R24,6
0054 80BD out 0x20,R24
0056 .dbline 57
0056 ; UBRRL = 0x0B; //set baud rate lo
0056 8BE0 ldi R24,11
0058 89B9 out 0x9,R24
005A .dbline 58
005A ; UBRRH = 0x00; //set baud rate hi
005A 20BC out 0x20,R2
005C .dbline 59
005C ; UCSRB = 0xB0;
005C 80EB ldi R24,176
005E 8AB9 out 0xa,R24
0060 .dbline -2
0060 .dbline 60
0060 ; }
0060 L5:
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbend
.area vector(rom, abs)
.org 52
0034 0C943100 jmp _uart0_rx_isr
.area text(rom, con, rel)
0062 .dbfile D:\AVR\Mega32_160X64Lcd\main.c
0062 .dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
0062 _uart0_rx_isr::
0062 .dbline -1
0062 .dbline 64
0062 ;
0062 ; #pragma interrupt_handler uart0_rx_isr:14
0062 ; void uart0_rx_isr(void)
0062 ; {
0062 .dbline -2
0062 .dbline 66
0062 ; //uart has received a character in UDR
0062 ; }
0062 L6:
0062 .dbline 0 ; func end
0062 1895 reti
0064 .dbend
.area vector(rom, abs)
.org 56
0038 0C943200 jmp _uart0_udre_isr
.area text(rom, con, rel)
0064 .dbfile D:\AVR\Mega32_160X64Lcd\main.c
0064 .dbfunc e uart0_udre_isr _uart0_udre_isr fV
.even
0064 _uart0_udre_isr::
0064 .dbline -1
0064 .dbline 69
0064 ; #pragma interrupt_handler uart0_udre_isr:15
0064 ; void uart0_udre_isr(void)
0064 ; {
0064 .dbline -2
0064 .dbline 71
0064 ; //character transferred to shift register so UDR is now empty
0064 ; }
0064 L7:
0064 .dbline 0 ; func end
0064 1895 reti
0066 .dbend
.area vector(rom, abs)
.org 8
0008 0C943300 jmp _int1_isr
.area text(rom, con, rel)
0066 .dbfile D:\AVR\Mega32_160X64Lcd\main.c
0066 .dbfunc e int1_isr _int1_isr fV
.even
0066 _int1_isr::
0066 .dbline -1
0066 .dbline 75
0066 ;
0066 ; #pragma interrupt_handler int1_isr:3
0066 ; void int1_isr(void)
0066 ; {
0066 .dbline -2
0066 .dbline 77
0066 ; //external interupt on INT1
0066 ; }
0066 L8:
0066 .dbline 0 ; func end
0066 1895 reti
0068 .dbend
0068 .dbfunc e init_devices _init_devices fV
.even
0068 _init_devices::
0068 .dbline -1
0068 .dbline 81
0068 ;
0068 ; //call this routine to initialise all peripherals
0068 ; void init_devices(void)
0068 ; {
0068 .dbline 83
0068 ; //stop errant interrupts until set up
0068 ; CLI(); //disable all interrupts
0068 F894 cli
006A .dbline 84
006A ; port_init();
006A CADF xcall _port_init
006C .dbline 85
006C ; watchdog_init();
006C D9DF xcall _watchdog_init
006E .dbline 86
006E ; timer0_init();
006E DCDF xcall _timer0_init
0070 .dbline 87
0070 ; uart0_init();
0070 EDDF xcall _uart0_init
0072 .dbline 89
0072 ;
0072 ; MCUCR = 0x08;
0072 88E0 ldi R24,8
0074 85BF out 0x35,R24
0076 .dbline 90
0076 ; GICR = 0x80;
0076 80E8 ldi R24,128
0078 8BBF out 0x3b,R24
007A .dbline 91
007A ; TIMSK = 0x01; //timer interrupt sources
007A 81E0 ldi R24,1
007C 89BF out 0x39,R24
007E .dbline 92
007E ; SEI(); //re-enable interrupts
007E 7894 sei
0080 .dbline -2
0080 .dbline 94
0080 ; //all peripherals are now initialised
0080 ; }
0080 L9:
0080 .dbline 0 ; func end
0080 0895 ret
0082 .dbend
0082 .dbfunc e main _main fV
.even
0082 _main::
0082 .dbline -1
0082 .dbline 97
0082 ;
0082 ; void main(void)
0082 ; {
0082 .dbline 98
0082 ; init_devices();
0082 F2DF xcall _init_devices
0084 .dbline 99
0084 ; Init_Lcd();
0084 .dbline -2
0084 .dbline 100
0084 ; }
0084 L10:
0084 .dbline 0 ; func end
0084 0C940000 xjmp _Init_Lcd
0088 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -