?? isd1720.lst
字號:
A51 MACRO ASSEMBLER ISD1720 03/10/2009 17:12:58 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN ISD1720.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ISD1720.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0090 1 SS EQU P1.0 ;片選
0091 2 SCLK EQU P1.1 ;ISD1730時鐘
0092 3 MOSI EQU P1.2 ;數據輸入
0093 4 MISO EQU P1.3 ;數據輸出
0097 5 LED EQU P1.7 ;指示燈
0096 6 AN EQU P1.6 ;執行
0095 7 STOP EQU P1.5 ;復位
0094 8 PR EQU P1.4 ;PR=1錄音 PR=0放音
00A7 9 MORA EQU P2.7
10 ;***************************************************
11 ;20H-25H 為SPI命令字的1-6位存儲單元
12 ;***************************************************
0000 13 ORG 0000H ;
0000 0102 14 AJMP MAIN ;
0002 758170 15 MAIN: MOV SP,#70H ;
0005 7590FF 16 MOV P1,#0FFH ;
0008 75A0FF 17 MOV P2,#0FFH ;
000B 75B0FF 18 MOV P3,#0FFH ;
000E 7580FF 19 MOV P0,#0FFH ;
0011 C2AF 20 CLR EA ;
0013 31E1 21 MAII: ACALL REST
0015 3191 22 ACALL DSTOP ;ISD掉電
0017 D297 23 SETB LED ;關指示燈
0019 753AC8 24 MAS0: MOV 3AH,#200
001C 309568 25 JNB STOP,REC6 ;
001F 2096F7 26 MAS1: JB AN,MAS0 ;等按AN鍵
0022 D53AFA 27 DJNZ 3AH,MAS1 ;
0025 3145 28 PU: ACALL UP ;ISD上電
0027 20A708 29 JB MORA,MICREC ;如果mic錄音,apc=0440h。如果anain,apc=0480h
002A 752108 30 MOV 21H,#08H
002D 752204 31 MOV 22H,#04H
0030 0138 32 AJMP GOON
0032 752140 33 MICREC:MOV 21H,#40H
0035 752204 34 MOV 22H,#04H
0038 31A2 35 GOON: ACALL WR_APC ;寫apc
003A 311E 36 ACALL WAITRDY ;等待rdy=1
003C 3130 37 ACALL CLRINT ;清除中斷
003E 311E 38 ACALL WAITRDY ;等待rdy=1
0040 316F 39 ACALL CHK_MEM ;環狀存儲檢查
0042 209402 40 JB PR,REC ;PR=1 錄音
0045 01C0 41 AJMP PLAY ;PR=0 放音
0047 75360A 42 REC: MOV 36H,#10
004A 5122 43 REC1: ACALL YS50 ;延時錄音
004C D536FB 44 DJNZ 36H,REC1
004F 752051 45 REC2: MOV 20H,#51H ;發送REC命令
0052 752100 46 MOV 21H,#00H
0055 E520 47 MOV A,20H
0057 31F2 48 ACALL SPIO
0059 E521 49 MOV A,21H
005B 31F2 50 ACALL SPIO
005D D290 51 SETB SS ;關片選
005F 11F4 52 ACALL CHECKRDY
0061 30E3E6 53 JNB ACC.3,REC1
0064 C297 54 CLR LED ;開 LED燈
0066 7535C8 55 REC3: MOV 35H,#200
0069 3124 56 REC4: ACALL CHECKFULL
006B 3096F8 57 JNB AN,REC3
006E D535F8 58 DJNZ 35H,REC4
A51 MACRO ASSEMBLER ISD1720 03/10/2009 17:12:58 PAGE 2
0071 D297 59 SETB LED
0073 3130 60 ACALL CLRINT
0075 315A 61 ACALL STOPP
0077 30950D 62 REC5: JNB STOP,REC6
007A 2096FA 63 JB AN,REC5
007D 315A 64 ACALL STOPP
007F 3130 65 ACALL CLRINT
0081 311E 66 ACALL WAITRDY
0083 316F 67 ACALL CHK_MEM
0085 0147 68 AJMP REC
0087 7960 69 REC6: MOV R1,#60H
0089 70 TOERASE:
0089 209512 71 JB STOP,TOPD
008C 5122 72 ACALL YS50
008E D9F9 73 DJNZ R1,TOERASE
0090 31CC 74 ACALL G_ERASE
0092 7903 75 MOV R1,#03H
0094 76 LEDWAIT:
0094 C297 77 CLR LED
0096 5108 78 ACALL LEDELAY
0098 D297 79 SETB LED
009A 5108 80 ACALL LEDELAY
009C D9F6 81 DJNZ R1,LEDWAIT
009E 315A 82 TOPD: ACALL STOPP
00A0 3130 83 ACALL CLRINT
00A2 0113 84 AJMP MAII
00A4 D297 85 REC7: SETB LED
00A6 75360A 86 MOV 36H,#10
00A9 5122 87 REC8: ACALL YS50
00AB 2096D9 88 JB AN,REC6
00AE D536F8 89 DJNZ 36H,REC8
00B1 C297 90 CLR LED
00B3 75360A 91 MOV 36H,#10
00B6 5122 92 REC9: ACALL YS50
00B8 2096CC 93 JB AN,REC6
00BB D536F8 94 DJNZ 36H,REC9
00BE 01A4 95 AJMP REC7
00C0 3096FD 96 PLAY: JNB AN,PLAY
00C3 97 REPLAY: ;放音play,也可以用set_play放音
00C3 752040 98 MOV 20H,#40H
00C6 752100 99 MOV 21H,#00H
00C9 E520 100 MOV A,20H
00CB 31F2 101 ACALL SPIO
00CD E521 102 MOV A,21H
00CF 31F2 103 ACALL SPIO
00D1 D290 104 SETB SS
00D3 3112 105 ACALL CHECKSR
00D5 20E0EB 106 JB ACC.0,REPLAY
00D8 C297 107 CLR LED
00DA 3095AA 108 PLAY1: JNB STOP,REC6
00DD 11F4 109 ACALL CHECKRDY
00DF 30E0F8 110 JNB ACC.0,PLAY1
00E2 D297 111 SETB LED
00E4 315A 112 ACALL STOPP
00E6 30959E 113 PLAY2: JNB STOP,REC6
00E9 2096FA 114 JB AN,PLAY2
00EC 3180 115 ACALL FWD
00EE 11F4 116 ACALL CHECKRDY
00F0 316F 117 ACALL CHK_MEM
00F2 01C0 118 AJMP PLAY
119 ;掃描ISD1700狀態寄存器SR1
00F4 120 CHECKRDY:
00F4 752005 121 MOV 20H,#05H
00F7 752100 122 MOV 21H,#00H
00FA 752200 123 MOV 22H,#00H
00FD 124 CHECKRDY1:
A51 MACRO ASSEMBLER ISD1720 03/10/2009 17:12:58 PAGE 3
00FD 31B4 125 ACALL RDSTATUS
00FF E520 126 MOV A,20H
0101 31F2 127 ACALL SPIO
0103 F526 128 MOV 26H,a
0105 E521 129 MOV A,21H
0107 31F2 130 ACALL SPIO
0109 F527 131 MOV 27H,A
010B E522 132 MOV A,22H
010D 31F2 133 ACALL SPIO
010F F528 134 MOV 28h,A
0111 22 135 RET
136 ;掃描ISD1700狀態寄存器SR0
0112 137 CHECKSR:
0112 752005 138 MOV 20H,#05H
0115 31B4 139 acall rdstatus
0117 E520 140 MOV A,20H
0119 31F2 141 ACALL SPIO
011B F526 142 MOV 26H,a
011D 22 143 RET
144 ;等待ISD1700狀態寄存器SR1.0位(RDY) 置1
011E 145 WAITRDY:
011E 11F4 146 ACALL CHECKRDY
0120 30E0FB 147 JNB ACC.0,WAITRDY
0123 22 148 RET
149 ;檢測ISD1700狀態寄存器SR0.1位(FULL),是否為1
0124 150 CHECKFULL:
0124 31B4 151 ACALL RDSTATUS
0126 E520 152 MOV A,20H
0128 31F2 153 ACALL SPIO
012A 30E102 154 JNB ACC.1,CHECKFULL2
012D 11A4 155 Acall REC7
012F 156 CHECKFULL2:
012F 22 157 RET
158 ;清楚中斷標志INT指令<< CLR_INT >>
0130 159 CLRINT:
0130 752004 160 MOV 20H,#04H
0133 752100 161 MOV 21H,#00H
0136 E520 162 MOV A,20H
0138 31F2 163 ACALL SPIO
013A E521 164 MOV A,21H
013C 31F2 165 ACALL SPIO
013E D290 166 SETB SS
0140 5122 167 ACALL YS50 ;50mS延時
0142 5122 168 ACALL YS50 ;50mS延時
0144 22 169 RET ;
170 ;ISD1700上電 << POWERUP >>
0145 752001 171 UP: MOV 20H,#01H
0148 752100 172 MOV 21H,#00H
014B E520 173 MOV A,20H
014D 31F2 174 ACALL SPIO
014F E521 175 MOV A,21H
0151 31F2 176 ACALL SPIO
0153 D290 177 SETB SS
0155 5122 178 ACALL YS50 ;50mS延時
0157 5122 179 ACALL YS50 ;50mS延時
0159 22 180 RET
181 ;停止當前操作<< STOP >>
015A 752002 182 STOPP: MOV 20H,#02H
015D 752100 183 MOV 21H,#00H
0160 E520 184 MOV A,20H
0162 31F2 185 ACALL SPIO
0164 E521 186 MOV A,21H
0166 31F2 187 ACALL SPIO
0168 D290 188 SETB SS
016A 5122 189 ACALL YS50 ;50mS延時
016C 5122 190 ACALL YS50 ;50mS延時
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -