dac0832三角波c语言程序,单片机控制DAC0832输出正弦波三角波汇编程序.docx

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

org OOOOh

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 ACCQZXB

JNB ACC.1,SJB

JNB ACC.2,FB

AJMP PP

ZXB:MOV R1,#00H

LOOP1:MOV A,R1

;调幅倍数

;增减选择

;延时计数个数

;读取波形状态

;P1.0=0则选择正弦波

;P1.1=0则选择三角波

;P1.2=0则选择方波

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大于OA,以采样半个

周期以上

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,#12 ML OOP1

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,#12 ML OOP2

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:M0V A,R5

DEC R5;调用延时

CALL DELAY

CJNE R5,#00H,KD1

MOV R5,A

CJNE R1,#18 ML OOP3

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

KKO: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 丄 END

MOV A,R4

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值