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

📄 dtmf.asm

📁 利用PWM实现正弦波和DTMF
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; Filename: DTMF.ASM
; **********************************************
; * Author:   John Day                         *    
; *           Sr. Field Applications Engineer  *
; *	      Microchip Technology             *
; * Revision: 1.2                              *
; * Date      December 20, 1995                *
; * Part:     PIC16C54                         *
; * Compiled using MPASM V1.21                 *
; **********************************************
; * Include files:                             *
; * 	      NONE (used by DTMF.ASM)          *
; **********************************************
; * Fuses:    OSC:  XT (3.579545 Mhz xtal)     *
; *           WDT:  OFF                        *
; *            CP:  OFF			       *
; ****************************************************************************
; * This program uses and external R2R ladder network to generate complete   *
; * DTMF dial tones used for telphone dialing.				     *
; ****************************************************************************
; * Program Memory:	                                                     *
; * 		 220 Words - sine wave look-up table (7 sine waves total)    *
; *		  25 Words - keypad sine address matrix look-up	             *
; * 		  37 Words - DTMF sine wave base initialization/generation   *
; * 		   3 Words - Initialization				     *
; *		  25 Words - Test sample code				     *
; * RAM Memory:							             *
; *		   8 Bytes 						     *
; ****************************************************************************
	list     P=16C54,F=INHX8M,R=DEC
	#include p16c5x.inc
	__CONFIG _XT_OSC&_WDT_OFF&_CP_OFF

WAVEABASE       EQU     10h	; Base address of sine A waveform
POINTERA        EQU     11h	; Pointer to current position in sine A
WAVEBBASE       EQU     12h	; Base address of sine B waveform
POINTERB        EQU     13h	; Pointer to current position in sine B
NEXTVALUE       EQU     14h	; Sum register to store Sine A + Sine B
SINECOUNT       EQU     15h	; LSB counter for time to output DTMF
SINECOUNTH      EQU     16h	; MSB counter for time to output DTMF
TEMP		EQU	17h	; Temporary storage
ENDSINE         EQU     .127	; Value to show the end of a sine table
; ****************************************************************************
; * sinelookup								     *
; * This is the look-up table for the (4 X 3) keypad matrix sine wave table. *
; * There are (7) sine waves stored here and adding any two from the	     *
; * matrix will product a DTMF signal for the appropriate key		     *
; * Crystal Frequency:  3.579545 Mhz					     *
; * Instructions/Loop:  35						     *
; * Base Frequency:     1209 1336 1477  697  770  852  941 Hz 		     *
; * Actual Frequency:   1217 1345 1475  691  774  852  946 Hz		     *
; * Error                0.7  0.7 -0.1 -0.9  0.5    0  0.5 %		     *
; * Num Table Entries:    21   19   52   37   33   30   27		     *
; * Total Table Entries: 219						     *
; * Program Memory:	                                                     *
; * 		220 Words - Used for (7) sine look-up entries                *
; * RAM Memory:							             *
; *		NONE - Look-up table only				     *
; ****************************************************************************
sinelookup		; Used as address lable to call look-up table
    addwf      PCL,F	; Add sine offset to PC to jump into table
sineoffset		; Used to calculate offset value address
sinerow1		; Address for sine wave in row 1
    retlw      149
    retlw      170
    retlw      190
    retlw      208
    retlw      224
    retlw      236
    retlw      246
    retlw      253
    retlw      255
    retlw      254
    retlw      250
    retlw      242
    retlw      230
    retlw      216
    retlw      199
    retlw      180
    retlw      160
    retlw      138
    retlw      117
    retlw       95
    retlw       75
    retlw       56
    retlw       39
    retlw       25
    retlw       13
    retlw        5
    retlw        1
    retlw        0
    retlw        2
    retlw        9
    retlw       19
    retlw       31
    retlw       47
    retlw       65
    retlw       85
    retlw      106
    retlw      127	; End of this sine wave
sinerow2		; Address for sine wave in row 2
    retlw      152
    retlw      175
    retlw      197
    retlw      216
    retlw      232
    retlw      244
    retlw      252
    retlw      255
    retlw      254
    retlw      248
    retlw      238
    retlw      224
    retlw      207
    retlw      186
    retlw      164
    retlw      140
    retlw      115
    retlw       91
    retlw       69
    retlw       48
    retlw       31
    retlw       17
    retlw        7
    retlw        1
    retlw        0
    retlw        3
    retlw       11
    retlw       23
    retlw       39
    retlw       58
    retlw       80
    retlw      103
    retlw      127	; End of this sine wave
sinerow3		; Address for sine wave in row 3
    retlw      154
    retlw      180
    retlw      203
    retlw      223
    retlw      238
    retlw      249
    retlw      255
    retlw      255
    retlw      249
    retlw      238
    retlw      223
    retlw      203
    retlw      180
    retlw      154
    retlw      128
    retlw      101
    retlw       75
    retlw       52
    retlw       32
    retlw       17
    retlw        6
    retlw        0
    retlw        0
    retlw        6
    retlw       17
    retlw       32
    retlw       52
    retlw       75
    retlw      101
    retlw      127	; End of this sine wave
sinerow4		; Address for sine wave in row 4
    retlw      157
    retlw      185
    retlw      210
    retlw      230
    retlw      245
    retlw      254
    retlw      255
    retlw      250
    retlw      238
    retlw      221
    retlw      198
    retlw      171
    retlw      142
    retlw      113
    retlw       84
    retlw       57
    retlw       34
    retlw       17
    retlw        5
    retlw        0
    retlw        1
    retlw       10
    retlw       25
    retlw       45
    retlw       70
    retlw       98
    retlw      127	; End of this sine wave
sinecolumna		; Address for sine wave in column A
    retlw      165
    retlw      200
    retlw      228
    retlw      247
    retlw      255
    retlw      252
    retlw      238
    retlw      215
    retlw      183
    retlw      147
    retlw      108
    retlw       72
    retlw       40
    retlw       17
    retlw        3
    retlw        0
    retlw        8
    retlw       27
    retlw       55
    retlw       90
    retlw      127	; End of this sine wave
sinecolumnb		; Address for sine wave in column B
    retlw      169
    retlw      206
    retlw      235
    retlw      252
    retlw      255
    retlw      245
    retlw      222
    retlw      188
    retlw      149
    retlw      106
    retlw       67
    retlw       33
    retlw       10
    retlw        0
    retlw        3
    retlw       20
    retlw       49
    retlw       86
    retlw      127	; End of this sine wave
sinecolumnc		; Address for sine wave in column C (double sine wave)
    retlw      173
    retlw      212
    retlw      241
    retlw      255
    retlw      252
    retlw      233
    retlw      200
    retlw      158
    retlw      112
    retlw       68
    retlw       32
    retlw        8
    retlw        0
    retlw        8
    retlw       32
    retlw       68
    retlw      112
    retlw      158
    retlw      200
    retlw      233

⌨️ 快捷键说明

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