找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5776|回复: 3
打印 上一主题 下一主题
收起左侧

[讨论]传感器数据采集系统

[复制链接]
跳转到指定楼层
楼主
ID:10248 发表于 2009-10-30 19:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

 

;======================
; 设置波特率
;======================
 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:32:33编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:18672 发表于 2009-10-31 07:20 | 只看该作者

看看啥好东西

 

回复

使用道具 举报

板凳
ID:18934 发表于 2009-11-8 21:06 | 只看该作者
好厉害啊,我觉得电路设计好难啊,都不知道从哪里下手
回复

使用道具 举报

地板
ID:23217 发表于 2010-4-21 09:03 | 只看该作者

为什么不用c的?找结构很麻烦。就是一个称重传感器的定时采集和通过rs232的pc通信

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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