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

📄 por.lst

📁 本文件是用51单片机设计电子琴的资料文件
💻 LST
📖 第 1 页 / 共 3 页
字号:
A51 MACRO ASSEMBLER  POR                                                                  01/22/2006 22:35:54 PAGE     1


MACRO ASSEMBLER A51 V6.12
OBJECT MODULE PLACED IN .\POR.obj
ASSEMBLER INVOKED BY: F:\kell\C51\BIN\A51.EXE ..\8051danpianji\8051\805101\8051单片机1\PR\POR.ASM SET(SMALL) DEBUG PRINT
                      (.\POR.lst) OBJECT(.\POR.obj) EP

LOC  OBJ            LINE     SOURCE

                       1     ;-------------------------------------------
                       2     ; POR.ASM   8051 ORGAN(MEMORY)  IO51
                       3     ; IO51 PCB  COPYRIGHT CMY 2003
                       4     ; 8051 ASM USE: KEIL
                       5     ;-------------------------------------------
  0080                 6     RS      EQU P0.0
  0081                 7     EN      EQU P0.1
                       8     
  00A7                 9     K4      EQU P2.7
  00B7                10     WLED    EQU P3.7
  00B4                11     SPK     EQU P3.4
                      12     
  00B5                13     RY1     EQU P3.5
  00B6                14     RY2     EQU P3.6
                      15     ;...............................................
  0000                16     FKEY    EQU  20H.0  ; KEY PRESSED
                      17     
                      18     ;****************************************
  0040                19     MNO     EQU 64 ; MAX=64. STORAGE BYTE NO
                      20     
  0030                21     MEM     EQU 30H ; 30H--6FH MAX=64 STORAGE BYTE
                      22     
  0071                23     LO      EQU 71H
  0072                24     HI      EQU 72H
  0073                25     TC      EQU 73H
  0074                26     BUF_KEY EQU 74H  ; KEY DATA BUFFER
  0075                27     KEY_NO  EQU 75H  ; KEY NO
  0076                28     NO      EQU 76H  ; PLAY TOTAL NO
  0077                29     CO      EQU 77H  ; VAR
  0078                30     X       EQU 78H  ; LCD X POS
                      31     
                      32     ;.........RAM ...TO 7FH
                      33     ;......................................
0000                  34             ORG 0H
0000 800B             35             JMP BEGIN
000B                  36             ORG 0BH      ; TIMER 0
000B 806A             37             JMP T0_INT
                      38     ;----------------------
000D                  39     BEGIN:
000D C2B5             40        CLR RY1
000F C2B6             41        CLR RY2
0011 11D7             42        CALL LED_BL
0013 758900           43        MOV TMOD,#00000000B
0016 75A882           44        MOV IE,  #10000010B
                      45     
0019 C281             46        CLR EN   ; LCD OFF
001B 514A             47        CALL SET_LCD
                      48     
001D 1162             49        CALL SOUND_ON
                      50     
001F 7C01             51        MOV R4,#1
0021 7B01             52        MOV R3,#1
0023 1135             53        CALL PLAY
                      54     
0025 7C02             55        MOV R4,#2
0027 7B01             56        MOV R3,#1
0029 1135             57        CALL PLAY
A51 MACRO ASSEMBLER  POR                                                                  01/22/2006 22:35:54 PAGE     2

                      58     
002B 7C03             59        MOV R4,#3
002D 7B01             60        MOV R3,#1
002F 1135             61        CALL PLAY
                      62     
0031 21BB             63        JMP RUN
0033 80FE             64        JMP $
                      65     ;--------------------------------------
                      66     ; $INCLUDE (POR1.ASM)
                      67     ;----------------------------------------------------------------------
                      68     ; R4:INDEX   R3:LENGH
0035                  69     PLAY:
0035 1168             70        CALL LOAD_VALUE
0037 1162             71        CALL SOUND_ON
                      72     
                      73     ;*************************************
                      74     ; DECIDE PLAY LENGTH.........
                      75     
0039 7D1E             76     PL1:MOV R5,#30  ; 20
003B 11CC             77         CALL DELAY
003D DBFA             78         DJNZ R3, PL1
                      79     
                      80     ; PAUSE
