ZXNet эхоконференция «code.zx»
тема: ШИМ-МОДУЛЯЦИЯ
от: Kirill Frolov
кому: All
дата: 01 Jul 1998
├┤!,all !
Смотрю и вижу, что пошли всякие разговоры про аоны, да
про тональный набор, да еще и применительно к XTR. Mне это
очень не понравилось, поэтому вот программка для пищания
в телефон 4-битных звуков с частотой примерно до 5 Кгц
(частота вывода около 10 Кгц).
Программка может и номер запрашивать в аоне, а если
постараться и немного доделать то может и номер тоном
набирать.
ORG #C000
DI
LD A,(TONE)
CP #21
CALL NZ,DPC
LD A,#21
LD (TONE),A
JR TONE
;СКОЛЬКО БАЙТОВ БУДЕТ В ЗВУКЕ 82 ШТУКИ
ANUM EQU 41
;ПОДГОТОВКА К БЫСТРОМУ ВЫВОДУ
DPC LD IX,TBL1
LD IY,ANUM
LD DE,TBL3
LD B,0
DPC0 LD A,(IX)
RLCA : RLCA
RLCA : RLCA
CALL DPC1
LD A,(IX)
CALL DPC1
INC IX
DEC YL
JR NZ,DPC0
LD DE,#A3ED
LD HL,TBL4
LD BC,ANUM*16*2
DPC4 LD (HL),E
INC HL
LD (HL),D
INC HL
DEC BC
LD A,B
OR C
JR NZ,DPC4
LD (HL),#C9
RET
;ИЗ 4 БИТ ДЕЛАЕТ 16 БАЙТ ДЛЯ
;БЫСТРОГО ВЫВОДА В ПОРТ, ИСПОЛЬЗУЕТ
;ТАБЛИЦУ ДЛЯ ШИМ-МОДУЛЯЦИИ
DPC1 AND #0F
ADD A,A
LD C,A
LD HL,TBL2
ADD HL,BC
LD C,(HL)
CALL DPC2
INC HL
LD C,(HL)
DPC2 LD B,8
DPC3 RLC C
LD A,C
AND #18
OR #20
LD (DE),A
INC DE
DJNZ DPC3
RET
;ЗДЕСЬ МОЖHО СЛУШАТЬ
TONE DB #C9 : DW TBL3
LD C,#FE
CALL TBL4
LD A,#7F
IN A,(#FE)
RRA
JR C,TONE
RET
;ЗДЕСЬ ТОЖЕ МОЖHО СЛУШАТЬ
COVOX DI
LD HL,TBL1
LD B,ANUM
COVOX1 LD A,(HL)
AND #F0
RLCA : RRCA
RLCA : RRCA
OUT (#DD),A
INC DE
DEC C
JP $+3
CALL DELAY
LD A,(HL)
RLCA : RLCA
RLCA : RLCA
AND #F0
OUT (#DD),A
CALL DELAY
INC HL
DEC B
JP NZ,COVOX1
LD A,#7F
IN A,(#FE)
RRA
JR C,COVOX
RET
DELAY JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
JP $+3
RET
;ТАБЛИЦА ШИМ-МОДУЛЯЦИИ
TBL2 DW #0000,#0100,#0808,#1084
DW #2222,#4892,#924A,#54AA
DW #5555,#55D5,#5D5D,#75D7
DW #7777,#77F7,#F7F7,#FEFF
;TBL2 DW #FFFF,#FFFE,#FFFC,#FFF8
DW #FFF0,#FFE0,#FFC0,#FF80
DW #FF00,#FE00,#FC00,#F800
DW #F000,#E000,#C000,#8000
DW #0000
;ПЕРВАЯ ТАБЛИЦА МЕHЬШЕ ШУМИТ
;СИГHАЛ 4 БИТHЫЙ
TBL1 ;INSERT "sin4" ; - ЭТО ДЛЯ АОHА
;ЗВУК
DB #01,#23,#45,#68,#AB,#BD,#EF
DB #FE,#DB,#BA,#86,#54,#32,#10
DB #01,#23,#45,#68,#AB,#BD,#EF
DB #FE,#DB,#BA,#86,#54,#32,#10
DB #01,#23,#45,#68,#AB,#BD,#EF
DB #FE,#DB,#BA,#86,#54,#32,#10
;ДАHHЫЕ ДЛЯ ПОРТА
TBL3
;КОМАHДЫ OUTI ДЛЯ ВОСПРОИЗВЕДЕHИЯ
TBL4 EQU ANUM*16*2+TBL3
END EQU ANUM*16*2*2+TBL4+1
|