c51用汇编语言产生锯齿波,单片机产生四种波形并可任意切换的正弦波发生器汇编程序...
; Main.asm file generated by New Project wizard
; Created:? ?周五 5月 24 2019
; 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:? ?? ?? ? CJNE? ?? ?? ?? ?? ? R4,#0,S1? ? ;判斷R4,不等0跳轉產生三角波
MOV? ?? ?? ?? ?? ? P2,A? ?? ?? ?? ?? ???;P2賦值
LCALL? ?? ?? ?? ?? ? delay? ?? ?? ?? ?? ???;延時
INC? ?? ?? ?? ?? ? A? ?? ?? ?? ?? ?? ?? ?;增加A的值,產生鋸齒波上升沿
JB? ?? ?? ?? ?? ? P1.0,J0p11? ?? ?? ?;掃描檢測按鍵給R4賦值選擇輸出信號波形
MOV? ?? ?? ?? ?? ? R4,#0? ?? ?? ?? ?? ???;產生鋸齒波信號
J0p11:? ?? ?? ? JB? ?? ?? ?? ?? ? P1.1,J0p12
MOV? ?? ?? ?? ?? ? R4,#1? ?? ?? ?? ? ;產生三角波信號
J0p12:? ? JB? ?? ?? ?? ?? ? P1.2,J0p13
MOV? ?? ?? ?? ?? ? R4,#2? ?? ?? ?? ?? ?? ?;產生正弦波信號
J0p13:? ?? ?? ? JB? ?? ?? ?? ?? ? P1.3,J0p14
MOV? ?? ?? ?? ?? ?? ?R4,#3? ?? ?? ?? ?? ?? ?;產生方波信號
J0p14:? ?? ?? ? JB? ?? ?? ?? ?? ?? ? P1.4,J0p15
MOV? ?? ?? ?? ?? ? R4,#4? ?? ?? ?? ?? ?? ?;產生梯形波信號
J0p15:? ?? ?? ?SJMP? ?? ?? ?? ?J0next
;***************************
;? ?? ?? ? 三角波
;***************************
S1:? ?? ? MOV? ?? ?? ?? ?? ? A,#0
S1n1:? ?? ?? ? CJNE? ?? ?? ?? ?? ? R4,#1,Z3? ?? ?? ?? ?? ? ;判斷R4,不等于1則跳轉正弦波發生
MOV? ?? ?? ?? ?? ? P2,A? ?? ?? ?? ?? ?? ???;產生三角波的上升沿
LCALL? ?? ?? ?? ?? ???delay? ?? ?? ?? ?? ?? ???;調用延時
INC? ?? ?? ?? ?? ? A? ?? ?? ?? ?? ?? ???;增加A
JB? ?? ?? ?? ?? ? P1.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:? ? CJNE? ?? ?? ?? ?? ?? ?A,#255,S1n1
S1n2:? ? CJNE? ?? ?? ?? ?? ???R4,#1,Z3
MOV? ?? ?? ?? ?? ? P2,A? ?? ?? ?? ?? ?? ?? ?? ?;產生三角波的下降沿
LCALL? ?delay
DEC? ?? ?? ?? ?? ? A? ?? ?? ?? ?? ?? ?? ?? ?;減小A
JB? ?? ?? ?? ?? ? P1.0,S12p11? ?? ?? ?;掃描檢測按鍵狀態確定輸出信號波形
MOV? ?? ?? ?? ?? ? R4,#0? ?? ?? ?? ?? ?? ?? ?? ?;產生鋸齒波信號
S12p11:??JB? ?? ?? ?? ?? ? P1.1,S12p12
MOV? ?? ???R4,#1? ?? ?? ?? ?? ?? ?? ?? ???;產生三角波信號
S12p12:??JB? ?? ?? ?? ?? ? P1.2,S12p13
MOV? ?? ???R4,#2? ?? ?? ?? ?? ?? ?? ?? ?;產生正弦波信號
S12p13:? ?? ?? ?JB? ???P1.3,S12p14
MOV? ?? ?? ?? ? R4,#3? ?? ?? ?? ?? ?? ?;產生方波信號
S12p14:? ?? ?? ? JB? ?? ?? ?? ???P1.4,S1p2
MOV? ? R4,#4? ?? ?? ?? ?? ?? ?;產生梯形波信號
S1p2:? ?? ? CJNE? ?? ???A,#0,S1n2
SJMP? ?? ???S1n1
;**********************************
;? ?? ?? ?? ?? ?? ?? ?正弦波
;**********************************
Z3:? ?? ?? ? MOV? ?? ?? ?? ?? ? R0,#0
Z3NEXT:? ?? ?? ?CJNE? ?? ???R4,#2,F4? ? ;判斷R4,不等于2跳轉輸出方波
MOV? ?? ?? ?? ?? ? A,R0
MOV? ?? ?? ?? ?? ? DPTR,#TAB? ?;將正弦波的表頭給DPTR,轉到表格去查表
MOVC? ?? ???A,@A+DPTR
MOV? ?? ?? ?? ?? ? P2,A
LCALL? ?? ?? ? DELAY
INC? ?? ?? ?? ?? ? R0
JB? ?? ?? ?? ?? ? P1.0,Z3p11
MOV? ?? ?? ?? ?? ? R4,#0
Z3p11:??JB? ?? ???P1.1,Z3p12? ?? ???;掃描檢測按鍵選擇輸出波形
MOV? ?? ?? ?? ?? ?? ?R4,#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:? ? CJNE? ?? ?? ?? ?? ???R4,#3,T5? ?? ?? ? ;判斷R4,不等于3則跳轉梯形波
MOV? ?? ?? ?? ?? ???A,#0
MOV? ?? ?? ?? ?? ???P2,A
CALL? ?? ?? ?FBDELAY
MOV? ?? ?? ?? ?? ???A,#255
MOV? ?? ?? ?? ?? ???P2,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:? ?CJNE? ?? ?? ?? ?? ?? ???A,#255,T5b
LCALL? ?? ?? ?? ? fbdelay
T5b11:? ?CJNE? ?? ?? ???R4,#4,T52b
JMP? ?? ?? ?? ?? ?T52b2
T52b:? ? JMP? ?? ?? ?? ?? ?J0
T52b2:? ?? ?? ?MOV? ?? ?? ?? ???P2,a
LCALL? ?? ?? ? delay
DEC? ?? ?? ?? ?A? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ;產生梯形波的下降沿
JB? ?? ?? ?? ? P1.0,T5b12? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ;掃描檢測按鍵選擇輸出波形
MOV? ?? ?? ???R4,#0
T5b12:? ? JB? ?? ?? ?? ? P1.1,T5b13
MOV? ?? ?? ???R4,#1
T5b13:? ? JB? ?? ?? ?? ? P1.2,T5b14
MOV? ?? ? R4,#2
T5b14:? ? JB? ?? ?? ?? ? P1.3,T5b15
MOV? ?? ?? ?? ? R4,#3
T5b15:? ? JB? ?? ?? ?? ?? ???P1.4,T5b16
MOV? ?? ?? ?? ???R4,#4
T5b16:? ?CJNE? ?? ?? ?? ?? ?? ?A,#0,T5b11
JMP? ?? ?? ?? ?? ???T5
DELAY:? ?? ?? ???MOV? ?? ?? ? R6,#2? ?? ?? ?? ?? ?? ?? ?;延時函數
D1:? ?? ?? ?? ?? ? MOV? ?? ?? ? R7,#20
DJNZ??R7,$
DJNZ??R6,D1
RET
fbdelay:? ?MOV??R1,#40? ?? ?? ?? ?? ?? ?? ? ;方波延時函數
D2:? ?? ???MOV??R2,#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
總結
以上是生活随笔為你收集整理的c51用汇编语言产生锯齿波,单片机产生四种波形并可任意切换的正弦波发生器汇编程序...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新概念英语 Lesson 18
- 下一篇: Arduino--Mixly-智能楼道灯