微机原理远程数据采集系统设计
2018-03-04 19:50
232 查看
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
相关文章推荐
- 电能量远程数据采集系统的设计与实现
- 工业数据采集器,介绍嵌入式WinCE在远程数据采集系统设计
- ZigBee无线传感器网络远程数据采集系统设计
- 基于ARM9的嵌入式的远程监控系统设计
- 架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)
- 一种基于无线传感网的远程自动抄表系统设计
- spring boot / cloud (十四) 微服务间远程服务调用的认证和鉴权的思考和设计,以及restFul风格的url匹配拦截方法
- 架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)
- 远程接口设计经验分享
- Gdb远程调试环境的设计与实现
- Android SDK开发指南(翻译)系列三:Tools(一)--使用AIDL, 设计一个远程接口
- [笔记].关于AS/AP的RSU(远程系统升级)的设计方案
- 使用AIDL设计远程接口(Designing a Remote Interface Using AIDL)
- ZigBee路灯远程控制系统设计
- 设计模式之代理模式(Proxy Pattern)_远程代理解析
- 基于IAP和Keil MDK的远程升级设计
- 通过SPI方式实现LPC17xx的远程升级设计
- 远程控制之登录界面设计
- 架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)
- MC55开发之GPRS远程登陆程序的具体设计(独家整理!保证是你见过的MC55开发最全的笔记~~)