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

📄 tester.lst

📁 how to use character display (2 lines)
💻 LST
字号:
A51 MACRO ASSEMBLER      TESTER                                                              DATE  04/02/02   PAGE     1


MS-DOS MACRO ASSEMBLER A51 V4.4 
OBJECT MODULE PLACED IN TESTER.OBJ
ASSEMBLER INVOKED BY:  A51 TESTER.A51

LOC  OBJ            LINE     SOURCE

                       1     ;Zdrojak pro testovani displeju Elatec
                       2     ;Napsano pro ATMEL 89C2051
                       3     ;pripojeny krystal 8MHz
                       4     
  00B5                 5     RS      equ     p3.5    ;pin command / data select
  00B4                 6     RW      EQU     P3.4    ;data read/write
  00B7                 7     ENB     equ     p3.7    ;enable signal
                       8     
  0080                 9     RAD1    EQU 80h         ;1 radek displeje
  00C0                10     RAD2    EQU 0C0h        ;2 radek displeje
  0090                11     RAD3    EQU 90h         ;3 radek displeje
  00D0                12     RAD4    EQU 0d0h        ;4 radek displeje
                      13     
0000                  14                             org     0
0000 02004C           15                             jmp     start
                      16     
                      17             
0003                  18     lcdbusy:                                        ;test LCD na pripravenost
0003 C0E0             19                             push acc                ;uschova akumulator
0005 D2B4             20     lcd_b:                  setb rw                 ;R/W - '1'
0007 C2B5             21                             clr rs                  ;RS - '0'
0009 D2B7             22                             setb enb                ;E - '1' enable po dobu min 220ns 
000B 8590E0           23                             mov acc,p1              ;do akumulatoru data z displeje
000E C2B7             24                             clr enb                 ;E - '0'
0010 20E7F2           25                             jb acc.7,lcd_b          ;test BF jestli 1 skok na nove testovani
0013 D0E0             26                             pop acc                 ;obnov akumulator
0015 22               27                             ret
                      28     ;----------------------------------------------------------------
0016                  29     wait_power:                                     ; ceka 15ms po zapnuti napajeni
0016 7828             30                             mov r0,#28h             ;40x255=10200 * 1.5us = 15.3ms
0018 7900             31     wait_next:              mov r1,#0               ;r1=0
001A D9FE             32                             djnz r1,$
001C D8FA             33                             djnz r0,wait_next       ;cyklus cekani 15ms
001E 22               34                             ret                     
                      35     ;----------------------------------------------------------------
001F                  36     wait_init:                                      ; ceka 4.2ms po inicializaci
001F 780B             37                             mov r0,#0bh             ;11x255=2805 * 1.5us = 4.2ms
0021 7900             38     wait_next1:             mov r1,#0               ;r1=0
0023 D9FE             39                             djnz r1,$
0025 D8FA             40                             djnz r0,wait_next1      ;cyklus cekani 4.2ms
0027 22               41                             ret                     
                      42     
                      43     ;----------------------------------------------------------------
0028                  44     lcd_drive:                                      ;posle ridici kod na displej
0028 1103             45                             call lcdbusy            ;test BF busy flag
002A C2B4             46                             clr rw                  ;R/W - '0'
002C C2B5             47                             clr rs                  ;RS - '0'
002E F590             48                             mov p1,a                ;ridici znak na port P1
0030 D2B7             49                             setb enb                ;E - '1' enable po dobu min 220ns 
0032 C2B7             50                             clr enb                 ;E - '0' 
0034 22               51                             ret
                      52     ;-----------------------------------------------------------------
0035                  53     lcd_disp:                                       ;zobrazi znak na displej
0035 1103             54                             call lcdbusy            ;test BF busy flag
A51 MACRO ASSEMBLER      TESTER                                                              DATE  04/02/02   PAGE     2


LOC  OBJ            LINE     SOURCE

0037 C2B4             55                             clr rw                  ;R/W - '0'
0039 D2B5             56                             setb rs                 ;RS - '1'
003B F590             57                             mov p1,a                ;zobrazovany znak na port P1
003D D2B7             58                             setb enb                ;E - '1' enable po dobu min 220ns 
003F C2B7             59                             clr enb                 ;E - '0' 
0041 22               60                             ret
                      61     ;----------------------------------------------------------------
0042                  62     lcd_string:
0042 E4               63                             clr a                   ;nuluje A
0043 93               64                             movc a,@a+DPTR          ;do A znak na adrese DPTR
0044 6005             65                             jz exit                 ;ukonceni kdyz je v A 0h
0046 1135             66                             acall lcd_disp          ;zobraz znak v A
0048 A3               67                             inc DPTR                ;zvetsi ukazatel DPTR o 1
0049 80F7             68                             sjmp lcd_string         ;dalsi znak
004B 22               69     exit:                   ret
                      70     
                      71     ;---------------------------------------------------------
