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

📄 sin.asm

📁 实验 正弦波(三角波)发生器 含汇编源代码 已验证
💻 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 + -