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

简介: 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
目录
相关文章
|
6月前
|
小程序 Java 关系型数据库
weixin116大学生就业平台微信小程序+ssm(文档+源码)_kaic
本文介绍了一款大学生就业平台微信小程序的开发过程,涵盖开发环境、系统设计、实现与测试等方面。该小程序基于微信平台特性,采用MYSQL数据库存储数据,确保系统稳定与安全,同时满足学生、企业和管理员不同权限用户的功能需求。通过简化操作流程,实现了招聘信息查看、简历投递等实用功能,旨在为用户提供便捷高效的求职体验,符合“操作简单,功能实用”的设计理念。
|
前端开发 JavaScript API
一场前端框架的“武林大会”,三大主流框架之间的性能比较!!!
一场前端框架的“武林大会”,三大主流框架之间的性能比较!!!
|
6月前
|
缓存 Java 编译器
|
9月前
|
自然语言处理 搜索推荐 小程序
深入剖析:销售易与神州云动CRM系统的功能对比及企业适配性
在企业数字化转型中,CRM系统成为提升客户管理和优化销售流程的关键工具。本文对比分析了国内两大CRM提供商——销售易和神州云动的产品功能及适用企业类型。销售易以全渠道营销、智能化销售流程和行业解决方案见长,适合大型企业;神州云动则凭借高度定制化、系统集成能力和移动办公支持,更受中小企业欢迎。两者各具特色,为企业提供了多样化的选择。
|
机器学习/深度学习 算法 网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
【YOLOv8改进 - Backbone主干】EfficientRep:一种旨在提高硬件效率的RepVGG风格卷积神经网络架构
|
6月前
|
人工智能 自然语言处理 安全
AI战略丨大模型时代,基金投顾AI应用探索
AI战略丨大模型时代,基金投顾AI应用探索
|
9月前
|
编解码 前端开发 搜索推荐
如何建立自己的体育直播平台-源码搭建全流程
随着在线观看体育赛事用户的爆发式增长,搭建专业体育直播应用成为趋势。利用如熊猫比分的全链路解决方案,创业者可快速启动平台。主要步骤包括前期技术准备(赛事API接口、服务器配置、域名选择、短信服务、云直播服务)、定制化(LOGO标识、功能测试与优化)及正式上线与运营(推广、持续更新、主播入驻)。此方案使创业者能高效进入体育市场,抓住机遇。
|
11月前
|
机器学习/深度学习 自然语言处理 算法
超越传统搜索:探索基于GraphRAG的信息检索新范式
【10月更文挑战第10天】随着信息爆炸时代的到来,如何从海量的数据中快速准确地找到所需的信息成为了一个亟待解决的问题。传统的信息检索系统主要依赖于关键词匹配和文档排名算法来提供结果,但这种方法往往无法捕捉到数据间的复杂关系,也无法很好地理解用户的查询意图。近年来,一种新的信息检索方法——基于图的检索增强生成(Graph-based Retrieval-Augmented Generation, GraphRAG)应运而生,它通过结合知识图谱与机器学习技术,为信息检索带来了全新的视角。
277 1
|
开发者
【 uniapp - 黑马优购 | 商品列表 】如何实现数据获取、结构渲染、自定义组件的封装
【 uniapp - 黑马优购 | 商品列表 】如何实现数据获取、结构渲染、自定义组件的封装
538 0
|
11月前
|
运维 监控 安全
构建高效运维体系的策略与实践
【10月更文挑战第7天】 本文旨在探讨如何构建高效的运维体系。从明确定义目标、优化流程、引入自动化工具、建立监控机制到提升团队能力,我们将全面解析高效运维体系的构建步骤和关键要素。通过具体策略和成功案例的分享,帮助运维团队提升工作效率、减少故障发生,并持续改进运维质量。
315 0