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

📄 main.lis

📁 基于8515的lcd显示控制程序
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\work\avr\icc\cpld\stklcd\main.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 32
 0000           ; //
 0000           ; //    File Name:              main.c
 0000           ; //
 0000           ; //    Title:                  Application entry point / driver
 0000           ; //
 0000           ; //    Description:    Main driver for LCD demo.
 0000           ; //
 0000           ; //    Creation Date:  2/2/00 11:49:37 PM
 0000           ; //
 0000           ; //    By:                             A.C. Verbeck
 0000           ; //
 0000           ; //    This file is subject to the terms and conditions of the GNU General Public
 0000           ; //    License.  See the file COPYING in the main directory of this archive
 0000           ; //    for more details.
 0000           ; //
 0000           ; 
 0000           ; #include <io8515v.h>
 0000           ; #include <stdio.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #include "BaseType.h"
 0000           ; #include "lcd.h"
 0000           ; #include "t0.h"
 0000           ; 
 0000           ; static void Timer_Test(void);
 0000           ; static void LCD_Test1(void);
 0000           ; static void LCD_Test2(void);
 0000           ; 
 0000           ; static Char pbuff[32];
 0000           ; 
 0000           ; void main(void)
 0000           ; {   
 0000                   .dbline 33
 0000           ;       SEI();                                                  //      Turn on the interrupts
 0000 7894              sei
 0002                   .dbline 34
 0002           ;       MCUCR = 0xc0;                                   //      Enable External RAM
 0002 80EC              ldi R24,192
 0004 85BF              out 0x35,R24
 0006                   .dbline 36
 0006           ; 
 0006           ;       LCD_Test1();                                    //      Do LCD test #2
 0006                   .dbline -2
 0006                   .dbline 37
 0006           ; }
 0006           L1:
 0006                   .dbline 0 ; func end
 0006 11C0              rjmp _LCD_Test1
 0008                   .dbend
 0008                   .dbfunc s Timer_Test _Timer_Test fV
 0008           ;         pb_val -> R20
                        .even
 0008           _Timer_Test:
 0008 00D0              rcall push_gset1
 000A                   .dbline -1
 000A                   .dbline 40
 000A           ; 
 000A           ; static void Timer_Test(void)
 000A           ; {
 000A                   .dbline 43
 000A           ;       UInt8   pb_val;
 000A           ; 
 000A           ;       DDRB = 0xff;
 000A 8FEF              ldi R24,255
 000C 87BB              out 0x17,R24
 000E                   .dbline 44
 000E           ;       PORTB = 0x00;
 000E 2224              clr R2
 0010 28BA              out 0x18,R2
 0012                   .dbline 45
 0012           ;       T0_init();
 0012 00D0              rcall _T0_init
 0014                   .dbline 46
 0014           ;       pb_val = 0;
 0014 4427              clr R20
 0016                   .dbline 47
 0016           L3:
 0016                   .dbline 47
 0016                   .dbline 48
 0016 0AE0              ldi R16,10
 0018 10E0              ldi R17,0
 001A 00D0              rcall _T0_sleep
 001C                   .dbline 49
 001C 4395              inc R20
 001E                   .dbline 50
 001E 242E              mov R2,R20
 0020 2094              com R2
 0022 28BA              out 0x18,R2
 0024                   .dbline 51
 0024                   .dbline 47
 0024                   .dbline 47
 0024 F8CF              rjmp L3
 0026           X0:
 0026                   .dbline -2
 0026           L2:
 0026 00D0              rcall pop_gset1
 0028                   .dbline 0 ; func end
 0028 0895              ret
 002A                   .dbsym r pb_val 20 c
 002A                   .dbend
 002A                   .dbfunc s LCD_Test1 _LCD_Test1 fV
 002A           ;              i -> R20,R21
                        .even
 002A           _LCD_Test1:
 002A 00D0              rcall push_gset1
 002C 2297              sbiw R28,2
 002E                   .dbline -1
 002E                   .dbline 55
 002E           ;       TASK_LOOP {
 002E           ;               T0_sleep(10);
 002E           ;               ++pb_val;
 002E           ;               PORTB=~pb_val;
 002E           ;       }
 002E           ; }
 002E           ; 
 002E           ; static void LCD_Test1(void)
 002E           ; {
 002E                   .dbline 58
 002E           ;       UInt16  i;
 002E           ; 
 002E           ;       T0_init();
 002E 00D0              rcall _T0_init
 0030                   .dbline 60
 0030           ; 
 0030           ;       LCD_reset();
 0030 00D0              rcall _LCD_reset
 0032                   .dbline 61
 0032           ;       LCD_init();
 0032 00D0              rcall _LCD_init
 0034                   .dbline 62
 0034           ;       LCD_command(LCD_HOME);
 0034 02E0              ldi R16,2
 0036 00D0              rcall _LCD_command
 0038                   .dbline 63
 0038           ;       sprintf(pbuff, "Test display");
 0038 20E0              ldi R18,<L8
 003A 30E0              ldi R19,>L8
 003C 00E0              ldi R16,<_pbuff
 003E 10E0              ldi R17,>_pbuff
 0040 00D0              rcall _sprintf
 0042                   .dbline 64
 0042           ;       LCD_puts(pbuff);        
 0042 00E0              ldi R16,<_pbuff
 0044 10E0              ldi R17,>_pbuff
 0046 00D0              rcall _LCD_puts
 0048                   .dbline 65
 0048           ;       LCD_command(LCD_NEW_LINE);
 0048 00EC              ldi R16,192
 004A 00D0              rcall _LCD_command
 004C                   .dbline 67
 004C           ; 
 004C           ;       i=0;
 004C 4427              clr R20
 004E 5527              clr R21
 0050                   .dbline 68
 0050           L9:
 0050                   .dbline 68
 0050                   .dbline 69
 0050 04E6              ldi R16,100
 0052 10E0              ldi R17,0
 0054 00D0              rcall _T0_sleep
 0056                   .dbline 70
 0056 4F5F              subi R20,255  ; offset = 1
 0058 5F4F              sbci R21,255
 005A                   .dbline 71
 005A 4883              std y+0,R20
 005C 5983              std y+1,R21
 005E 20E0              ldi R18,<L13
 0060 30E0              ldi R19,>L13
 0062 00E0              ldi R16,<_pbuff
 0064 10E0              ldi R17,>_pbuff
 0066 00D0              rcall _sprintf
 0068                   .dbline 72
 0068 00E0              ldi R16,<_pbuff
 006A 10E0              ldi R17,>_pbuff
 006C 00D0              rcall _LCD_puts
 006E                   .dbline 73
 006E 00EC              ldi R16,192
 0070 00D0              rcall _LCD_command
 0072                   .dbline 74
 0072                   .dbline 68
 0072                   .dbline 68
 0072 EECF              rjmp L9
 0074           X1:
 0074                   .dbline -2
 0074           L7:
 0074 2296              adiw R28,2
 0076 00D0              rcall pop_gset1
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbsym r i 20 s
 007A                   .dbend
 007A                   .dbfunc s LCD_Test2 _LCD_Test2 fV
 007A           ;              i -> R20,R21
                        .even
 007A           _LCD_Test2:
 007A 00D0              rcall push_gset1
 007C                   .dbline -1
 007C                   .dbline 79
 007C           ;       TASK_LOOP {
 007C           ;               T0_sleep(100);
 007C           ;               ++i;
 007C           ;               sprintf(pbuff, "Value = %d",i);
 007C           ;               LCD_puts(pbuff);
 007C           ;               LCD_command(LCD_NEW_LINE);
 007C           ;       }
 007C           ; }
 007C           ;               
 007C           ;       
 007C           ; static void LCD_Test2(void)
 007C           ; {
 007C                   .dbline 82
 007C           ;       UInt16  i;
 007C           ; 
 007C           ;       T0_init();
 007C 00D0              rcall _T0_init
 007E                   .dbline 84
 007E           ; 
 007E           ;       LCD_reset();
 007E 00D0              rcall _LCD_reset
 0080                   .dbline 85
 0080           ;       LCD_init();
 0080 00D0              rcall _LCD_init
 0082                   .dbline 86
 0082           ;       LCD_command(LCD_HOME);
 0082 02E0              ldi R16,2
 0084 00D0              rcall _LCD_command
 0086                   .dbline 88
 0086           L15:
 0086                   .dbline 88
 0086           ; 
 0086           ;       TASK_LOOP {
 0086                   .dbline 89
 0086 40E2              ldi R20,32
 0088 50E0              ldi R21,0
 008A 1AC0              rjmp L22
 008C           L19:
 008C                   .dbline 89
 008C           ;               for (i=0x20; i<0x80; i++) {
 008C                   .dbline 90
 008C           ;                       LCD_putc(i);
 008C 042F              mov R16,R20
 008E 00D0              rcall _LCD_putc
 0090                   .dbline 91
 0090           ;                       T0_sleep(500);
 0090 04EF              ldi R16,500
 0092 11E0              ldi R17,1
 0094 00D0              rcall _T0_sleep
 0096                   .dbline 92
 0096           ;                       if ((i%16) == 0) {
 0096 842F              mov R24,R20
 0098 952F              mov R25,R21
 009A 8F70              andi R24,15
 009C 9070              andi R25,0
 009E 8030              cpi R24,0
 00A0 8907              cpc R24,R25
 00A2 61F4              brne L23
 00A4           X2:
 00A4                   .dbline 92
 00A4                   .dbline 93
 00A4           ;                               if ((i%32) == 0)
 00A4 842F              mov R24,R20
 00A6 952F              mov R25,R21
 00A8 8F71              andi R24,31
 00AA 9070              andi R25,0
 00AC 8030              cpi R24,0
 00AE 8907              cpc R24,R25
 00B0 19F4              brne L25
 00B2           X3:
 00B2                   .dbline 94
 00B2           ;                                       LCD_command(LCD_HOME);
 00B2 02E0              ldi R16,2
 00B4 00D0              rcall _LCD_command
 00B6 02C0              rjmp L26
 00B8           L25:
 00B8                   .dbline 96
 00B8           ;                               else
 00B8           ;                                       LCD_command(LCD_NEW_LINE);
 00B8 00EC              ldi R16,192
 00BA 00D0              rcall _LCD_command
 00BC           L26:
 00BC                   .dbline 97
 00BC           ;                       }
 00BC           L23:
 00BC                   .dbline 98
 00BC           L20:
 00BC                   .dbline 89
 00BC 4F5F              subi R20,255  ; offset = 1
 00BE 5F4F              sbci R21,255
 00C0           L22:
 00C0                   .dbline 89
 00C0 4038              cpi R20,128
 00C2 E0E0              ldi R30,0
 00C4 5E07              cpc R21,R30
 00C6 10F3              brlo L19
 00C8                   .dbline 99
 00C8                   .dbline 88
 00C8                   .dbline 88
 00C8 DECF              rjmp L15
 00CA           X4:
 00CA                   .dbline -2
 00CA           L14:
 00CA 00D0              rcall pop_gset1
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbsym r i 20 s
 00CE                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\work\avr\icc\cpld\stklcd\main.c
 0000           _pbuff:
 0000                   .blkb 32
 0020                   .dbsym s pbuff _pbuff A[32:32]c
                        .area data(ram, con, rel)
 0000                   .dbfile E:\work\avr\icc\cpld\stklcd\main.c
 0000           L13:
 0000                   .blkb 11
                        .area idata
 0000 56616C7565203D20256400    .byte 'V,'a,'l,'u,'e,32,61,32,37,'d,0
                        .area data(ram, con, rel)
 000B                   .dbfile E:\work\avr\icc\cpld\stklcd\main.c
 000B           L8:
 000B                   .blkb 13
                        .area idata
 000B 5465737420646973706C617900        .byte 'T,'e,'s,'t,32,'d,'i,'s,'p,'l,'a,'y,0
                        .area data(ram, con, rel)
 0018                   .dbfile E:\work\avr\icc\cpld\stklcd\main.c

⌨️ 快捷键说明

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