📄 datra.txt
字号:
BUFRAM EQU 7E00H ;8155RAM首地址
BUFADC EQU 0FD1FH ;0809启动地址
BUFDAC EQU 0BFFH ;0832启动地址
K1 EQU P1.4 ; 四个频率选择按键
K2 EQU P1.5
K3 EQU P1.6
K4 EQU P1.7
ORG 0000H
LJMP START
ORG 0030H
START: MOV R4,#02 ;由于8155的复位时间比8051慢,所以在对8155初始化之前必须
延时
DEL11:MOV R6,#200 ; 延时为021s的倍
DEL21:MOV R7,#126
DEL31:DJNZ R7,DEL31
DJNZ R6,DEL21
DJNZ R5,DEL11
MOV DPTR,#7FF8H ; 8155初始化
MOV A,#00H ; 写入命令字
MOVX @DPTR,A
MOV R0,#0FAH
MOV DPTR,#BUFRAM
LOOP:MOVX @DPTR,A ;对8155RAM清零
INC DPTR
DJNZ R0,LOOP
FRESET:MOV P1,#0FFH ;准备读取P1 口状态
JB K1,NEXT1 ; 依次判断按下了哪一个按键
MOV BUFFRE,#02H ;送相应的频率设置到31内存单元
LJMP INPUT
NEXT1:JB K2,NEXT2
MOV BUFFRE,#04H
LJMP INPUT
NEXT2:JB K3,NEXT3
MOV BUFFRE,#08H
LJMP INPUT
NEXT3:JB K4,NEXT4
MOV BUFFRE,#06H
LJMP REALIO ;如果是K4按下,则进行实时输入输出
NEXT4:LJMP FRESET ; 循环等待按键按下
INPUT: ; A/D采样程序
MOV R0,#0FAH ;共采集250个数据
MOV DPTR,#BUFRAM ; 8155RAM首地址
LOOP1:PUSH DPL ; 先保存次地址
PUSH DPH
MOV DPTR,#BUFADC ; 0809启动地址
MOV A,#00H
MOVX @DPTR,A ; 启动0809 A/D转换开始
NOP ; 一定时间延时
NOP
WAIT:JB P1.0,WAIT ; 等待转换结束
MOVX A,@DPTR ;读取转换结果
POP DPH
POP DPL ;恢复RAM地址
MOVX @DPTR,A ; 保存数据至8155RAM
INC DPTR ;RAM地址加一,指向下一个存储单元
ACALL DELAY ; 延时,即以一定频率采样
DJNZ R0,LOOP1 ; 250个数据是否采集完成,否则继续
OUTPUT: ; D/A转换模块
MOV R1,#0FAH ;250个数据
MOV DPTR,#BUFRAM ; 8155RAM首地址
LOOP2: PUSH DPL ; 保存此地址
PUSH DPH
MOVX A,@DPTR ;将数据输出到A中
MOV DPTR,#BUFDAC ; 0832地址
MOVX @DPTR,A ;将数据输出进行D/A转换
NOP ;为了与采样频率一直,设定一定延时
NOP
POP DPH ;恢复RAM地址
POP DPL
INC DPTR ;指向下一个要转换的数据单元
ACALL DELAY ; 与采样相同延时
DJNZ R1,LOOP2 ; 直道转换完成
WAIT2:JNB K4,NEXT
LJMP OUTPUT ;循环显示输出结果
NEXT:LJMP REALIO
DELAY:MOV R5,BUFFRE ;延时程序,通过R5的不同,改变延时时间,从而改变
DEL1:MOV R6,#2 ; 延时为0.001s的倍
DEL2:MOV R7,#126
DEL3:DJNZ R7,DEL3
DJNZ R6,DEL2
DJNZ R5,DEL1
RET
REALIO: ;实时显示程序
MOV DPTR,#BUFADC
MOV A,#00H
MOVX @DPTR,A
NOP
NOP
WAIT1:JB P1.0,WAIT1
MOVX A,@DPTR
MOV DPTR,#BUFDAC
MOVX @DPTR,A
NOP
NOP
FRESET1:MOV P1,#0FFH ;准备读取P1 口状态
JB K1,NEXT11 ; 依次判断按下了哪一个按键
MOV BUFFRE,#02H ;送相应的频率设置到31内存单元
LJMP INPUT
NEXT11:JB K2,NEXT12
MOV BUFFRE,#04H
LJMP INPUT
NEXT12:JB K3,NEXT13
MOV BUFFRE,#08H
LJMP INPUT
NEXT13:LJMP REALIO
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -