|
这是我找的一段用单片机52和dac0832以及lm324 生成低频信号
求注释,谢谢了!答辩急用 本人邮箱www.lz94s@sina.com,谢谢!!
;按键KEY1:锯齿波 按键KEY2:三角波 按键KEY3: 正弦波
;按键KEY4: 方波;
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV SP,#50H
;利用dac0832产生锯齿波;
B1: MOV A,#00H
LP1:SETB P1.5
SETB P1.6
SETB P1.7
CLR P1.4
MOV DPTR,#4000H
MOVX @DPTR,A
CJNE A,#0F0H,MORE
JNB KEY2,B2
JNB KEY3,B3
JB KEY4,D0
LJMP B4
D0: SJMP B1
MORE:INC A
SJMP LP1
;利用dac0832产生三角波;
B2: MOV A,#00H
UP1:SETB P1.4
SETB P1.6
SETB P1.7
CLR P1.5
MOV DPTR,#4000H
MOVX @DPTR,A
INC A
JNZ UP1
DOWN1: DEC A
MOVX @DPTR,A
JNZ DOWN1
JNB KEY1,B1
JNB KEY3,B3
JB KEY4,C0
LJMP B4
C0: SJMP UP1
;利用dac0832产生正弦波;
B3: MOV R1,#00H ;取表格初值
;在表格里取数送到指定地址/////////////////////
LOOP1:SETB P1.4
SETB P1.5
SETB P1.7
CLR P1.6
MOV A,R1
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV DPTR,#4000H
MOVX @DPTR,A
INC R1;表格加一
JNB KEY1,B1
JNB KEY2,B2
JB KEY4,E0
LJMP B4
E0: AJMP LOOP1 ;循环
SETTAB:
;正弦表格/////////////////////////////////////
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, 76H, 79H, 7CH, 80H
;利用dac0832产生方波;
B4: MOV A,#00H
LP2:SETB P1.4
SETB P1.6
SETB P1.5
CLR P1.7
MOV DPTR,#4000H
MOVX @DPTR,A
LCALL DELY
MOV A,#0FFH
MOVX @DPTR,A
LCALL DELY
JB KEY1,J0
LJMP B1
J0: JB KEY2,J1
LJMP B2
J1: JB KEY3,J2
LJMP B3
J2: SJMP B4
DELY: MOV R7,#05H
DLY0: MOV R6,#00H
nop
DLY1: DJNZ R6,DLY1
DJNZ R7,DLY0
RET
DELAY: MOV R4,#100
DLAY0: MOV R3,#98
NOP
DLAY1: DJNZ R4,DLAY1
DJNZ R3,DLAY0
RET
KEY1 BIT P1.0
KEY2 BIT P1.1
KEY3 BIT P1.2
KEY4 BIT P1.3
END