本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
ORG 0000H
START: LJMP MAIN
ORG 0003H ;外部中断 入口
LJMP INSER ;转到中断服务程序
ORG 0030H
MAIN: MOV DPTR,#1FFFH ;DAC0832地址
SETB EX0 ;允许 中断
SETB IT0 ;负边沿触发方式
SETB EA ;开中断
HERE: JB 20H.0,ST ;锯齿波处理
JB 20H.1,TRI ;三角波处理
JB 20H.2,SQ ;方波处理
JB 20H.3,TXB ;梯形波处理
SJMP HERE ;等待中断
INSER: JNB P1.0, LL1 ;中断服务程序,查询按键
SJMP L1
LL1: MOV 20H,#00H
SETB 20H.0 ;设置锯齿波标志
SJMP RT
L1: JNB P1.1, LL2
SJMP L2
LL2: MOV 20H,#00H
SETB 20H.1 ;设三角梯波标志
SJMP RT
L2: JNB P1.2, LL3
SJMP L3
LL3: MOV 20H,#00H
SETB 20H.2 ;设置方波标志
SJMP RT
L3: JNB P1.3, 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
TXB:
MOV A,#00H
MOVX @DPTR,A
ACALL DELAY
LOOP: MOVX @DPTR,A
INC A
CJNE A,#0FFH,LOOP
ACALL DELAY
MOVX @DPTR,A
LOOP1: DEC A
MOVX @DPTR,A
CJNE A,#00H,LOOP1
MOVX @DPTR,A
ACALL DELAY
JB 20H.3,LOOP
DELAY: MOV R4,#0FH ;延时子程序
LOOP11: MOV R5,#50H
LOOP22: NOP
NOP
NOP
DJNZ R5,LOOP22
DJNZ R4,LOOP11
RET
END |
|