微机原理远程数据采集系统设计

简介: Created with Raphaël 2.1.2开始初始化设置周期?修改延时周期数据采集延时发送yesno下位机 S_SHOW MACRO STRING MOV AH,9 MOV DX,OFFSE...
+关注继续查看
Created with Raphaël 2.1.2开始初始化设置周期?修改延时周期数据采集延时发送yesno

下位机

   S_SHOW MACRO STRING
   MOV AH,9
   MOV DX,OFFSET STRING
   INT 21H
ENDM

DATAS SEGMENT
  RESULT DB 40H
  num_h db 0
  num_l db 0
  msg db 'plaese set time_cycle:','$'
  ;msg db 'plaese set time_cycle:',0AH,0DH,'$'
  str1  db 'Please input! Enter q key exit!',0ah,0dh,'$'
  errm db 'Error!',0ah,0dh,'$'
  s1     db 0
  ;延时周期 
  time_cycle DB 3
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX

    ;;;;;;;;;;;;;8255初始化
    call init_8255

    ;;;;8253初始化
    call init_8253

    ;设置延时周期
    call SetTimeCycle

    ;;;发送初始化
    call init_send

    againshow:
      ;调用数据采集
      caLl SHUJUCAIJI

      ;显示数据
    ;  call show 

      ;发送数据
      call send

      ;判断键盘是否有输入
      MOV AH,0BH
      INT 21H
      CMP AL,0
      JE againshow

    MOV AH,1      
    INT 21H
    JMP START

;显示数据
show proc
    MOV AL, RESULT
    MOV BL,50

    MUL BL
    MOV AL,AH
    MOV AH,0
    MOV BL,10
    DIV BL
    ;ASCLL码加30
    ADD AL,30H
    MOV num_h,AL

    ADD AH,30H
    MOV num_L,AH


    MOV AH,02H
    MOV DL,num_h
    INT 21H


    MOV AH,02H
    MOV DL,'.'
    INT 21H

    MOV AH,02H
    MOV DL,num_L
    INT 21H

    MOV AH,02H
    MOV DL,'V'
    INT 21H
ret
show endp   

;功能:回车换行
huiche proc
  MOV AH,02H
  MOV DL,0AH
  INT 21H

  MOV AH,02H
  MOV DL,0DH
  INT 21H
RET
huiche endp


;功能:设置延时周期
SetTimeCycle proc

  S_SHOW msg
  ;循环判断是否有输入
  again: MOV AH,0BH
    INT 21H
    CMP AL,0
    JE again
  ;因是字符串
  ;获取的ASCLL码值减30 得到延时周期
  MOV AH,1
  INT 21H
  sub AL, 30H
  MOV time_cycle, AL

  MOV AH,02H
  MOV DL,0AH
  INT 21H

  MOV AH,02H
  MOV DL,0DH
  INT 21H


RET
SetTimeCycle endp

;功能:数据采集
;出口:返回RESULT 数据采集的值
SHUJUCAIJI proc
   MOV DX, 0E098H;通道0 对应298

   OUT DX,AL ;启动
   CALL delay 
   MOV DX,0E098H;
   IN AL,DX;读取电压 al
   MOV RESULT,AL 
RET
SHUJUCAIJI ENDP


;延时子程序
delay proc

   MOV DX,0E08BH
   MOV AL,01110000B
   OUT DX,AL

   MOV DX,0E089H
   ;计算相乘
   MOV AL,time_cycle
   MOV BL,100
   MUL BL   

   ;先传低后传高
   OUT DX,AL
   MOV AL,AH 
   OUT DX,AL

   ;取出C端口     
    MOV DX,0E082H
   ;看最高位是否是高电平
   ISNO:IN AL,DX
   TEST AL,1
   JZ ISNO

RET  
delay endp;


;功能:发送数据
send proc
    mov al,RESULT
    ;发送
    mov ah,1
  mov dx,0

    int 14h
send endp

init_8253 proc
;;;;8253初始化
    ;给送控制字, 使其工作在方式三
    MOV DX,0E08BH    
    MOV AL,00110110B     
    OUT DX,AL
    ;送通道0的计数初值
    MOV DX, 0E088H    
    MOV AX,10000
    ;送低送高
    OUT DX,AL
    MOV AL,AH
    OUT DX,AL

RET  
init_8253 endp


init_8255 proc
    MOV DX,0E083H
    MOV AL,10000001B
    OUT DX, AL
RET  
init_8255 endp

init_send proc
mov ah,0
    mov dx,0
    mov al,10111011b
    int 14h
RET  
init_send endp


CODES ENDS
    END START

上位机

DATAS SEGMENT
    ;此处输入数据段代码  
    str1 db 'Please input! Enter q key exit!',0ah,0dh,'$'
    ;str2 db 'V=:',0ah,0dh,'$'
    errm db 'Error!',0ah,0dh,'$'
    num_L db 0
    num_H db 0
    RESULT DB 40H
    data db 0
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov ah,9
    mov dx,offset str1
    int 21h

    mov ah,0
    mov dx,0
    mov al,10111011b
    int 14h;调用中断

send:
    mov ah,3;读入串行口状态
    mov dx,0
    int 14h
    test ah,00100000b;判断输入缓冲器是否为空
    jz receive;空跳转到接收

    mov ah,0bh;检查标准输入状态
    int 21h
    cmp al,0
    je receive              ;未准备好输入就跳到接收

    mov ah,8
    int 21h                 ;无回显的控制台输入

    mov data,al

    cmp data,'q'
    je exit

receive:
    mov ah,3
    mov dx,0
    int 14h
    test ah,1;判断输入缓冲器是否为满
    jz send;不满跳到发送

    mov ah,2;读入缓冲器的数据
    mov dx,0                ;收字符
    int 14h
    test ah,10001110b
    jnz error



    mov RESULT,al
    call show   

    cmp al,'q'
    je exit

    mov dl,al
    mov ah,2
    int 21h;显示

    jmp send
exit: 
    mov dx,0
    mov ah,1                ;输出字符
    int 14h

    test ah,80h
    jnz error

    mov ax,4c00h
    int 21h

error: mov ah,9
    mov dx,offset  errm
    int 21h
    mov ax,4c00h
    int 21h

show proc
    MOV AL, RESULT
    MOV BL,50

    MUL BL
    MOV AL,AH
    MOV AH,0
    MOV BL,10
    DIV BL
    ;ASCLL码加30
    ADD AL,30H
    MOV num_h,AL

    ADD AH,30H
    MOV num_L,AH


    MOV AH,02H
    MOV DL,num_h
    INT 21H


    MOV AH,02H
    MOV DL,'.'
    INT 21H

    MOV AH,02H
    MOV DL,num_L
    INT 21H

    MOV AH,02H
    MOV DL,'V'
    INT 21H
    call huiche
ret
show endp

;功能:回车换行
huiche proc
  MOV AH,02H
  MOV DL,0AH
  INT 21H

  MOV AH,02H
  MOV DL,0DH
  INT 21H
RET
huiche endp


CODES ENDS
    END START
目录
相关文章
|
18天前
|
芯片 异构计算
电路设计涉及的领域
1.模拟电路设计 2.数字电路设计 3.集成电路设计 4.系统级集成电路设计 5.PCB电路板设计 6.数字信号处理电路设计
16 1
|
1月前
|
数据可视化 算法 C语言
PLC工业软件控制系统设计
PLC工业软件控制系统设计
|
1月前
|
编解码 监控 安全
SCADA人机界面组态软件设计
SCADA人机界面组态软件设计
|
1月前
|
传感器 监控 测试技术
单片机开发|基于51单片机的全自动黑板檫粉尘清除装置设计与实现
教师常年在课堂上上课,粉笔的灰尘会对学生的健康造成很大的危害,很多教师都会患上肺部疾病。教师在课堂教学中,如何有效地消除粉尘对教师的身体造成的不良影响,是一个亟待解决的问题。本文以51单片机为核心,实现并设计一种全自动黑板檫粉尘清除装置。由黑板擦上的压力传感器进行检测,由51单片机来控制吸尘器(吸尘风机),以完成清理。本系统的主要功能包括:压力检测、按键控制、灯光显示、电扇除尘等。本文在对国内外有关文献进行整理和归纳的基础上,首先介绍了全自动黑板檫粉尘清除装置的研制背景和研究意义,并结合国内外的研究情况,提出了本文的主要研究内容和系统的设计思路。接着,对系统的硬件电路进行了详细的设计,并编写了
|
3月前
【单片机课程设计】汽车盲区检测系统
【单片机课程设计】汽车盲区检测系统
27 0
|
6月前
|
存储 编解码 算法
基于51单片机AT89C51的小型音乐喷泉控制系统设计
基于51单片机AT89C51的小型音乐喷泉控制系统设计
66 0
|
9月前
【微机原理资料分享】基于8086简易洗衣机控制仿真设计
描述:带烘干机的自动洗衣机。 洗衣机可以处理三种不同类型的负载:轻型、中型和重型。 洗衣机有三个不同的循环:漂洗、洗涤和烘干。
97 0
 【微机原理资料分享】基于8086简易洗衣机控制仿真设计
|
10月前
|
安全 数据安全/隐私保护
【微机原理资料分享】基于8086家具门安全控制系统设计(仿真、程序、报告)
安全人员使用主密码更新当天的密码。按M按钮激活此模式。系统闪烁输入密码LED,要求人员输入密码。主密码是16位数的值。只给管理员一次输入密码的机会。如果经过验证,重试/更新LED发光。如果身份验证失败,则发出警报。当重试/更新LED发光时,用户必须输入当天的密码。这是12位数的值。一旦这个值已被系统接受,密码更新的LED发光。 ●用户进入房间时必须按O键,输入密码LED提示用户输入密码。用户也可以使用C/AC选项。如果第一次尝试失败,RETRY LED发光。允许用户重新输入密码,在身份验证门打开一段时间后1分钟。失败时发出警报。 ●要关闭警报,必须按下A按钮。输入密码LED发光提示用户输入
69 0
【微机原理资料分享】基于8086家具门安全控制系统设计(仿真、程序、报告)
|
10月前
|
传感器 芯片
【微机原理资料分享】基于8086多路温度采集系统设计(仿真、程序、报告)
以8088 CPU 为核心设计一个温度采集系统,系统可以实现一路温度的采集,在3位LED显示器上显示当前温度。 本设计所用器件主要有传感器,A/D转换器,8088CPU,可编程并行接口8255,显示器等。首先传感器把所测的温度转换为电压,输入A/D转换器中进行转换,然后再把得到的二进制数经过CPU在数码管上显示出来。 本设计共分以下几个模块:8088主控模块、A/D转换模块、并行接口模块、显示模块。
218 0
【微机原理资料分享】基于8086多路温度采集系统设计(仿真、程序、报告)
推荐文章
更多