找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4901|回复: 0
收起左侧

[讨论]实验台的数据采集系统

[复制链接]
ID:10248 发表于 2009-10-30 19:17 | 显示全部楼层 |阅读模式

请高手看看我做的实验台的数据采集系统,看看下面的程序哪里有问题??????? 图一,为硬件电路图, 图二,为计算机方面的软件界面(用VB做的) 1.jpg 未命名.jpg

 

;======================
; 设置波特率
;======================
 ORG 0000H
 AJMP MAIN
 ORG 0003H
 AJMP ADZD
MAIN:
 MOV TMOD,#20H           ;令定时器1工作于模式2
 MOV TH1,#0FDH
 MOV TL1,#0FDH            ;设定计数值,令波特率为9600
 SETB TR1                      ;启动定时器1
 SETB   IT0                     ;为边沿触发方式
 SETB EA                        ;开中断
 SETB EX0                      ;允许中断
;======================
; 接收数据
;======================
 MOV SCON,#70H             ;设定串行端口为模式1
LOOP:   CLR RI                 ;清除接收中断标志位(开始接收数据)
 JNB RI,$                          ;等待数据接收完毕

;======================
; 判断哪个按钮被按下
;======================
 MOV A,SBUF                                ;接收到的数据(即代码)存入A内

NEXT1: CJNE A,#'1',NEXT0            ;若代码为1(即“开始”按钮被按下)
 AJMP ADZH                                  ;则调用AD转换模块

NEXT0:  CJNE A,#'0',DONT            ;若代码为0(即“复位”按钮被按下)
 AJMP ALLOFF                                ;则跳去执行ALLOFF

DONT: AJMP LOOP                          ;重复执行程序

;====================================================
; 执行相应的程序
;====================================================

;AD转换模块
ADZH:
 MOV R0,#30H                ;存数据首地址
 SETB P3.7                     ;经与非门后使R/C=0
 CLR P3.6                       ;经与非门后使CE=1
 MOV DPTR,#3FFFH            ;使AO=0,CS=0,启动12位转换
 MOVX @DPTR,A              ;启动AD转换
HERE: AJMP HERE             ;等待中断
ADZD: 
 PUSH PSW
 PUSH DPH
 PUSH DPL
 PUSH ACC                        ;保护现场
 CLR P3.7                          ;经与非门后使R/C=1
 MOV DPTR,#3FFFH            ;允许高8位并行输出(CS=0,R/C=1,AO=0)
 MOVX A,@DPTR                ;读高8位
 MOV @R0,A                      ;高8位存入RAM单元
 MOV DPTR,#7FFFH            ;允许低4位加上4个0输出(CS=0,R/C=1,AO=1)
 MOVX A,@DPTR                ;读低4位
 ANL A,#0FH                      ;屏蔽高4位随机数据
 INC R0                               ;数据地址加1
 MOV @R0,A                       ;存低4位
 POP ACC                           ;恢复现场
 POP DPL
 POP DPH
 POP PSW
 RETI
 AJMP SENDON

 ;复位按钮的相应程序
ALLOFF: MOV     P0,#00H         ;数据清零
        AJMP    SENDALL             ;发送代码1

;====================================================
; 发送数据
;====================================================
;发送代码0
SENDALL:
 CLR TI                        ;清除发送中断标志位(准备发送数据)
 MOV SBUF,#'0'            ;发送代码2
 JNB TI,$                      ;等待数据发送完毕
 AJMP LOOP                  ;重复执行程序

;发送代码1
SENDON:
 CLR TI
 MOV SBUF,#'1'
 JNB TI,$
 AJMP LOOP

        END

[此贴子已经被admin于2009-10-31 14:33:10编辑过]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表