004C                  72     start:                                          ;zacatek programu
004C 1116             73                             call wait_power         ;cekani 15ms po zapnuti napajeni
004E 7438             74                             mov     a,#38h          ;8 bits, 2 rows, 5 x 7 dots
0050 1128             75                             call lcd_drive          ;posle ridici znak na displej
0052 111F             76                             call wait_init          ;ceka dalsich 4,2ms
                      77     
0054 7408             78                             mov     a,#08h          ; display off,cursor off,no blink
0056 1128             79                             call lcd_drive          
0058 7401             80                             mov     a,#01h          ; clear display
005A 1128             81                             call lcd_drive
005C 111F             82                             call wait_init          ;cekej na clear
                      83                             
005E 740C             84                             mov     a,#0Ch          ; display on, cursor off
0060 1128             85                             call lcd_drive
0062 7414             86                             mov     a,#14h          ; auto-increment, shift cursor
0064 1128             87                             call lcd_drive
                      88     
0066 7480             89                             mov     a,#RAD1         ;pozice 0, 1 radek
0068 1128             90                             acall lcd_drive
                      91             
006A 90008C           92                             mov     DPTR,#Text1     ;do DPTR adresu 1 znaku sringu Text1
006D 1142             93                             acall lcd_string        ;zobrazi cely string na 1 radek
                      94             
006F 74C0             95                             mov     a,#RAD2         ;pozice 0, 2 radek
0071 1128             96                             acall lcd_drive
0073 90009C           97                             mov     dptr,#Text2     ;do DPTR adresu 1 znaku sringu Text2
0076 1142             98                             acall lcd_string        ;zobrazi cely string na 2 radek
                      99     
0078 7490            100                             mov     a,#RAD3         ;pozice 0, 3 radek
007A 1128            101                             acall lcd_drive
007C 9000AD          102                             mov dptr,#Text3         ;do DPTR adresu 1 znaku sringu Text2
007F 1142            103                             acall lcd_string        ;zobrazi cely string na 3 radek
                     104     
0081 74D0            105                             mov     a,#RAD4         ;pozice 0, 4 radek
0083 1128            106                             acall lcd_drive
0085 9000BE          107                             mov dptr,#Text4         ;do DPTR adresu 1 znaku sringu Text2
0088 1142            108                             acall lcd_string        ;zobrazi cely string na 4 radek
                     109                             
                     110     
008A 80FE            111                             jmp     $
                     112     
008C 54657374        113     Text1:  db 'Tester Displeje',00h
A51 MACRO ASSEMBLER      TESTER                                                              DATE  04/02/02   PAGE     3


LOC  OBJ            LINE     SOURCE

0090 65722044  
0094 6973706C  
0098 656A6500  
009C 5665727A        114     Text2:  db 'Verze 1.0 ready.',00h
00A0 6520312E  
00A4 30207265  
00A8 6164792E  
00AC 00        
00AD 546F746F        115     Text3:  db 'Toto je 3 radek.',00h
00B1 206A6520  
00B5 33207261  
00B9 64656B2E  
00BD 00        
00BE 546F746F        116     Text4:  db 'Toto je 4 radek.',00h       
00C2 206A6520  
00C6 34207261  
00CA 64656B2E  
00CE 00        
                     117                             
                     118                             end
                             
A51 MACRO ASSEMBLER      TESTER                                                              DATE  04/02/02   PAGE     4


SYMBOL TABLE LISTING
------ ----- -------


N A M E     T Y P E  V A L U E   ATTRIBUTES

ACC. . . .  D ADDR   00E0H   A
ENB. . . .  B ADDR   00B0H.7 A
EXIT . . .  C ADDR   004BH   A
LCDBUSY. .  C ADDR   0003H   A
LCD_B. . .  C ADDR   0005H   A
LCD_DISP .  C ADDR   0035H   A
LCD_DRIVE.  C ADDR   0028H   A
LCD_STRING  C ADDR   0042H   A
P1 . . . .  D ADDR   0090H   A
P3 . . . .  D ADDR   00B0H   A
RAD1 . . .  N NUMB   0080H   A
RAD2 . . .  N NUMB   00C0H   A
RAD3 . . .  N NUMB   0090H   A
RAD4 . . .  N NUMB   00D0H   A
RS . . . .  B ADDR   00B0H.5 A
RW . . . .  B ADDR   00B0H.4 A
START. . .  C ADDR   004CH   A
TEXT1. . .  C ADDR   008CH   A
TEXT2. . .  C ADDR   009CH   A
TEXT3. . .  C ADDR   00ADH   A
TEXT4. . .  C ADDR   00BEH   A
WAIT_INIT.  C ADDR   001FH   A
WAIT_NEXT.  C ADDR   0018H   A
WAIT_NEXT1  C ADDR   0021H   A
WAIT_POWER  C ADDR   0016H   A


REGISTER BANK(S) USED: 0

ASSEMBLY COMPLETE, NO ERRORS FOUND

⌨️ 快捷键说明

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