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

📄 tsasm.lst

📁 ISD4004芯片的语音录放程序
💻 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 + -