003F 1165             81        CALL SOUND_OFF
                      82     
0041 7D03             83        MOV R5,#3
0043 11CC             84        CALL DELAY
0045 22               85        RET
                      86     ;---------------------
0046                  87     PLAY_SONG:
0046 757300           88        MOV TC,#0
0049                  89     PA0:
0049 90009E           90        MOV DPTR, #SONG
004C E573             91        MOV A,TC
004E 93               92        MOVC A,@A+DPTR
004F FC               93        MOV R4,A
0050 B4FF01           94        CJNE A,#0FFH,PA1
0053 22               95        RET
0054                  96     PA1:
0054 9000B5           97        MOV DPTR, #LEN
0057 E573             98        MOV A,TC
0059 93               99        MOVC A,@A+DPTR
005A FB              100        MOV R3,A
005B 1135            101        CALL PLAY
                     102     
005D 0573            103        INC TC
005F 80E8            104        JMP PA0
0061 22              105        RET
                     106     ;-------------------
0062                 107     SOUND_ON:
0062 D28C            108        SETB TR0
0064 22              109        RET
                     110     ;---------------------
0065                 111     SOUND_OFF:
0065 C28C            112        CLR TR0
0067 22              113        RET
                     114     ;-------------------------------
                     115     ; LOAD LO HI VALUE FROM TABLE
                     116     ; R4: INDEX
0068                 117     LOAD_VALUE:
0068 900080          118        MOV DPTR,#HI_LIST
006B EC              119        MOV A,R4
006C 93              120        MOVC A,@A+DPTR
006D F572            121        MOV HI,A
                     122     
006F 90008F          123        MOV DPTR,#LO_LIST
A51 MACRO ASSEMBLER  POR                                                                  01/22/2006 22:35:54 PAGE     3

0072 EC              124        MOV A,R4
0073 93              125        MOVC A,@A+DPTR
0074 F571            126        MOV LO,A
0076 22              127        RET
                     128     ;----------------------
                     129     ; USE TIMER MODE 0
                     130     ;----------------------
0077                 131     T0_INT:
0077 85718A          132         MOV TL0,LO
007A 85728C          133         MOV TH0,HI
007D B2B4            134         CPL SPK
007F 32              135         RETI
                     136     ;--------------------
                     137     ; timer constant
0080                 138     HI_LIST:
0080 00E2E5E8        139        DB  0,226,229,232,233,236,238,240
0084 E9ECEEF0                
0088 F1F2F4F4        140        DB  241,242,244,244,246,247,248
008C F6F7F8                  
008F                 141     LO_LIST:
008F 00040D0A        142        DB  0,4,13,10,20,3,8,6
0093 14030806                
0097 0217051A        143        DB  2,23,5,26,1,4,3
009B 010403                  
                     144     ;-------------------------
                     145     ; song data :
009E 03050503        146     SONG:  DB 3,5,5,3,2,1,2,3,5,3,2,3,5,5,3,2,1,2,3,2,1,1,0FFH
00A2 02010203                
00A6 05030203                
00AA 05050302                
00AE 01020302                
00B2 0101FF                  
00B5 02010102        147     LEN:   DB 2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0FFH
00B9 01010102                
00BD 01010102                
00C1 01010201                
00C5 01010201                
00C9 0101FF                  
                     148     ;-----------------------------------------------------------
                     149     ; DELAY R5*10 ms
00CC                 150     DELAY:
00CC 7E32            151             MOV R6,#50
00CE 7F32            152     D1:     MOV R7,#50
00D0 DFFE            153             DJNZ R7,$
00D2 DEFA            154             DJNZ R6,D1
00D4 DDF6            155             DJNZ R5,DELAY
00D6 22              156             RET
                     157     ;--------------------------
