📄 sin.asm
字号:
;*****************************
; ;*
; 正弦波(三角波)发生器 ;*
; 12MHZ晶振 ;*
; 2005.08.3 ;*
; ;*
;*****************************
;
;正弦波发生器,key0口按键减小输出频率,key1口按键增加输出频率
;sinout口输出正弦波,(cosout口输出余弦波),使用定时器T0,16位定时模式。
;R6、R7用作10毫秒延时寄存器。Fout输出方波
;
key0 bit P3.3 ;按键
key1 bit P3.4 ;按键
sinout EQU P2 ;正弦波输出
;cosout EQU p0 ;余弦波输出
FOUT BIT P0.2 ;方波输出
SINP DATA 30H ;正弦波查表指针
;COSP DATA 31H ;余弦波查表指针
TH0D DATA 32H ;定时器初值存放(高8位)
TL0D DATA 33H ;定时器初值存放(低8位)
;
ORG 0000H
LJMP START
ORG 000BH
LJMP INTT0
;
ORG 0060H
;
START: MOV SP,#70H
MOV SINP,#00H
; MOV COSP,#40H
MOV TMOD,#11H
MOV TH0D,#0FFH ;初值,决定波形频率
MOV TL0D,#00H
MOV TH0,TH0D
MOV TL0,TL0D
MOV DPTR,#LIST
SETB ET0
SETB EA
SETB TR0
MAIN: JNB key0,INCKEY
JNB key1,DECKEY
ORL PCON,#01H
LJMP MAIN
; 按键功能,输出频率减小
INCKEY:LCALL DL10MS
JB key0,MAIN
MOV A,TL0D
CJNE A,#0FFH,INC1
LJMP MAIN
INC1: INC TL0D
LJMP MAIN
; 按键功能,输出频率增大
DECKEY:LCALL DL10MS
JB key1,MAIN
MOV A,TL0D
CJNE A,#00H,DEC1
LJMP MAIN
DEC1: DEC TL0D
LJMP MAIN
; 定时器T0中断程序
INTT0: PUSH ACC
CPL Fout ;方波输出,作辅助功能用
MOV TH0,TH0D
MOV TL0,TL0D
MOV A,SINP
MOVC A,@A+DPTR
MOV sinout,A ;正弦波从sinout口输出
; MOV A,COSP
; MOVC A,@A+DPTR ;
; MOV cosout,A ;余弦波从cosout口输出
INC SINP
; INC COSP
POP ACC
RETI
; 10毫秒延时程序
DL512: MOV R7,#0FFH
LOOP: DJNZ R7,LOOP
RET
DL10MS:MOV R6,#14H
LOOP1: LCALL DL512
DJNZ R6,LOOP1
RET
; 正弦函数表(共256个点,每点1.40625度)
LIST: DB 80H,83H,85H,88H,8AH,8DH,8FH,92H
DB 94H,97H,99H,9BH,9EH,0A0H,0A3H,0A5H
DB 0A7H,0AAH,0ACH,0AEH,0B1H,0B3H,0B5H,0B7H
DB 0B9H,0BBH,0BDH,0BFH,0C1H,0C3H,0C5H,0C7H
DB 0C9H,0CBH,0CCH,0CEH,0D0H,0D1H,0D3H,0D4H
DB 0D6H,0D7H,0D8H,0DAH,0DBH,0DCH,0DDH,0DEH
DB 0DFH,0E0H,0E1H,0E2H,0E3H,0E3H,0E4H,0E4H
DB 0E5H,0E5H,0E6H,0E6H,0E7H,0E7H,0E7H,0E7H
DB 0E7H,0E7H,0E7H,0E7H,0E6H,0E6H,0E5H,0E5H
DB 0E4H,0E4H,0E3H,0E3H,0E2H,0E1H,0E0H,0DFH
DB 0DEH,0DDH,0DCH,0DBH,0DAH,0D8H,0D7H,0D6H
DB 0D4H,0D3H,0D1H,0D0H,0CEH,0CCH,0CBH,0C9H
DB 0C7H,0C5H,0C3H,0C1H,0BFH,0BDH,0BBH,0B9H
DB 0B7H,0B5H,0B3H,0B1H,0AEH,0ACH,0AAH,0A7H
DB 0A5H,0A3H,0A0H,9EH,9BH,99H,97H,94H
DB 92H,8FH,8DH,8AH,88H,85H,83H,80H
DB 7DH,7BH,78H,76H,73H,71H,6EH,6CH
DB 69H,67H,65H,62H,60H,5DH,5BH,59H
DB 56H,54H,52H,4FH,4DH,4BH,49H,47H
DB 45H,43H,41H,3FH,3DH,3BH,39H,37H
DB 35H,34H,32H,30H,2FH,2DH,2CH,2AH
DB 29H,28H,26H,25H,24H,23H,22H,21H
DB 20H,1FH,1EH,1DH,1DH,1CH,1CH,1BH
DB 1BH,1AH,1AH,1AH,19H,19H,19H,19H
DB 19H,19H,19H,19H,1AH,1AH,1AH,1BH
DB 1BH,1CH,1CH,1DH,1DH,1EH,1FH,20H
DB 21H,22H,23H,24H,25H,26H,28H,29H
DB 2AH,2CH,2DH,2FH,30H,32H,34H,35H
DB 37H,39H,3BH,3DH,3FH,41H,43H,45H
DB 47H,49H,4BH,4DH,4FH,52H,54H,56H
DB 59H,5BH,5DH,60H,62H,65H,67H,69H
DB 6CH,6EH,71H,73H,76H,78H,7BH,7DH
; 三角波函数表
LIST1: DB 80H,81H,82H,83H,84H,85H,86H,87H
DB 88H,89H,8AH,8BH,8CH,8DH,8EH,8FH
DB 90H,91H,92H,93H,94H,95H,96H,97H
DB 98H,99H,9AH,9BH,9CH,9DH,9EH,9FH
DB 0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7H
DB 0A8H,0A9H,0AAH,0ABH,0ACH,0ADH,0AEH,0AFH
DB 0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H
DB 0B8H,0B9H,0BAH,0BBH,0BCH,0BDH,0BEH,0BFH
DB 0BFH,0BEH,0BDH,0BCH,0BBH,0BAH,0B9H,0B8H
DB 0B7H,0B6H,0B5H,0B4H,0B3H,0B2H,0B1H,0B0H
DB 0AFH,0AEH,0ADH,0ACH,0ABH,0AAH,0A9H,0A8H
DB 0A7H,0A6H,0A5H,0A4H,0A3H,0A2H,0A1H,0A0H
DB 9FH,9EH,9DH,9CH,9BH,9AH,99H,98H
DB 97H,96H,95H,94H,93H,92H,91H,90H
DB 8FH,8EH,8DH,8CH,8BH,8AH,89H,88H
DB 87H,86H,85H,84H,83H,82H,81H,80H
DB 7FH,7EH,7DH,7CH,7BH,7AH,79H,78H
DB 77H,76H,75H,74H,73H,72H,71H,70H
DB 6FH,6EH,6DH,6CH,6BH,6AH,69H,68H
DB 66H,66H,65H,64H,63H,62H,61H,60H
DB 5FH,5EH,5DH,5CH,5BH,5AH,59H,58H
DB 55H,55H,55H,54H,53H,52H,51H,50H
DB 4FH,4EH,4DH,4CH,4BH,4AH,49H,48H
DB 44H,44H,45H,44H,43H,42H,41H,40H
DB 40H,41H,42H,43H,44H,45H,46H,47H
DB 48H,49H,4AH,4BH,4CH,4DH,4EH,4FH
DB 50H,51H,52H,53H,55H,55H,56H,57H
DB 58H,59H,5AH,5BH,5CH,5DH,5EH,5FH
DB 60H,61H,62H,63H,66H,65H,66H,67H
DB 68H,69H,6AH,6BH,6CH,6DH,6EH,6FH
DB 70H,71H,72H,73H,77H,75H,76H,77H
DB 78H,79H,7AH,7BH,7CH,7DH,7EH,7FH
;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -