基于单片机的函数信号发生器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

源程序:

ORG 0000H

AJM MAIN

ORG 000BH

LJMP TC0

ORG 0030H

MAIN:MOV DPTR,#9FFFH 指向DAC0832(1)

MOV A,70H

MOVX @DPTR,A DAC0832(1)输出

MOV DPTR,#7F00H 指向8155命令字端口地址

MOV A,#06H 设置A口为输入,B口、C口为输出MOVX @DPTR,A 送命令字

MOV DPTR,#7F01H 指向A口地址

MOVX A,@DPTR 读入A口的开关数据

JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP MAIN

LED1:MOV R3,#06H 设置6个LED显示

MOV R2,#01H 选通第一位LED数据

MOV R1,#30H 送显示缓冲区首址

GN1:MOV DPTR,#7F03H 指向C口地址

MOV A,R2 位选通数据送A

MOVX @DPTR,A 位选通数据送C口

RL A 选通下一位

MOV R2,A 位选通数据送R2中保存

MOV A,@R1 取键值

MOV DPTR,#TAB 送LED显示软件译码表首址

MOVC A,@A+DPTR 查表求出键值显示的段码

MOV DPTR,#7F02H 指向B口地址

MOV @DPTR,A 段码送显示

LCALL LOOP1 调延时子程序

INC R1 指向下一位显示缓冲区地址DJNZ R3,GN1 循环显示6个LED

RET

LOOP1:MOV R4,#08H 延时子程序

LOOP:MOV R5,#0A0H

DJNZ R5,$

DJNZ R4,LOOP

RET

K10H:MOV 30H,#00H 显示10Hz

MOV 31H,#00H

MOV 32H,#00H

MOV 33H,#00H

MOV 34H,#01H

MOV 35H,#00H

LCALL LED1 调显示子程序

MOV TMOD,#00H

MOV TL0,#15H

MOV TH0,#9EH

AJMP PD

K100H:MOV 30H,#00H 显示100Hz

MOV 31H,#00H

MOV 32H,#00H

MOV 33H,#01H

MOV 34H,#00H

MOV 35H,#00H

LCALL LED1 调显示子程序

MOV TMOD,#00H

MOV TL0,#08H

MOV TH0,#0F6H

AJMP PD

K500H:MOV 30H,#00H 显示500Hz

MOV 31H,#00H

MOV 32H,#00H

MOV 33H,#05H

MOV 34H,#00H

MOV 35H,#00H

LCALL LED1 调显示子程序

MOV TMOD,#00H

MOV TL0,#01H

MOV TH0,#0FEH

AJMP PD

K1K:MOV 30H,#00H 显示1KHz

MOV 31H,#00H

MOV 32H,#01H

MOV 33H,#00H

MOV 34H,#00H

MOV 35H,#00H

LCALL LED1 调显示子程序

MOV TMOD,#00H

MOV TL0,#01H

MOV TH0,#0FFH

PD:JNB ACC.0,KE0 判断是否“0”号键按下,若是则转方波输出JNB ACC.1,KE1 判断是否“1”号键按下,若是则转正弦方波输出JNB ACC.2,KE2 判断是否“2”号键按下,若是则转三角波输出JNB ACC.3,KE3 判断是否“3”号键按下,若是则转锯齿波输出LJMP PD

KE0:MOV R7,#00H

LCALL LED1 调显示子程序

MOV R6,#00H

AJMP GN

KE1:MOV R7,#02H

LCALL LED1 调显示子程序

MOV R6,#00H

AJMP GN

KE2:MOV R7,#02H

LCALL LED1 调显示子程序

MOV R6,#00H

AJMP GN

KE3:MOV R7,#02H

LCALL LED1 调显示子程序

MOV R6,#00H

GN:SETB TR0

SETB ET0

SETB EA

LOP1:JNB ACC.4,K10H 判断是否“4”号键,若是则转输出10Hz信号JNB ACC.5,K100H 判断是否“5”号键,若是则转输出100Hz信号JNB ACC.6,K500H 判断是否“6”号键,若是则转输出500Hz信号JNB ACC.7,K1K 判断是否“7”号键,若是则转输出1KHz信号AJMP LOP1

TC0:CJNE R7,#00H,TC1 发送方波程序

MOV DPTR,#TAB1 送方波数据表首址

MOV A,R6 发送数据寄存器

MOVC A,@A+DPTR

MOV DPTR,#0AFFFH 指向DAC0832(2)

MOVX @DPTR,A DAC0832(2)输出

MOV A,R6

INC A

相关文档
最新文档