00D7                 158     LED_BL:
00D7 7C04            159             MOV R4,#4
00D9 B2B7            160     LE1:    CPL WLED
00DB 7D0A            161             MOV R5,#10
00DD 11CC            162             CALL DELAY
00DF DCF8            163             DJNZ R4,LE1
00E1 22              164             RET
                     165     ;--------------------------------------------------------------------------
                     166     ; FIND DIG CODE 0--F
                     167     ; KEY PAD: TYPE A
                     168     ; F E D C
                     169     ; B 3 6 9
                     170     ; A 2 5 8
                     171     ; 0 1 4 7
00E2                 172     TABLE_DIG:
00E2 0F0B0A00        173              DB  0FH, 0BH, 0AH, 00H
00E6 0E030201        174              DB  0EH, 03H, 02H, 01H
00EA 0D060504        175              DB  0DH, 06H, 05H, 04H
A51 MACRO ASSEMBLER  POR                                                                  01/22/2006 22:35:54 PAGE     4

00EE 0C090807        176              DB  0CH, 09H, 08H, 07H
                     177     ;---------------------------------------------------------
                     178     ; USE P2
                     179     ; R0 : BUF PT NO USE
                     180     ; R1 : COUNT 1
                     181     ; R2 : COUNT 2
                     182     ; R3 : SCAN SIGNAL
                     183     ; R4 : COUNT KEY_NO
                     184     ;------------------
00F2                 185     SCAN:
00F2 7BFE            186             MOV R3, #0FEH   ; LOAD INITIAL SCAN SIGNAL
00F4 7C00            187             MOV R4, #0     ; KEY NO COUNT
00F6 7904            188             MOV R1, #4     ; COUNT TIMES
00F8 C2D5            189             CLR  PSW.5     ; NO KEY ON
                     190     ;......................................
00FA                 191     L1:
                     192     ; SEND OUT SCAN SIGNAL VIA P2.0~P2.3
00FA EB              193             MOV A, R3
00FB F5A0            194             MOV P2,A
                     195     ;..................................
                     196     ; DELAY A WHILE .......
00FD 7D01            197             MOV R5, #1
00FF 11CC            198             CALL DELAY
                     199     
                     200     ; READ I/P DATA FROM P2.4~P2.7
0101 E5A0            201             MOV A,P2
0103 54F0            202             ANL A,#0F0H      ; GET HIGH 4 BIT  EX:1110XXXX
                     203     
                     204     ; CHECK KEY PRESSED ?
0105 7A04            205             MOV R2,#4       ; COUNT 2
                     206     ;.................................
0107                 207     L2:
0107 20E404          208             JB ACC.4, N1    ; NO KEYED
010A 8C75            209             MOV KEY_NO, R4
010C D2D5            210             SETB PSW.5       ; KEY PRESS......
010E                 211     N1:
010E 0C              212             INC R4          ; KEY NO ++
010F 03              213             RR A            ; CHECK KEY NO
0110 DAF5            214             DJNZ R2, L2
                     215     
                     216     ; CHANGE SCAN CODE  EX:XXXX1101
0112 EB              217             MOV A, R3
0113 23              218             RL A
0114 FB              219             MOV R3, A
0115 D9E3            220             DJNZ R1, L1
                     221     
                     222     ;....................................
                     223     ; SET FKEY
0117                 224     BACK:
0117 30D503          225             JNB PSW.5, NO_KEY
011A D200            226             SETB FKEY
011C 22              227             RET
011D                 228     NO_KEY:
011D C200            229             CLR FKEY        ; NO KEY PRESSED.........
011F 22              230             RET
                     231     ;---------------------------------------------------------
                     232     ; SCAN KEY ON AND OFF THEN PASS KEY_NO
0120                 233     SCAN_KEY:
0120 C200            234             CLR FKEY
0122 11F2            235             CALL SCAN
                     236     ; IF(KEY_ON) WAIT  KEY_OFF
0124 200001          237             JB FKEY, WAIT_OFF
                     238     ; NO KEY ON RETURN....
0127 22              239             RET
0128                 240     WAIT_OFF:
0128 11F2            241             CALL SCAN
A51 MACRO ASSEMBLER  POR                                                                  01/22/2006 22:35:54 PAGE     5

012A 2000FB          242             JB FKEY, WAIT_OFF
012D 22              243             RET
                     244     ;----------------------------------------

⌨️ 快捷键说明

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