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

📄 main.lis

📁 avr32 驱动320X64 LCD 屏代码。 对液晶驱动或学习avr的朋友有帮助。
💻 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 + -