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

该博客详细介绍了如何使用C语言和汇编程序控制DAC0832芯片生成正弦波、三角波和方波。通过设置不同寄存器和调用延时函数,实现了波形的切换和调幅。此外,还提供了按键控制频率和幅度变化的功能。
摘要由CSDN通过智能技术生成

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值