新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机控制DAC0832输出正弦波三角波汇编程序

单片机控制DAC0832输出正弦波三角波汇编程序

作者:时间:2012-08-13来源:网络收藏
org 0000h
LJMP MAIN
ORG 0003H
LJMP L0
MAIN:MOV R2,#0aH ;调幅倍数
MOV R4,#01H ;增减选择
MOV R5,#01H
pp: SETB EA
SETB EX0 ;延时计数个数
MOV A,#0FFH ;读取波形状态
MOV P1,A
MOV A,P1
JNB ACC.0,ZXB ;P1.0=0 则选择
JNB ACC.1,SJB ;P1.1=0 则选择
JNB ACC.2,FB ;P1.2=0 则选择方 波
AJMP PP
ZXB:MOV R1,#00H
LOOP1:MOV A,R1
MOV DPTR,#TABLE1 ;读取数据首地址
MOVC A,@A+DPTR ;去表格数据
MOV B,R2
MUL AB ;幅度大小
INC R1
XCH A,R1
CLR C
SUBB A,#0AH ;是否已采样半个周期
JNC LK1 ;C=0跳转,即R1大于0A,以采样半个周期以上
ADD A,#0AH
XCH A,R1 ;还原R1
ADD A,#80H ;8OH为零点,取得正的幅度值
AJMP LK0
LK1:ADD A,#0AH
XCH A,R1
MOV R3,A
MOV A,#80H
CLR C
SUBB A,R3 ;80H为零点,取得负的幅度值
LK0:MOV DPTR,#8000H ;送DA转换入口地址
MOVX @DPTR,A
MOV A,R5
KD:DEC R5 ;调用延时
CALL DELAY
CJNE R5,#00H,KD
MOV R5,A
CJNE R1,#12H,LOOP1
LJMP PP
FB:MOV R1,#00H
LOOP2:MOV A,R1
MOV DPTR,#TABLE2 ;读取方波数据首地址
MOVC A,@A+DPTR ;去表格数据
MOV B,R2
MUL AB ;幅度大小
INC R1
XCH A,R1
CLR C
SUBB A,#0AH ;是否已采样半个周期
JNC LK3 ;C=0跳转,即R1大于0A,以采样半个周期以上
ADD A,#0AH
XCH A,R1 ;还原R1
ADD A,#80H ;8OH为零点,取得正的幅度值
AJMP LK2
LK3:ADD A,#0AH
XCH A,R1
MOV R3,A
MOV A,#80H
CLR C
SUBB A,R3 ;80H为零点,取得负的幅度值
LK2:MOV DPTR,#8000H ;送DA转换入口地址
MOVX @DPTR,A
MOV A,R5
KD0:DEC R5 ;调用延时
CALL DELAY
CJNE R5,#00H,KD0
MOV R5,A
CJNE R1,#12H,LOOP2
LJMP PP
SJB:MOV R1,#00H
LOOP3:MOV A,R1
MOV DPTR,#TABLE3 ;读取波数据首地址
MOVC A,@A+DPTR ;去表格数据
MOV B,R2
MUL AB ;幅度大小
INC R1
XCH A,R1
CLR C
SUBB A,#0DH ;是否已采样半个周期
JNC LK5 ;C=0跳转,即R1大于D,以采样半个周期以上
ADD A,#0DH
XCH A,R1 ;还原R1
ADD A,#80H ;8OH为零点,取得正的幅度值
AJMP LK4
LK5:ADD A,#0DH
XCH A,R1
MOV R3,A
MOV A,#80H
CLR C
SUBB A,R3 ;80H为零点,取得负的幅度值
LK4:MOV DPTR,#8000H ;送DA转换入口地址
MOVX @DPTR,A
KD1:MOV A,R5
DEC R5 ;调用延时
CALL DELAY
CJNE R5,#00H,KD1
MOV R5,A
CJNE R1,#18H,LOOP3
LJMP PP
DELAY:NOP
RET
L0:CLR EA
PUSH A
PUSH PSW
JB P1.3,L1 ;中断子程序
CJNE R4,#00H,KL0
INC R4
SJMP LD0
KL0:MOV R4,#00H
LD0:JNB P1.3,LD0 ;判断键是否松开
LJMP LEND
L1:JB P1.4,L2
MOV A,R4
JNZ KL1 ;判断幅度是增还是减
CJNE R2,#0AH,KK0 ;判断幅度是否达到最大
SJMP LD1
KK0:INC R2 ;幅度增加0.5V
SJMP LD1
KL1:CJNE R2,#00H,KK1
SJMP LD1
KK1:DEC R2 ;幅度减小0.5V
LD1:JNB P1.4,LD1
LJMP LEND
L2:JB P1.5 ,LEND
MOV A,R4
JNZ KL2 ;判断频率的增减
MOV A,#05H ;每次周期变化20微秒
CLR C
ADD A,R5
JC LD2
MOV R5,A
LJMP LD2
KL2:MOV A,R5
CLR C
SUBB A,#05H
JC LD2
MOV R5,A
LD2:JNB P1.5,LD2
LEND:POP PSW
POP A
SETB EA
RETI
TABLE1:DB 00H,04H,08H,0bH,0cH,0cH,0bH,08H,04H,00H,04H,08H,0bH,0cH,0cH,0bH,08H ,04H
TABLE2:DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,0CH,0CH,0CH,0CH,0CH,0CH,0CH,0CH ,0CH
TABLE3:DB 00H,02H,04H,06H,08H,0AH,0CH,0AH,08H,06H,04H,02H,00H,02H,04H,06H,08H,0AH,0CH,0AH


评论


相关推荐

技术专区

关闭