📄 tsasm.lst
字号:
A51 MACRO ASSEMBLER TSASM 09/09/2008 20:29:38 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN tsasm.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE tsasm.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0091 1 SS EQU P1.1 ;片选
0090 2 SCLK EQU P1.0 ;ISD4003时钟
0092 3 MOSI EQU P1.2 ;数据输入
0093 4 MISO EQU P1.3 ;数据输出
0097 5 LED EQU P1.7 ;指示灯
00B2 6 INT EQU INT0 ;中断
00B7 7 AN EQU P3.7 ;执行
00B6 8 STOP EQU P3.6 ;复位
0094 9 PR EQU P1.4 ;PR=1录音 PR=0放音
10 ;初始化
0000 11 ORG 0000H ;
0000 0102 12 AJMP MAIN ;
0002 758110 13 MAIN: MOV SP,#10H ;
0005 7590FF 14 MOV P1,#0FFH ;
0008 75A0FF 15 MOV P2,#0FFH ;
000B 75B0FF 16 MOV P3,#0FFH ;
000E 7580FF 17 MOV P0,#0FFH ;
0011 C2AF 18 CLR EA ;
0013 D297 19 MAII: SETB LED ;关指示灯
0015 11E5 20 ACALL DSTOP ;ISD掉电
0017 753AC8 21 MAS0: MOV 3AH,#200 ;
001A 20B7FA 22 MAS1: JB AN,MAS0 ;等按AN键
001D D53AFA 23 DJNZ 3AH,MAS1 ;
0020 11CF 24 ACALL UP ;ISD上电
0022 752000 25 MOV 20H,#00H ;ISD低位地址
0025 752100 26 MOV 21H,#00H ;ISD高位地址
0028 209402 27 JB PR,REC ;PR=1 录音
002B 018F 28 AJMP PLAY ;PR=0 放音
29 ;SETREC 16位
30 ;从指定地址录音 10100 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 >
002D E520 31 REC: MOV A,20H ;发地址 A7-A0
002F 11F0 32 ACALL ISDX ;
0031 E521 33 MOV A,21H ;发地址 A9-A8
0033 D2E7 34 SETB ACC.7 ;
0035 C2E6 35 CLR ACC.6 ;
0037 D2E5 36 SETB ACC.5 ;
0039 C2E4 37 CLR ACC.4 ;
003B C2E3 38 CLR ACC.3 ;
003D 11F0 39 ACALL ISDX ;
003F D291 40 SETB SS ;关片选
41 ;REC 8位
42 ;从当前地址录音 10110 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 >
0041 75360A 43 REC1: MOV 36H,#10 ;
0044 3115 44 REC2: ACALL YS50 ;延时录音
0046 D536FB 45 DJNZ 36H,REC2 ;
0049 C297 46 CLR LED ;开指示灯
004B 74B0 47 MOV A,#0B0H ;发 1011 0XXX
004D 11F0 48 ACALL ISDX ;
004F D291 49 SETB SS ;关片选
0051 7535C8 50 REC3: MOV 35H,#200 ;
0054 30B21C 51 REC4: JNB INT,REC7 ;OVF=0芯片溢出
0057 30B7F7 52 JNB AN,REC3 ;
005A D535F7 53 DJNZ 35H,REC4 ;
005D D297 54 SETB LED ;关指示灯
005F 11DA 55 ACALL STOPP ;停止当前操作
0061 30B607 56 REC5: JNB STOP,REC6 ;中断RESET
0064 20B7FA 57 JB AN,REC5 ;等待AN=0
0067 11DA 58 ACALL STOPP ;停止当前操作
A51 MACRO ASSEMBLER TSASM 09/09/2008 20:29:38 PAGE 2
0069 0141 59 AJMP REC1 ;
006B C290 60 REC6: CLR SCLK ;时钟SCLK=0
006D D291 61 SETB SS ;关片选
006F 11DA 62 ACALL STOPP ;停止当前操作
0071 0113 63 AJMP MAII ;
0073 D297 64 REC7: SETB LED ;关指示灯
0075 75360F 65 MOV 36H,#15 ;
0078 3115 66 REC8: ACALL YS50 ;延时录音
007A 20B7EE 67 JB AN,REC6 ;等待AN=1
007D D536F8 68 DJNZ 36H,REC8 ;
0080 C297 69 CLR LED ;
0082 75360F 70 MOV 36H,#15 ;
0085 3115 71 REC9: ACALL YS50 ;延时录音
0087 20B7E1 72 JB AN,REC6 ;等待AN=1
008A D536F8 73 DJNZ 36H,REC9 ;
008D 0173 74 AJMP REC7 ;
75 ;SETPLAY 16位
76 ;从指定地址放音 11100 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 >
008F 30B7FD 77 PLAY: JNB AN,PLAY ;等待AN=1
0092 E520 78 MOV A,20H ;发地址 A7-A0
0094 11F0 79 ACALL ISDX ;
0096 E521 80 MOV A,21H ;发地址 A9-A8
0098 D2E7 81 SETB ACC.7 ;
009A D2E6 82 SETB ACC.6 ;
009C D2E5 83 SETB ACC.5 ;
009E C2E4 84 CLR ACC.4 ;
00A0 C2E3 85 CLR ACC.3 ;
00A2 11F0 86 ACALL ISDX ;
00A4 D291 87 SETB SS ;关片选
88 ;PLAY 8位
89 ;从当前地址放音 11110 <X A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 >
00A6 C297 90 PLAY1: CLR LED ;LED开指示灯
00A8 74F0 91 MOV A,#0F0H ;发 11110 XXXXXXXX
00AA 11F0 92 ACALL ISDX ;发 << SETPLAY >>
00AC D291 93 SETB SS ;关片选
00AE 30B6BA 94 PLAY2: JNB STOP,REC6 ;STOP=0停止放音
00B1 20B2FA 95 JB INT,PLAY2 ;无OVF EOM继续放音
00B4 D297 96 SETB LED ;关指示灯
00B6 11DA 97 ACALL STOPP ;停止当前操作
98 ;检测OVF
00B8 C291 99 CLR SS ;开片选
00BA C290 100 CLR SCLK ;时钟SCLK=0
00BC D290 101 SETB SCLK ;时钟SCLK=1
00BE 2093AA 102 JB MISO,REC6 ;芯片到未
00C1 C290 103 CLR SCLK ;时钟SCLK=0
00C3 D291 104 SETB SS ;关片选
00C5 11DA 105 ACALL STOPP ;停止当前操作
00C7 30B6A1 106 PLAY3: JNB STOP,REC6 ;中断放音
00CA 20B7FA 107 JB AN,PLAY3 ;等待AN=0
00CD 01A6 108 AJMP PLAY1 ;顺序放音
109 ;ISD上电 << POWERUP >>
00CF 7420 110 UP: MOV A,#20H ;发00100 XXXXXXXXXXX
00D1 11F0 111 ACALL ISDX ;
00D3 D291 112 SETB SS ;关片选
00D5 3115 113 ACALL YS50 ;50mS延时
00D7 3115 114 ACALL YS50 ;50mS延时
00D9 22 115 RET ;
116 ;停止当前操作<< STOP >> 8位
00DA 7430 117 STOPP: MOV A,#30H ;发 0X11 0XXX
00DC 11F0 118 ACALL ISDX ;
00DE D291 119 SETB SS ;关片选
00E0 3115 120 ACALL YS50 ;50mS延时
00E2 3115 121 ACALL YS50 ;50mS延时
00E4 22 122 RET ;
123 ;停止当前操作掉电<< STOPPWRDN >> 8位
00E5 7410 124 DSTOP: MOV A,#10H ;发0X010 XXXXXXXXXX
A51 MACRO ASSEMBLER TSASM 09/09/2008 20:29:38 PAGE 3
00E7 11F0 125 ACALL ISDX ;
00E9 D291 126 SETB SS ;关片选
00EB 3115 127 ACALL YS50 ;50mS延时
00ED 3115 128 ACALL YS50 ;50mS延时
00EF 22 129 RET ;
130 ;ISD3300,4003 SPI写入程序 8位 数据在A
00F0 C291 131 ISDX: CLR SS ;开片选
00F2 7E08 132 MOV R6,#8 ;
00F4 C290 133 CLR SCLK ;时钟SCLK=0
00F6 A2E0 134 ISD1: MOV C,ACC.0 ;
00F8 9292 135 MOV MOSI,C ;数据写 MOSI
00FA D290 136 SETB SCLK ;时钟SCLK=1
00FC 03 137 RR A ;
00FD C290 138 CLR SCLK ;时钟SCLK=0
00FF DEF5 139 DJNZ R6,ISD1 ;
0101 22 140 RET ;
141 ;**** 10mS延时 ****
0102 758901 142 YS1: MOV TMOD,#01H ;
0105 758CD8 143 MOV TH0,#0D8H ;10mS延时初值置入
0108 758AF0 144 MOV TL0,#0F0H ;(65536-X)*1=10MS
010B D28C 145 SETB TR0 ;65536-(10000/1)=D8F0H
010D 308DFD 146 JNB TF0,$ ;
0110 C28D 147 CLR TF0 ;
0112 C28C 148 CLR TR0 ;
0114 22 149 RET ;
150 ;**** 50mS延时 ****
0115 758901 151 YS50: MOV TMOD,#01H ;
0118 758C3C 152 MOV TH0,#3CH ;50mS延时初值置入
011B 758AB0 153 MOV TL0,#0B0H ;(65536-X)*1=50MS
011E D28C 154 SETB TR0 ;65536-(50000/1)
0120 308DFD 155 JNB TF0,$ ;
0123 C28D 156 CLR TF0 ;
0125 C28C 157 CLR TR0 ;
0127 22 158 RET ;
159 END ;
;附:ISD4004的程序改动注明:
SETREC:
*** WARNING #A73 IN 161 (tsasm.asm, LINE 161): TEXT FOUND BEYOND END STATEMENT - IGNORED
MOV 20H,#00H ; 坏桶宋
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -