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

📄 isd1420-33000精灵板发码程序.txt

📁 ISD语音芯片的datasheet 对单片机编程很有帮助
💻 TXT
字号:
;   *********************************
;   *  ISD1420 ISD2500 ISD3300      *
;   *  语音电路发码程序             *
;   *  AT89C2051单片计算机 12MHz    *
;   *  TXHH.ASM                     *
;   *  一九九九年八月二十三日       *
;   *********************************
;****  初始化 ****
       ORG   0000H          ;
;主程序
MAIN:  MOV   SP,#10H        ;
       MOV   P1,#0FFH       ;
       MOV   P3,#0FFH       ;
       CLR   ET1            ;
       CLR   ES             ;
       CLR   EX1            ;
       CLR   EX0            ;
       CLR   EA             ;
       MOV   R3,#0DDH      ;
JJK:   MOV   R0,#40H        ;键输入存储的首地址
       MOV   SP,#10H        ;
       MOV   P1,#0FFH       ;
       MOV   P3,#0FFH       ;
       MOV   SCON,#50H      ;串行口工作于方式1
       MOV   PCON,#00H      ;SMOD=0=fosc/32  (SMOD=1=fosc/16)
       MOV   TMOD,#20H      ;定时器1工作于方式2 自动装入的8位计数器
       MOV   TH1,#0FAH      ;波特率设置2400 1位起始位 8位数据位 1位停止位
       MOV   TL1,#0FAH      ;
WW2:   SETB  T1             ;
       MOV   P1,#0EFH       ;
       JB    RXD,WWWL       ;
       AJMP  FCCC           ;
WWWL:  JNB   P1.0,WW0       ;
       JNB   P1.1,WW0       ;
       JNB   P1.2,WW0       ;
       JNB   P1.3,WW0       ;
       MOV   P1,#0DFH       ;
       JNB   P1.0,WW0       ;
       JNB   P1.1,WW0       ;
       JNB   P1.2,WW0       ;
       JNB   P1.3,WW0       ;
       MOV   P1,#0BFH       ;
       JNB   P1.0,WW0       ;
       JNB   P1.1,WW0       ;
       JNB   P1.2,WW0       ;
       JNB   P1.3,WW0       ;
       AJMP  WW2            ;
WW0:   MOV   A,P1           ;
       CLR   T1             ;
       MOV   30H,#100       ;
DD0:   JNB   P1.0,$         ;
       JNB   P1.1,$         ;
       JNB   P1.2,$         ;
       JNB   P1.3,$         ;
       ACALL Y100           ;
       DJNZ  30H,DD0        ;
       SETB  T1             ;
       CJNE  A,#0E7H,JJ1    ;
       MOV   A,#01H         ;
JJ1:   CJNE  A,#0D7H,JJ2    ;
       MOV   A,#02H         ;
JJ2:   CJNE  A,#0B7H,JJ3    ;
       MOV   A,#03H         ;
JJ3:   CJNE  A,#0EBH,JJ4    ;
       MOV   A,#04H         ;
JJ4:   CJNE  A,#0DBH,JJ5    ;
       MOV   A,#05H         ;
JJ5:   CJNE  A,#0BBH,JJ6    ;
       MOV   A,#06H         ;
JJ6:   CJNE  A,#0EDH,JJ7    ;
       MOV   A,#07H         ;
JJ7:   CJNE  A,#0DDH,JJ8    ;
       MOV   A,#08H         ;
JJ8:   CJNE  A,#0BDH,JJ9    ;
       MOV   A,#09H         ;
JJ9:   CJNE  A,#0EEH,JJ0    ;每一段的结束键
       MOV   A,#0AH         ;
JJ0:   CJNE  A,#0DEH,JJA    ;
       MOV   A,#00H         ;
JJA:   CJNE  A,#0BEH,JJB    ;
       MOV   A,R3    ;
       CJNE  A,#0DDH,JJBB   ;
       AJMP  MAIN           ;
JJBB:  CJNE  A,#0AAH,JJBB1    ;
       AJMP  FMM;
JJBB1: DEC   R0             ;
       AJMP  AA             ;输入结束
JJB:   MOV   R3,#00H      ;
       MOV   @R0,A          ;
       INC   R0             ;
       AJMP  WW2            ;没有输入结束键继续输入
AA:    DEC   R0             ;
       MOV   3FH,#0AH       ;
       MOV   26H,#28H       ;
AA0:   MOV   20H,#00H       ;
       MOV   21H,#00H       ;
       MOV   22H,#00H       ;
       MOV   23H,#00H       ;
       MOV   R1,#23H        ;
AA1:   MOV   A,@R0          ;
       CJNE  A,#0AH,AA2     ;
       MOV   18H,R0         ;    结果在  25H,24H          20H  21H  22H  23H
       ACALL AH             ;调四位BCD码转换十六位二进制数 千   百   十   个
       MOV   19H,R1         ;
       MOV   R1,26H         ;
       MOV   @R1,24H        ;
       INC   R1             ;
       MOV   @R1,25H        ;
       INC   R1             ;
       MOV   26H,R1         ;
       MOV   R1,19H         ;
       MOV   R0,18H         ;
       DEC   R0             ;
       CJNE  R0,#3EH,AA0    ;
       AJMP  FMM            ;
AA2:   MOV   @R1,A          ;
       DEC   R0             ;
       DEC   R1             ;
       AJMP  AA1            ;
FMM:   MOV   A,#0AAH        ;发码0AAH
       ACALL OUT            ;
       MOV   A,#0AAH        ;发码0AAH
       ACALL OUT            ;
       MOV   R1,26H         ;
       DEC   R1             ;
FMM2:  JB    T0,FMM1        ;T0=0 1420  T0=1 2500
       DEC   R1             ;
FMM1:  MOV   A,@R1          ;
       ACALL OUT            ;
       DEC   R1             ;
       CJNE  R1,#27H,FMM2   ;
       MOV   A,#0FFH        ;发码0FFH
       ACALL OUT            ;
       MOV   A,#0FFH        ;发码0FFH
       ACALL OUT            ;
       MOV   R3,#0AAH       ;
       AJMP  JJK            ;
;发CCH CCH
FCCC:  MOV   A,#0AAH        ;发码0AAH
       ACALL OUT            ;
       MOV   A,#0AAH        ;发码0AAH
       ACALL OUT            ;
       MOV   A,#0CCH ;
       ACALL OUT            ;
       MOV   A,#0CCH ;
       ACALL OUT            ;
       MOV   A,#0FFH        ;发码0FFH
       ACALL OUT            ;
       MOV   A,#0FFH        ;发码0FFH
       ACALL OUT            ;
       AJMP  MAIN           ;
;****  发送子程序  ****
OUT:   MOV   TMOD,#20H      ;定时器1工作于方式2 自动装入的8位计数器
       MOV   SCON,#50H      ;串行口工作于方式1
       MOV   PCON,#00H      ;SMOD=0=fosc/32  (SMOD=1=fosc/16)
       MOV   TH1,#0FAH      ;波特率设置2400 1位起始位 8位数据位 1位停止位
       MOV   TL1,#0FAH      ;
       SETB  TR1            ;
       MOV   SBUF,A         ;数据在A
       JNB   TI,$           ;
       CLR   TI             ;
       RET                  ;
;**** 1mS延时  ****
Y100:  MOV   TMOD,#01H      ;
       MOV   TL0,#20H       ;10mS延时初值置入
       MOV   TH0,#0FCH      ;(65536-X)*1=10MS
       SETB  TR0            ;65536-(10000/1)
       JNB   TF0,$          ;
       CLR   TF0            ;
       CLR   TR0            ;
       RET                  ;
;BCD码转换成二进制数
AH:    MOV   R7,#03H        ;
       MOV   R0,#20H        ;
       MOV   25H,#00H       ;
       MOV   A,@R0          ;
       MOV   24H,A          ; R2
ML10:  MOV   A,24H          ;
       MOV   B,#0AH         ;
       MUL   AB             ;
       MOV   24H,A          ; R2
       MOV   A,B            ;
       XCH   A,25H          ;
       MOV   B,#0AH         ;
       MUL   AB             ;
       ADD   A,25H          ;
       MOV   25H,A          ;
       INC   R0             ;
       MOV   A,@R0          ;
       ADD   A,24H          ;
       MOV   24H,A          ;
       MOV   A,25H          ;
       ADDC  A,#00H         ;
       MOV   25H,A          ;
       DJNZ  R7,ML10        ;
       RET                  ;
       END                  ;

⌨️ 快捷键说明

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