设计一个8088/8086的微机系统,用于监控报警,具备如下功能: 存储系统要求:32KB的RAM(6264),16KB的EEPROM(9864); 系统使用1片8259、1片8253和1片8255实现主要功能; 1台设备监控8个点,设备启动信号为3个时钟周期的脉冲信号,某个点为异常时,输出电平为高,1个异常报警灯; 系统对监控设备1秒钟检查一次; 如果检查到8点中任意一个异常(一次只有1个点异常),完成以下操作: (1)将异常信号点以ASCII形式存储在RAM和ROM中,如第2个点异常,记为32H; (2)报警灯闪烁,1秒灭,1秒亮; 警报解除按键1个,按下后,解除报警灯闪烁。 给出相应代码

时间: 2024-03-31 15:36:21 浏览: 11
由于您没有指定开发环境和编程语言,我将为您提供一个基于C语言和x86汇编语言的代码示例,以供参考。 C语言代码: ```c #include <stdio.h> #include <dos.h> #define RAM_SIZE 32768 #define EEPROM_SIZE 16384 #define MONITOR_POINTS 8 unsigned char ram[RAM_SIZE]; unsigned char eeprom[EEPROM_SIZE]; void init_system() { // 初始化RAM和EEPROM memset(ram, 0, RAM_SIZE); memset(eeprom, 0, EEPROM_SIZE); // 设置中断向量和中断服务程序 setvect(0x08, isr_8259); setvect(0x1C, isr_8253); // 初始化定时器,1秒钟检查一次 outp(0x43, 0x36); // 设置8253工作方式 outp(0x40, 0x00); // 设置8253计数初值 outp(0x40, 0x00); } void isr_8259() { // 中断服务程序处理设备监控 unsigned char status = inp(0x21); if (status & 0x01) { // 8259 IRQ0 // 检查8个监控点是否异常,如果有异常,则进行报警处理 for (int i = 0; i < MONITOR_POINTS; i++) { if (inp(0x300 + i) & 0x80) { // 监控点异常 // 将异常信号点以ASCII形式存储在RAM和EEPROM中 ram[0] = i + '0'; eeprom[0] = i + '0'; // 报警灯闪烁,1秒灭,1秒亮 for (int j = 0; j < 2; j++) { outp(0x301, 0x01); // 报警灯亮 delay(500); outp(0x301, 0x00); // 报警灯灭 delay(500); } } } // 清除8259 IRQ0中断标志 outp(0x20, 0x20); } } void isr_8253() { // 定时器中断服务程序,1秒钟检查一次 } void main() { // 初始化系统 init_system(); // 设计一个警报解除按键,按下后,解除报警灯闪烁 while (1) { if (inp(0x302) & 0x01) { // 检测到按键按下 outp(0x301, 0x00); // 报警灯灭 break; } } } ``` x86汇编语言代码: ```asm .MODEL SMALL .STACK 64 .DATA RAM_SIZE EQU 32768 EEPROM_SIZE EQU 16384 MONITOR_POINTS EQU 8 ram DB RAM_SIZE DUP(0) eeprom DB EEPROM_SIZE DUP(0) .CODE init_system PROC NEAR ; 初始化RAM和EEPROM MOV AX, SEG ram MOV DS, AX MOV AX, SEG eeprom MOV ES, AX XOR DI, DI MOV CX, RAM_SIZE MOV AL, 0 REP STOSB MOV CX, EEPROM_SIZE REP STOSB ; 设置中断向量和中断服务程序 MOV AX, OFFSET isr_8259 MOV [0000H], AX MOV AX, SEG isr_8259 MOV [0002H], AX MOV AX, OFFSET isr_8253 MOV [001C0H], AX MOV AX, SEG isr_8253 MOV [001C2H], AX ; 初始化定时器,1秒钟检查一次 MOV DX, 043H MOV AL, 036H OUT DX, AL MOV AX, 0000H OUT 040H, AL OUT 040H, AH RET init_system ENDP isr_8259 PROC NEAR ; 中断服务程序处理设备监控 MOV AL, 021H IN AL, DX AND AL, 001H ; IRQ0 JE .end_isr_8259 ; 检查8个监控点是否异常,如果有异常,则进行报警处理 XOR SI, SI MOV CX, MONITOR_POINTS .is_monitor_point: IN AL, 300H AND AL, 080H JZ .not_exception ; 将异常信号点以ASCII形式存储在RAM和EEPROM中 ADD AL, '0' MOV [ram], AL MOV [eeprom], AL ; 报警灯闪烁,1秒灭,1秒亮 MOV DX, 301H XOR BX, BX MOV DX, 301H MOV AL, 01H .flash: OUT DX, AL CALL delay XOR AL, 01H OUT DX, AL CALL delay INC BX CMP BX, 02H JL .flash .not_exception: INC SI LOOP .is_monitor_point ; 清除8259 IRQ0中断标志 MOV AL, 020H OUT 020H, AL .end_isr_8259: IRET isr_8259 ENDP isr_8253 PROC NEAR ; 定时器中断服务程序,1秒钟检查一次 .end_isr_8253: MOV AL, 020H OUT 020H, AL IRET isr_8253 ENDP main PROC NEAR ; 初始化系统 CALL init_system ; 设计一个警报解除按键,按下后,解除报警灯闪烁 .loop: IN AL, 302H AND AL, 001H JZ .loop MOV DX, 301H MOV AL, 00H OUT DX, AL RET main ENDP delay PROC NEAR ; 等待一段时间,用于控制LED灯闪烁的时间 MOV CX, 0FFFFH .delay_loop: LOOP .delay_loop RET delay ENDP END ``` 需要注意的是,以上代码仅供参考,可能存在错误和不足之处,具体实现还需要根据具体的开发环境和硬件平台进行调整和优化。

相关推荐

最新推荐

recommend-type

一套非常全面的视频监控系统施工方案

主要包括:结合高清监控系统设计方案作配套的深化设计,编制高清监控系统实施计划,并提出相关的配合要求。根据总体方案,对高清监控系统工程的技术设计作必要的补充。并提出相关的实施技术要求。 《城市道路设计...
recommend-type

微机原理及应用课程设计,设计交通灯控制系统

(1)编程使灯按交通灯变化规律亮灭,要求进行周期性重复控制,规则如下: (a)南北路口的绿灯、东西路口的红灯同时亮20秒; (b)南北路口的黄灯闪烁3秒,同时东西路口的红灯闪3秒; (c)南北路口的红灯、东西路口的...
recommend-type

嵌入式系统/ARM技术中的单总线数字温度传感器原理及应用

多点温度测控 中图分类号:TP212 文献标识码:B 文章编号:1 前言 随着科学技术的发展,特别是现代仪器的发展,微型化、集成化、数字化正成为传感器发展的一个重要方向[1]。美国Dallas半导体公司推出的数字化温度...
recommend-type

RS485总线通信系统的设计与实现 毕业论文.doc

设计并实现了一种适用于微机和单片机之间串行通信的通信协议,采用RS485简便,通信可靠性高总线标准,可用于工业测控和控制现场。实验结果表明,该通信协议是切实可行的,达到了预期的设计要求。
recommend-type

检测与报警系统微机原理课程设计

设计并开发能检测模拟信号,并能产生报警信号的系统。其具体要求是:能对输入的0—5V的模拟电压信号进行检测。能判断所检测的信号是否越界。若信号越界则进行声(PC机扬声器)、光(发光二极管)报警。说明:其界...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。