⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex8-6.asm

📁 DAC0832的示例程序,希望对大家有帮战哦!
💻 ASM
字号:
	ORG 0000H
START:	LJMP MAIN
	ORG 0003H           ;外部中断 入口
	LJMP INSER          ;转到中断服务程序
	ORG 0030H
MAIN:	MOV DPTR,#7FFFH     ;DAC0832地址
	SETB EX0            ;允许 中断
     	SETB IT0            ;负边沿触发方式
      	SETB EA             ;开中断
HERE: 	JB 20H.0,ST	    ;阶梯波处理
	JB 20H.1,TRI        ;三角波处理
	JB 20H.2,SQ         ;方波处理
	JB 20H.3,SIN        ;正弦波处理
	SJMP HERE           ;等待中断

INSER:	JNB P1.0, LL1       ;中断服务程序,查询按键
	SJMP L1
LL1:   	MOV 20H,#00H	    	
	SETB 20H.0          ;设置阶梯波标志
	SJMP RT
L1:   	JNB  P1.2, LL2
	SJMP L2
LL2:   	MOV 20H,#00H
	SETB 20H.1          ;设三角梯波标志          
	SJMP RT
L2:   	JNB P1.4, LL3
	SJMP L3
LL3:   	MOV 20H,#00H
	SETB 20H.2          ;设置方波标志          
	SJMP RT
L3:   	JNB P1.6, LL4
	SJMP RT
LL4:   	MOV 20H,#00H
	SETB 20H.3          ;设置正弦波标志          
RT:   	RETI                ;中断返回

ST:    MOV    A,#00H        ;阶梯波
LOOPP: MOVX   @DPTR,A       ;启动D/A转换
       INC    A
       JB     20H.0,LOOPP   ;连续输出波形
       LJMP   HERE                 

TRI:   MOV    A,#00H        ;三角波
UP:    MOVX   @DPTR,A       ;启动D/A转换
       INC    A             ;上升沿
       CJNE   A,#0FFH,UP
DOWN:  MOVX   @DPTR,A       ;启动D/A转换
       DEC    A             ;下降沿
       CJNE   A,#00H,DOWN
       JB     20H.1,  UP        ;连续输出波形
       LJMP   HERE

SQ:    MOV    A,#00H        ;方波
       MOVX   @DPTR,A       ;DAC输出低电平
       ACALL  DELAY         ;延时1
       MOV    A,#0FFH       
       MOVX   @DPTR,A       ;DAC输出高电平
       ACALL  DELAY         ;延时2                      
       JB     20H.2, SQ     ;连续输出波形             
       LJMP   HERE

SIN:    MOV DPTR,#SINTAB    ;正弦波
	MOV R0,#6DH
LOOP:   CLR A
	MOVC A,@A+DPTR
	MOV @R0,A
	INC DPTR
	INC R0
	CJNE R0,#80H,LOOP
	MOV DPTR,#7FFFH	    ;DAC0832端口地址
	MOV R0,#6DH
LOOP1:  MOV A,@R0	    ;取得第一个1/4周期的数据
	MOVX @DPTR,A	    ;送往DAC0832
	INC R0
	CJNE R0,#7FH,LOOP1
LOOP2:  MOV A,@R0   	    ;取得第二个1/4周期的数据
	MOVX @DPTR,A	    ;送往DAC0832
	DEC R0
	CJNE R0,#6DH,LOOP2
LOOP3: MOV A,@R0    	    ;取得第三个1/4周期的数据
	CPL A		    ;数据取反		
	MOVX @DPTR,A	    ;送往DAC0832
	INC R0
	CJNE R0,#7FH,LOOP3
LOOP4:  MOV A,@R0    	    ;取得第四个1/4周期的数据
	CPL A		    ;数据取反		
	MOVX @DPTR,A	    ;送往DAC0832
	DEC R0
	CJNE R0,#6DH,LOOP4
	JB 20H.3, LOOP1	    ;输出连续波形
	LJMP HERE
SINTAB: DB 7FH,89H,94H,9FH,0AAH,0B4H,0BEH,0C8H,0D1H,0D9H
	DB 0E0H,0E7H,0EDH,0F2H,0F7H,0FAH,0FCH,0FEH,0FFH

DELAY:  MOV    R4,#0FH         ;延时子程序
LOOP11: MOV    R5,#10H
LOOP22: NOP
NOP
NOP
DJNZ   R5,LOOP22
DJNZ   R4,LOOP11
RET

 	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -