微机原理与接口技术课程设计---数字式温度计

该博客详细介绍了使用微机原理和接口技术进行数字式温度计的设计过程,包括PCI接口的初始化、8255的配置以及DS18B20温度传感器的读取和显示。通过调用一系列子程序实现温度的读取和转换,最终在8255上显示温度值。
摘要由CSDN通过智能技术生成

 

.MODEL   TINY

PCIBAR3      EQU 1CH ;8I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RAM板卡上的

8237提供基地址)

Vendor_ID EQU 10EBH  ;厂商ID

Device_ID EQU 8376   ;设备ID

 

  .STACK     300

  .DATA

IO_Bit8_BaseAddress DW ?

msg0     DB  'BIOS不支持访问PCI      $'

msg1     DB  '找不到Star PCI9052板卡 $'

msg2     DB  '8I/O空间基地址时出错$'

 

Con_8255 DW  00F3H

PB_8255      DW  00F1H

PC_8255      DW  00F2H

PA_8255      DW  00F0H

buffer       DB  8 DUP(0)      ;温度临时存放区

 

  .CODE     

START:  

         MOV AX,@DATA

      MOV DS,AX

      MOV ES,AX

      NOP

      CALL   InitPCI

      CALL   ModifyAddress    ;根据PCI提供的基地址,将偏移地址转化为实地址

      CALL   Init8255      ;初始化8255

MAIN:      

      CALL   START_Temperature ;DS18B20发送读温度指令

      JB  MAIN

      CALL   RD_Temperature       ;读出温度值

      call   displayNumber        ;调用显示子程序         

      JMP MAIN

 

;DS18B20复位初始化子程序

INIT_18B20   PROC   NEAR

      CALL   W_L        ;调用0->PC0子程序

      CALL   Delay501us ;主机发出501us复位低脉冲

      MOV DX,Con_8255     ;8255控制口地址->DX

      MOV AX,89H     ;设置控制字10001001

      OUT DX,AL      ;PC输入状态

      DEC DX              ;DX-1

     MOV   CX,15      ;15->CX

INIT_18B20_1:  

         IN  AL,DX      ;[DX]->AL

      TEST   AL,01H     ; AL.0=1?

      JZ  INIT_18B20_2

      LOOP   INIT_18B20_1

      STC        ;置位标志位,表示DS18B20存在

      RET

INIT_18B20_2:  

      CALL   Delay501us

      CLC        ;复位标志位,表示DS18B20不存在

      RET

INIT_18B20   ENDP

 

Delay501us   PROC   NEAR

      PUSH   AX

      PUSH   CX

      PUSH   DX

      MOV CX,136

      MOV DX,PA_8255

Delay501us_1:  

      IN  AL,DX

      LOOP   Delay501us_1

      POP DX

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值