1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > c51用汇编语言产生锯齿波 单片机产生四种波形并可任意切换的正弦波发生器汇编程序...

c51用汇编语言产生锯齿波 单片机产生四种波形并可任意切换的正弦波发生器汇编程序...

时间:2023-02-26 19:27:37

相关推荐

c51用汇编语言产生锯齿波 单片机产生四种波形并可任意切换的正弦波发生器汇编程序...

; Main.asm file generated by New Project wizard

; Created: 周五 5月 24

; Processor: AT89C52

; Compiler:ASEM-51 (Proteus)

;=====================================

$NOMOD51

$INCLUDE (80C52.MCU)

;======================================

; DEFINITIONS

; VARIABLES

; RESET and INTERRUPT VECTORS

;======================================

; Reset Vector

org 0000h

jmp Start

;=======================================

; CODE SEGMENT

;=======================================

org 0100h

Start:

;***R4=0锯齿波R4=1三角波R4=2正弦波R4=3方波R4=梯形波***

;***********************

; 锯齿波

;***********************

MOV R4,#0

J0: MOV A,#0

J0next: CJNER4,#0,S1 ;判断R4,不等0跳转产生三角波

MOVP2,A;P2赋值

LCALLdelay;延时

INCA ;增加A的值,产生锯齿波上升沿

JBP1.0,J0p11 ;扫描检测按键给R4赋值选择输出信号波形

MOVR4,#0;产生锯齿波信号

J0p11: JBP1.1,J0p12

MOVR4,#1;产生三角波信号

J0p12: JBP1.2,J0p13

MOVR4,#2;产生正弦波信号

J0p13: JBP1.3,J0p14

MOVR4,#3;产生方波信号

J0p14: JB P1.4,J0p15

MOVR4,#4;产生梯形波信号

J0p15: SJMP J0next

;***************************

; 三角波

;***************************

S1: MOVA,#0

S1n1: CJNER4,#1,Z3;判断R4,不等于1则跳转正弦波发生

MOVP2,A;产生三角波的上升沿

LCALLdelay;调用延时

INCA;增加A

JBP1.0,S11p11 ;扫描检测按键确定输出信号种类

MOV R4,#0;产生锯齿波信号

S11p11:JB P1.1,S11p12

MOV R4,#1 ;产生三角波信号

S11p12:JB P1.2,S11p13

MOV R4,#2 ;产生正弦波信号

S11p13:JB P1.3,S11p14

MOV R4,#3 ;产生方波信号

S11p14: JB P1.4,S1p1

MOV R4,#4 ;产生梯形波信号

S1p1: CJNEA,#255,S1n1

S1n2: CJNER4,#1,Z3

MOVP2,A ;产生三角波的下降沿

LCALL delay

DECA ;减小A

JBP1.0,S12p11 ;扫描检测按键状态确定输出信号波形

MOVR4,#0 ;产生锯齿波信号

S12p11:JBP1.1,S12p12

MOV R4,#1 ;产生三角波信号

S12p12:JBP1.2,S12p13

MOV R4,#2 ;产生正弦波信号

S12p13: JB P1.3,S12p14

MOVR4,#3;产生方波信号

S12p14: JB P1.4,S1p2

MOV R4,#4;产生梯形波信号

S1p2: CJNE A,#0,S1n2

SJMP S1n1

;**********************************

; 正弦波

;**********************************

Z3: MOVR0,#0

Z3NEXT: CJNE R4,#2,F4 ;判断R4,不等于2跳转输出方波

MOVA,R0

MOVDPTR,#TAB ;将正弦波的表头给DPTR,转到表格去查表

MOVC A,@A+DPTR

MOVP2,A

LCALL DELAY

INCR0

JBP1.0,Z3p11

MOVR4,#0

Z3p11:JB P1.1,Z3p12 ;扫描检测按键选择输出波形

MOVR4,#1

Z3p12:JB P1.2,Z3p13

MOV R4,#2

Z3p13:JB P1.3,Z3p14

MOV R4,#3

Z3p14:JB P1.4,Z3next

MOV R4,#4

SJMP Z3NEXT

;*******************************

;方波

;*******************************

F4: CJNER4,#3,T5 ;判断R4,不等于3则跳转梯形波

MOVA,#0

MOVP2,A

CALL FBDELAY

MOVA,#255

MOVP2,A

CALL FBDELAY

F40: JB P1.0,F41 ;扫描检测按键分别选择输出波形

MOV R4,#0

F41: JB P1.1,F42

MOV R4,#1

F42: JB P1.2,F43

MOV R4,#2

F43: JB P1.3,F44

MOV R4,#3

F44: JB P1.4,F4

MOV R4,#4

JMP F4

;*******************************

; 梯形波

;*******************************

T5: MOV A,#0

T5b: CJNE R4,#4,T51b ;判断R4,不等4则跳转

JMP T51b1

T51b: JMP J0 ;跳转到锯齿波那一步

T51b1:MOV P2,a

LCALL delay

INC A;产生梯形波的上升沿;

JB P1.0,T5b0 ;扫描检测按键选择输出波形

MOV R4,#0

T5b0: JB P1.1,T5b1

MOV R4,#1

T5b1: JB P1.2,T5b2

MOV R4,#2

T5b2: JB P1.3,T5b3

MOV R4,#3

T5b3: JB P1.4,T5b10

MOV R4,#4

T5b10: CJNEA,#255,T5b

LCALLfbdelay

T5b11: CJNE R4,#4,T52b

JMPT52b2

T52b: JMPJ0

T52b2: MOV P2,a

LCALL delay

DEC A;产生梯形波的下降沿

JBP1.0,T5b12 ;扫描检测按键选择输出波形

MOV R4,#0

T5b12: JBP1.1,T5b13

MOV R4,#1

T5b13: JBP1.2,T5b14

MOV R4,#2

T5b14: JBP1.3,T5b15

MOVR4,#3

T5b15: JBP1.4,T5b16

MOV R4,#4

T5b16: CJNEA,#0,T5b11

JMPT5

DELAY: MOV R6,#2 ;延时函数

D1:MOV R7,#20

DJNZR7,$

DJNZR6,D1

RET

fbdelay: MOVR1,#40 ;方波延时函数

D2: MOVR2,#255

DJNZ R2,$

DJNZ R1,D2

RET

;正弦波波形表

TAB:

DB 80H,83H,86H,89H,8DH,90H,93H,96H

DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH

DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H

DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H

DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H

DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H

DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH

DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH

DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH

DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H

DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH

DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH

DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H

DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H

DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H

DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H

DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H

DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H

DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH

DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H

DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H

DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH

DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H

DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H

DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H

DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H

DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H

DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H

DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H

DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH

DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H

DB 69H, 6CH, 6FH, 72H, 75H, 78H, 7bH, 7eH

Loop:

jmp Loop

;=============================================

END

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。